Multi-currency integration
By default, you can only charge your buyer using the currency in which you receive your disbursements from Amazon Pay. You must enable the multi-currency feature to charge your buyer using a different supported currency.
Prerequisites:
- You must have registered your Amazon Pay account in the EU or UK.
- You must be able to determine which currency should be used to charge the buyer (presentmentCurrency).
- Amazon Pay does not provide any currency conversion functionality, you must be able to calculate the order total in the currency that the buyer will be charged in.
Integration steps
There are three steps for enabling multi-currency checkout:
- Set
presentmentCurrency
at the start of checkout - Set payment
currencyCode
- Set Create Charge, Capture, and Refund
currencyCode
1. Set presentmentCurrency at the start of checkout
Set the presentmentCurrency
parameter when you Create Checkout Session. This will prevent the buyer from selecting a payment instrument that wasn’t issued by either Visa or Mastercard. See Buyer checkout experience: Scenario #1 for more info.
Request
curl "https://pay-api.amazon.eu/:environment/:version/checkoutSessions/" \
-X POST
-H "x-amz-pay-idempotency-key: AVLo5tI10BHgEk2jEXAMPLEKEY"
-H "x-amz-pay-authorization: Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-d @request_body
Request body
{
"webCheckoutDetail": {
"checkoutReviewReturnUrl":"https://a.com/merchant-review-page"
},
"storeId":"amzn1.application-oa2-client.8b5e45312b5248b69eeaStoreId",
"paymentDetail": {
"presentmentCurrency":"EUR"
}
}
2. Set payment currencyCode
Set the chargeAmount.currencyCode
parameter when you Update Checkout Session with payment details. This parameter determines the currency that will be used to charge the customer. It will also automatically update the presentmentCurrency
parameter you passed while calling Create Checkout Session and prevent the buyer from completing checkout with an unsupported payment instrument. See Buyer checkout experience: Scenario #2 for more info. Do not attempt to update the presentmentCurrency
parameter directly as doing so will result in an error.
Request
curl "https://pay-api.amazon.eu/:environment/:version/checkoutSessions/:checkoutSessionId" \
-X PATCH
-H "x-amz-pay-authorization: Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-d @request_body
Request body
{
"webCheckoutDetail": {
"checkoutResultReturnUrl":"https://a.com/merchant-confirm-page"
},
"paymentDetail": {
"paymentIntent":"Authorize",
"canHandlePendingAuthorization":false,
"chargeAmount": {
"amount":"1",
"currencyCode":"EUR"
}
},
"merchantMetadata": {
"merchantReferenceId":"Merchant reference ID",
"merchantStoreName":"Merchant store name",
"noteToBuyer":"Note to buyer",
"customInformation":"Custom information"
},
"platformId":"SPId"
}
3. Set Create Charge, Capture, and Refund currencyCode
Set the respective currencyCode
parameter when you Create Charge, Capture payments, and issue Refunds to match the chargeAmount.currencyCode
value set during checkout. You cannot Capture or Refund in a different currency.
Common integration errors
The following errors return a HTTP 400 (Bad Request) status code and indicate that there’s an integration error.
Setting presentmentCurrency to an unsupported value
Review the supported currencies table. You will get the following error if you Create Checkout Session with an unsupported presentmentCurrency
, or if you Update Checkout Session with an unsupported chargeAmount.currencyCode
:
{
"reasonCode": "InvalidParameterValue",
"message": "The value 'RMB' provided for 'presentmentCurrency' is invalid. It is not supported."
}
Attempting to update presentmentCurrency with Update Checkout Session
Once the Checkout Session object has been created, you must use the chargeAmount.currencyCode
parameter to update presentmentCurrency
. You will get the following error if you attempt to update the presentmentCurrency
parameter directly:
{
"reasonCode": "InvalidParameterValue",
"message": "presentmentCurrency cannot be updated in updateCheckoutSession request, please update ChargeAmount instead."
}
Capturing payment or issuing a refund with the wrong currency
You must Create Charge, Capture payments, and issue Refunds using the same chargeAmount.currencyCode
value set during checkout. You will get the following error if you attempt to Create Charge, Capture, or Refund in a different currency:
{
"reasonCode": "CurrencyMismatch",
"message": "Currency code provided in [Charge/Refund] does not match the currency set during checkout"
}
Buyer checkout experience
If a non-default checkout currency is specified as the presentmentCurrency
, the buyer will only be able to successfully checkout using a payment instrument issued by either Visa or Mastercard. Amazon Pay will handle scenarios involving unsupported payment instruments in the following ways:
- Scenario #1: You auto-detect the buyer’s currency preference based on location or give buyers the ability to choose their preferred currency before they start checkout. In this scenario, a non-default currency is set at the start of checkout before the buyer has selected a payment instrument. The buyer will only be able to select either a Visa or Mastercard from their Amazon wallet.
- Scenario #2: You offer the buyer the ability to choose their preferred currency right before they complete their order. In this scenario, a non-default currency is set only after the buyer has already selected an unsupported payment instrument. Amazon Pay will prompt the buyer to select either a Visa or Master from their Amazon wallet before they can complete checkout.
- Scenario #3: If a non-default currency is set and the buyer doesn’t have a Visa or Master in their Amazon wallet, they will be given the option to add one on an Amazon Pay hosted page.
Supported currencies
The following is a table of supported currencies and their corresponding currency codes.
Currency
|
Currency Code
|
Australian Dollar
|
AUD
|
British Pound
|
GBP
|
Danish Krone
|
DKK
|
Euro
|
EUR
|
Hong Kong Dollar
|
HKD
|
Japanese Yen
|
JPY
|
New Zealand Dollar
|
NZD
|
Norwegian Krone
|
NOK
|
South African Rand
|
ZAR
|
Swedish Krone
|
SEK
|
Swiss Franc
|
CHF
|
United States Dollar
|
USD
|