Because your platform processes payments through Adyen, you can enable your users to accept payments in many different currencies.
If the currency in which the customer pays (the processing currency) does not match the currency in which your user wants to be paid (the settlement currency), you can exchange the processing currency for the settlement currency. That way, you can debit the customer in one currency and credit your user in another.
Before you begin
Before you can convert the currency of a payment or refund. you must:
-
Contact our Support Team to enable currency conversion for payments for your platform.
-
Make sure you have at least one of the following user roles:
- Merchant report
- Merchant financial
- Merchant admin
-
Configure an additional column for the settlement exchange rate in the Exchange Rate Report:
- Log in to your Customer Area, and go to Settings > Report columns.
- Find the Exchange Rate Report and select Configure.
- Add the column Exchange rate (platform Settlement), then select Save configuration.
Convert the currency of a payment
If the cost of the goods in the settlement currency (the currency your user receives) is fixed, and you want to calculate the amount the shopper must pay in the processing currency, follow the steps below.
Step 1: Calculate the cost of the goods in the processing currency
When converting the currency of a payment, Adyen charges the prevailing exchange rate in addition to a conversion markup. To calculate the exact amount the customer must pay in their currency of choice (the processing currency):
-
Get the exchange rates for the day from the Exchange Rate Report. To do this:
- Log in to your Customer Area, and go to Reports > Exchange rate.
- Select Manage report to generate the Exchange Rate Report for the day, or to enable automatic generation. Once generated, download the report.
- In the report, under the column Exchange rate (platform Settlement), find the rate to convert the settlement currency to the processing currency.
The rates found in this report already include the conversion markup, which does not need to be added separately.
-
Use the following formula to calculate the cost of the goods in the processing currency, which is the amount the customer must pay:
- The cost of goods in the processing currency =
The cost of goods in the settlement currency × The exchange rate to convert the settlement currency to the processing currency
Example calculation
For example, your user sells goods worth CZK 1000.00 to a customer who pays in PLN. Here, the processing currency is PLN and the settlement currency is CZK.
Because the customer pays in PLN, you must first calculate the cost of the goods in PLN (the processing currency). You can do this using the cost of the goods in CZK (the settlement currency) and the prevailing exchange rate found in the Exchange Rate Report.
In this example, the cost of the goods in the settlement currency is CZK 1000.00. According to the Exchange Rate Report, these are exchange rates for the day:
Base Currency Target Currency Exchange rate (platform Settlement) CZK PLN 0.20174 PLN CZK 5.07655 Based on this table:
- The exchange rate to convert CZK to PLN is 0.20174
- The exchange rate to convert PLN to CZK is 5.07655
Because these exchange rates include a conversion markup, they cannot be used interchangeably. For example:
(PLN to CZK exchange rate) ≠ 1 ÷ (CZK to PLN exchange rate)
For your user to receive exactly exactly CZK 1000.00, use the following formula to calculate the amount the customer needs to pay in PLN so that your user receives exactly CZK 1000.00:
(Cost of goods in CZK) × (Exchange rate to convert CZK to PLN) = (Cost of goods in PLN)
In our example:
CZK 1000.00 × 0.20174 = PLN 201.74The customer must pay PLN 201.74 in order for your user to receive CZK 1000.00.
- The cost of goods in the processing currency =
Step 2: Send a payment request with the calculated amount
After you calculate the cost of the goods in the processing currency, send a POST /payments or POST /sessions request. In the request, include the amount you calculated in step 1 and the data to split the payment. You can also provide split data at the time of capture.
We recommend that you always provide split data at the time of payment, rather than at capture. This is because:
- For payment methods that do not support delayed captures, the funds may not be booked correctly unless split data is provided in the payment request.
- When converting the currency at the time of capture, the exchange rates could vary from the rates at the time of payment. Therefore, the amount you calculated in step 1 and used in the payment authorisation may no longer match the cost of the goods in the settlement currency. To avoid this mismatch, you can adjust the authorised amount of a payment.
Provide the currency and amount for the payment and each split item using the following fields:
Parameter | Description | Example |
---|---|---|
amount.value | The cost of the goods in the processing currency, calculated in step 1. | amount.value: 20174 |
amount.currency | The currency in which the customer pays. | amount.currency: "PLN" |
splits.amount.value | The cost of the goods in the settlement currency. In case of multiple splits, the sum of the split amounts in the splits array must equal the cost of the goods in the settlement currency. Any mismatch is booked to the balance account you specify in the split item with type Remainder . | splits.amount.value: 100000 |
splits.amount.currency | The settlement currency. This is the currency in which your user receives the funds. |
splits.amount.currency: "CZK" |
splits.type | The type of the split item. We recommend to always add a split item for the Remainder and the transaction fees. | split.type: BalanceAccount split.type: PaymentFee split.type: Remainder |
The splits are guaranteed, and the payment is booked according to the data you provide in the splits array. Any mismatch or miscalculation is booked to the balance account you specify in the split item with type Remainder . You can reconcile these mismatches per transaction using the Balance Platform Accounting Report.
In the splits array of your request, include two additional split items with the following split types:
- PaymentFee: Use this split item to choose the balance account to which all transaction fees must be booked. It is important to include at least one split item for transaction fees when performing foreign exchange on a payment. That way, you can distinguish these fees from the foreign exchange fees in the Balance Platform Accounting Report.
- Remainder: Use this split item to specify the balance account to which a mismatch in the converted amount(s) should be booked. If you do not provide this split item, the mismatched amount is booked to your liable balance account.
We recommend that you always provide the Remainder split item in your requests, because it can help you reconcile the remainder per transaction using the Balance Platform Accounting Report.
Convert the currency of a refund
When refunding a payment with a currency conversion, you can exchange currencies once again. This way, the customer receives the refund in the currency with which they originally paid (the processing currency).
In the example paymentabove, the customer paid PLN 201.74, and your user received CZK 1000.00. Here, you debited the customer in PLN, and credited your user in CZK. To refund this payment, you must debit your user in CZK, and credit the customer in PLN. When converting the currency of this refund, Adyen charges the prevailing exchange rate in addition to a conversion markup.
Due to this markup and the constantly fluctuating exchange rates, the refund amount in CZK, when re-converted to PLN, may no longer match the amount the customer originally paid in PLN. For example, at the time of refund, CZK 1000.00 may no longer be equal to PLN 201.74. This mismatch results in a leftover amount after the conversion, called the remainder. When a refund occurs on the same day as the payment, the remainder is usually negative.
Refund the payment
In your refund request, you can define how you want book the remainder amount by adding a split item with type
Remainder. You can book this amount either to the customer, your user, or your own platform. If you do not specify how to handle the remainder in your request, it is booked to your liable balance account.
We recommend that you always provide the Remainder split item in your requests, because it can help you reconcile the remainder per transaction using the Balance Platform Accounting Report.
When you book the remainder amount to the customer, your user is debited the exact amount they originally received in the settlement currency. The customer is credited a different amount in the processing currency than what they originally paid.
In our original payment example, the customer paid PLN 201.74 and your user received CZK 1000.00. This means that, in the refund, your user will be deducted CZK 1000.00. You must calculate the amount the customer will receive in PLN (the processing currency) as the refund.
Step 1: Calculate the refund amount in the processing currency
-
Get the exchange rates for the day from the Exchange Rate Report. To do this:
- Log into your Customer Area, and go to Reports > Exchange rate.
- Select Manage report to generate the Exchange Rate Report for the day, or to enable automatic generation. Once generated, download the report.
- In the report, under the column Exchange Rate, find the rate to convert the processing currency to the settlement currency.
The rates found in this report already include the conversion markup, which does not need to be added separately.
-
Use the following formula to calculate the amount in the processing currency that the customer receives in the refund:
- Amount to be refunded to the customer in the processing currency =
Amount to be refunded in settlement currency × The exchange rate to convert the settlement currency to the processing currency
Example calculation
In the example payment above, your user received CZK 1000.00, and the customer paid PLN 201.74. The processing currency is PLN and the settlement currency is CZK. Because you are booking the remainder to the customer, the refund amount in the settlement currency is CZK 1000.00: the amount your user originally received.
Because the customer needs to be refunded in PLN, you must first calculate the refund amount in PLN (the processing currency). You can do this using the refund amount in CZK (the settlement currency) and the prevailing exchange rate found in the Exchange Rate Report.
According to the Exchange Rate Report, these are the exchange rates at the time of the refund:
Base currency Target currency Exchange rate CZK PLN 0.20014 PLN CZK 5.11703 Based on this table:
- The exchange rate to convert CZK to PLN is 0.20014
- The exchange rate to convert PLN to CZK is 5.11703
Because these exchange rates include a conversion markup, they cannot be used interchangeably. For example:
(PLN to CZK exchange rate) ≠ 1 ÷ (CZK to PLN exchange rate)
We can calculate the amount to be refunded to the customer in PLN using the following formula:
(Amount to be refunded in CZK) × (The exchange rate to convert CZK to PLN) = (Amount to be refunded to the customer in PLN)
In our example:
CZK 1000.00 ÷ 5.11703 = PLN 195.43The customer receives PLN 200.14 in the refund, which is PLN 1.60 less than the amount they originally paid. This mismatched amount of PLN 1.60 is the remainder.
- Amount to be refunded to the customer in the processing currency =
Step 2: Send a refund request
To book the remainder to the customer, send a POST /payments/paymentPspReference/refunds request. In the amount and splits.amount objects of your request, include the following values:
Parameter | Description | Example |
---|---|---|
amount.value | The amount to be refunded to the customer in the processing currency, calculated in step 1. | amount.value: 19543 |
amount.currency | The original processing currency. | amount.currency: "PLN" |
splits.amount.value | The original cost of the goods in the settlement currency. In case of multiple splits, the sum of the split amounts in the splits array must equal the original cost of the goods in the settlement currency. Any mismatch is booked to the balance account you specify in the split item with type Remainder. | splits.amount.value: 100000 |
splits.amount.currency | The original settlement currency. | splits.amount.currency: "CZK" |
splits.type | The type of the split item. We recommend to always add a split item for the type Remainder. | split.type: BalanceAccount split.type: Remainder |
The splits are guaranteed, and the refund is booked according to the data you provide in the splits array. Any mismatch or miscalculation is booked to the balance account you specify in the split item with type Remainder. You can reconcile these mismatches per transaction using the Balance Platform Accounting Report.