Refunds for Transactions with FX Conversion
Refunds for Transactions with FX Conversion
For accounts that support FX conversion, when the original transaction was processed in a different currency than the order currency (the currency specified in the original transaction request), the following rules apply:
- The
amountin the refund API is always interpreted as being in the original transaction order currency. - If FX conversion was applied on the original transaction, the refund will reuse the same FX rate as the original transaction.
- The FX rate is taken from the original transaction, not from the rate on the day the refund is requested.
- The refund cannot change the currency. You control only the amount in order currency; the FX conversion back to the customer currency is handled automatically using the original rate.
Example 1: Full Refund with FX Conversion
- Original transaction request:
- Order currency:
EUR amount:100.00
- Order currency:
- Customer card currency:
USD - Original FX rate used at authorization:
1 EUR = 1.0850 USD - Customer was charged:
108.50 USD
Refund request:
{
"requestId": "refund-eur-001",
"mid": "exm-mid",
"transactionId": "txn-eur-100",
"amount": "100.00",
"reason": "Order cancelled",
"callbackUrl": "https://example.com/refund-callback"
}Behavior:
- The platform interprets
amount: "100.00"as 100.00 EUR. - The card refund will be processed in USD using the same FX rate
1.0850. - Customer refund on card:
108.50 USD.
Even if current market rate is different on refund day, the refund still uses 1.0850.
Example 2: Partial Refund with FX Conversion
Using the same original transaction as above:
- Original order amount:
100.00 EUR - Customer charged:
108.50 USDat1.0850
Partial refund request:
{
"requestId": "refund-eur-001",
"mid": "exm-mid",
"transactionId": "txn-eur-100",
"amount": "40.00",
"reason": "Partial refund for returned items",
"callbackUrl": "https://example.com/refund-callback"
}
Behavior:
amount: "40.00"is treated as 40.00 EUR.- Same FX rate from the original transaction:
1.0850. - Customer refund on card:
43.40 USD.
Example 3: No FX Conversion
If the original transaction order currency is the same as the processing/card currency (for example, order in EUR, card also in EUR), the amount in the refund request is still in the order currency, and no FX logic applies:
{
"requestId": "refund-eur-001",
"mid": "exm-mid",
"transactionId": "txn-eur-native",
"amount": "50.00",
"reason": "Customer returned the product"
}- Order currency:
EUR - Card currency:
EUR - Customer refund:
50.00 EUR
No FX rate is involved in this case.
Callback (CB) Behavior for FX RefundsRefund callbacks for FX transactions use the same structure as regular refund callbacks.
The
amountreported in the callback always reflects the processed currency amount, not the order currency.Example:
- Original transaction:
20.00 EUR- FX applied at authorization: customer charged
25.00 USD- Refund requested for:
20.00 EURThe system initiates a refund of 25.00 USD, and the callback payload will contain:
{ "transactionId": "txn67890", "refundId": "ref12345", "requestId": "req12345", "mid": "merchant001", "transactionStatus": "SUCCEED", "declineCode": null, "totalAmount": 25.0, "callbackUrl": "https://yourserver.com/callback", "createdAt": "2024-01-01T12:00:00Z" }The callback will never return the order currency amount (
20.00 EUR) for FX refunds.
Updated 10 days ago
