感谢您的访问。此页面目前仅提供英语版本。我们正在开发中文版本。谢谢您的理解。

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:

  1. Set presentmentCurrency at the start of checkout
  2. Set payment currencyCode
  3. Set Create Charge, Capture, and Refund currencyCode

1. Set presentmentCurrency at the start of checkout

Set the presentmentCurrency value in the button createCheckoutSessionConfig.payload. 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.

Payload example

{
    "webCheckoutDetails": {
        "checkoutReviewReturnUrl":"https://a.com/merchant-review-page"
    },
    "storeId":"amzn1.application-oa2-client.8b5e45312b5248b69eeaStoreId",
    "paymentDetails": {
        "presentmentCurrency":"CHF"
    }
}   

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. If the currency value is different from the presentmentCurrency previously set, 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/:version/checkoutSessions/:checkoutSessionId" \
-X PATCH
-H "authorization:Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-H "x-amz-pay-date:20201012T235046Z"
-d @request_body

Request body

{
    "webCheckoutDetails": {
        "checkoutResultReturnUrl":"https://a.com/merchant-confirm-page"
    },
    "paymentDetails": {
        "paymentIntent":"Authorize",
        "canHandlePendingAuthorization":false,
        "chargeAmount": {
            "amount":"1",
            "currencyCode":"CHF"
        }
     },
    "merchantMetadata": {
        "merchantReferenceId":"Merchant reference ID",
        "merchantStoreName":"Merchant store name",
        "noteToBuyer":"Note to buyer",
        "customInformation":"Custom information"
    },
    "platformId":"SPId"
}

Sample Code

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