Skip to content

Refunds

IIMMPACT automatically refunds failed fulfillment and duplicate collections. Refunds are returned on the order and through refund webhooks.

Automatic refunds

IIMMPACT creates refunds automatically and returns them through the original payment method. There is no public refund-submission endpoint.

ReasonAmountWhen
failed_fulfillmentSum of failed units' frozen sale prices; excludes customer fees.One aggregate refund per order, after all units finish.
duplicate_collectionEntire extra collection, including its customer fee.A separately confirmed duplicate collection; never fulfills the order again.

If the RM60 item succeeds and the RM40 item fails, the order gets one RM40 refund. If every item fails, refund the full item subtotal; the fee remains unchanged. For quantity three with one failed unit, refund one unit's sale price. No refund is created when all units succeed.

Additional duplicate collections require their own refunds. Read all obligations in refunds on order detail, or receive refund events.

Refund schema

Each object appears in the order's refunds array and as refund event data.

FieldTypeDescription
refund_idstringStable identifier through processing and review.
order_idstringOrder receiving the refund.
payment_idstringOriginal collection being repaid; not a per-item allocation.
external_referencestringYour order reference.
currencystringMYR.
amountstringPositive two-place refund amount.
reasonstringfailed_fulfillment or duplicate_collection.
statusstringpending, processing, requires_review, or successful.
review_reasonstring or nullprovider_rejected or provider_outcome_unknown during review; otherwise null.
created_atstringRFC3339 obligation creation time.
updated_atstringRFC3339 time of the latest public refund change.

Refund example

json
{
  "refund_id": "ref_example",
  "order_id": "ord_example",
  "payment_id": "pay_example",
  "external_reference": "ORD-00042",
  "currency": "MYR",
  "amount": "40.00",
  "reason": "failed_fulfillment",
  "status": "pending",
  "review_reason": null,
  "created_at": "2026-09-14T10:15:20+08:00",
  "updated_at": "2026-09-14T10:15:20+08:00"
}

Refund progress

StatusMeaning
pendingRepayment obligation exists.
processingRepayment is in progress.
requires_reviewSubmission was rejected or its outcome is uncertain; IIMMPACT is reviewing it.
successfulCustomer repayment is verified.

Order completed does not mean repayment finished. Wait for refund successful; do not independently refund a payment under review. Automatic submission happens once: timeout, rejection, or a missing callback does not trigger another money-moving submission. Status checks and review retain the same refund ID.

IIMMPACT API Documentation