Manage Payments Using Saved Wallet
[Step 4 of 9] After the buyer has successfully completed setup of Saved Wallet, the Complete Checkout Session response will include a ChargePermissionId
for a Saved Wallet Charge Permission object that you can use to charge the buyer and manage cancellations.
At the end of this step, you will be able to charge the buyer and manage cancellations.
- 1. Managing charges and handling declines
- 2. Managing cancellations
- 3. Changing the Payment Method
- 4. Saved Wallet Expiration
1. Managing charges and handling declines
Call Create Charge each time you need to charge the customer. Set CaptureNow
to true to capture payment immediately, set it to false to capture later. Note that Amazon Pay limits how much you can charge the buyer for each calendar month, see monthly Saved Wallet charge limits for more info.
If Create Charge returns a 201 response, authorization was either successfully completed or successfully initiated depending on whether canHandlePendingAuthorization
was set to true. If Create Charge returns a different HTTP status code, check the request response reasonCode
to determine if you should retry Create Charge or ask your buyer to use a different payment method:
- If
reasonCode
is SoftDeclined or ProcessingFailure:- Call Get Charge Permission to confirm that the Charge Permission is in a Chargeable state
- Call Create Charge to charge the buyer
-
If
reasonCode
is HardDeclined, ask the buyer to update their payment instrument using the following link: https://payments.amazon.com/jr/your-account/ba/{ChargePermissionId}. Replace {ChargePermissionId} with the buyer's Charge Permission Id. Set up IPNs to receive a notification once the payment instrument has been updated and then:- Call Get Charge Permission to confirm that the Charge Permission is in a Chargeable state
- Call Create Charge to charge the buyer
Request
curl "https://pay-api.amazon.com/:version/charges/" \
-X POST
-H "authorization:Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-H "x-amz-pay-date:20201012T235046Z"
-H "x-amz-pay-idempotency-key:AVLo5tI10BHgEk2jEXAMPLEKEY"
-d @request_body
Request body
{
"chargePermissionId": "P21-1111111-1111111",
"chargeAmount": {
"amount": "14.00",
"currencyCode": "USD"
},
"captureNow": true, // default is false
"softDescriptor": "Descriptor",
"canHandlePendingAuthorization": false //default is false
}
Request parameters
Name
|
Location
|
Description
|
x-amz-pay-idempotency-key (required) Type: string |
Header
|
Idempotency key to safely retry requests
|
chargePermissionId (required) Type: string |
Body
|
Charge Permission identifier
|
chargeAmount (required) Type: price |
Body
|
Transaction amount
|
captureNow Type: boolean |
Body
|
Boolean that indicates whether or not Charge should be captured immediately after a successful authorization Default: false |
softDescriptor Type: string |
Body
|
Description shown on the buyer payment instrument statement. You can only use this parameter if CaptureNow is set to trueDo not store sensitive data about the buyer or the transaction in this field. Sensitive data includes, but is not limited to: government-issued identification, bank account numbers, or credit card numbers The soft descriptor sent to the payment processor is: "AMZ* <soft descriptor specified here>" Default: "AMZ*<SELLER_NAME> pay.amazon.com" Max length: 16 characters |
canHandlePendingAuthorization Type: boolean |
Body
|
Boolean that indicates whether or not merchant can handle pending response If set to false, you will receive a response within a maximum of 15 seconds in US, EU, and UK regions or 30 seconds in JP region. If set to true, Amazon Pay will process the authorization asynchronously and you will receive a response within 24 hours. See asynchronous processing for more info |
merchantMetadata Type: merchantMetadata |
Body
|
Merchant-provided order details
|
providerMetadata Type: providerMetadata |
Body
|
Payment service provider (PSP)-provided order details Only PSPs should use these fields |
Response
{
"chargeId": "S01-5105180-3221187-C056351",
"chargePermissionId": "S01-5105180-3221187",
"chargeAmount": {
"amount": "14.00",
"currencyCode": "USD"
},
"captureAmount": {
"amount": "14.00",
"currencyCode": "USD"
},
"refundedAmount": {
"amount": "0.00",
"currencyCode": "USD"
},
"convertedAmount": "14.00",
"conversionRate": "1.00",
"softDescriptor": "Descriptor",
"merchantMetadata": null,
"providerMetadata": {
"providerReferenceId": null
},
"statusDetails":{
"state": "Captured",
"reasonCode": null,
"reasonDescription": null,
"lastUpdatedTimestamp": "20190714T155300Z"
},
"creationTimestamp": "20190714T155300Z",
"expirationTimestamp": "20190715T155300Z",
"releaseEnvironment": "Sandbox"
}
2. Managing cancellations
Use Close Charge Permission to inform Amazon Pay if a buyer cancels/removes their Saved Wallet. You will no longer be able to charge a buyer unless they consent again to setup Saved Wallet.
Buyers can also close Charge Permissions by signing in to https://pay.amazon.com. Set up IPNs to receive notifications whenever a Charge Permission is closed. To minimize churn, we recommend that you proactively reach out to the subscriber for a new payment method before the next billing cycle.
3. Changing the Payment Method
Buyers can update their payment method on Saved Wallet from https://pay.amazon.com section of the Amazon Pay website. Any subsequent charges are processed using the updated payment method. The payment method associated with any previous charges are not updated. A direct link can also be provided to the buyer to allow easy updates of associated payment method using the following URL: https://payments.amazon.com/jr/your-account/ba/{ChargePermissionId}. Replace {ChargePermissionId} with the buyer's Charge Permission Id.
4. Saved Wallet Expiration
Charge Permissions with a type of paymentMethodOnFile
do not have a set expiration and will persist until closed.