Recurring

Amazon Pay supports recurring payments, and we streamline this process for you with our Payment Agreements API.

Create the Payment Agreement

To create an Amazon Pay payment agreement, provide the following information when calling our /v1/payment-agreements API:

Data FieldRequiredDescription
paymentMethodMAMAZON_PAY
consumer.nameMFull name of the consumer.
consumer.countryMThe country from which the consumer is shopping.
authenticationSettings.typeMSupply settings for the support authentication flows:REDIRECT

You can also include the initialPaymentCharge object in this agreement creation call to immediately initiate the first payment without making a separate call. If you include this object, you'll need to specify:

  • The exact amount.value and amount.currency of the first payment

If you don't include an initialPaymentCharge during agreement creation, you'll need to make a separate API call to /v1/payment-agreements/{agreement_id}/payment-charges to create the first charge.

Request

POST /v1/payment-agreements

{
  "paymentMethod": "AMAZON_PAY",
  "consumer": {
    "name": "John Smith",
    "country": "US"
  },
  "authenticationSettings": [
    {
      "type": "REDIRECT",
      "settings": {
        "returnUrl": "https://www.webshop.com/order-results-page"
      }
    }
  ]
}
{
  "paymentMethod": "AMAZON_PAY",
  "consumer": {
    "name": "John Smith",
    "country": "US"
  },
  "authenticationSettings": [
    {
      "type": "REDIRECT",
      "settings": {
        "returnUrl": "https://www.webshop.com/order-results-page"
      }
    }
  ],
  "initialPaymentCharge": {
    "amount": {
      "value": 1000,
      "currency": "USD"
    }
  }
}

Response

You'll receive our standard payment agreement response (see responses in the API Reference)

{
  "id": "agr_kldVsUfaTdcCIpT8bBIWo",
  "status": "AUTHENTICATION_PENDING",
  "paymentMethod": "AMAZON_PAY",
  "startDate": "2025-04-15T16:20:13.302Z",
  "instrumentId": "instr_gQHo8F6xz3kOegCiaimw0",
  "consumer": {
    "name": "John Smith",
    "country": "US"
  },
  "authenticationMethods": [
    {
      "details": {
        "requestUrl": "https://redirection-target.ppro.com",
        "requestMethod": "GET"
      },
      "type": "REDIRECT"
    }
  ],
  "history": [
    {
      "id": "ahist_mEs8D2aCSaoSgtex0gzWx",
      "status": "AUTHENTICATION_PENDING",
      "createdAt": "2025-04-15T16:20:13.951Z"
    }
  ],
  "createdAt": "2025-04-15T16:20:13.951Z",
  "updatedAt": "2025-04-15T16:20:13.951Z"
}
{
  "id": "agr_gFCDp991mUCjWVypLEvfZ",
  "status": "AUTHENTICATION_PENDING",
  "paymentMethod": "AMAZON_PAY",
  "instrumentId": "instr_hLOqf7bZvyo98kqT4Spio",
  "consumer": {
    "name": "John Smith",
    "country": "US"
  },
  "authenticationMethods": [
    {
      "details": {
        "requestUrl": "https://redirection-target.ppro.com",
        "requestMethod": "GET"
      },
      "type": "REDIRECT"
    }
  ],
  "history": [
    {
      "id": "ahist_8WvsAUIuUR9lYCajdkPsv",
      "status": "AUTHENTICATION_PENDING",
      "createdAt": "2025-04-10T13:31:39.222Z"
    }
  ],
  "initialPaymentChargeId": "charge_QQu5vY0HQYKIvsa7OO6Hx",
  "createdAt": "2025-04-10T13:31:39.222Z",
  "updatedAt": "2025-04-10T13:31:39.222Z"
}

Pick the desired authentication method

REDIRECT

  1. Redirect your consumer to the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestUrl.
    For example, with the value of https://redirection-target.ppro.com/ using the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestMethod HTTP method.
  2. The consumer will finalize the agreement and/or the payment process on the redirected page.

Handling the result

REDIRECT

  1. Once the consumer has confirmed the agreement and/or payment, they are redirected to the returnUrl provided in the initial payment agreement creation request.
  2. After the consumer is redirected back to your site, check the agreement and/or payment status and use the Status that you received to display the outcome to the consumer.
    GET /v1/payment-agreements/{agreement-id}
    GET /v1/payment-charges/{paymentChargeId}
  3. Webhooks are also sent to inform you of the agreement and/or payment outcome. If the shopper closes the browser and doesn't return to your website, you can rely on webhooks to receive the result.
  4. Store the Payment Agreement ID for subsequent payments.

Create a recurring payment

To initiate a subsequent recurring payment, send a request against an active agreement /v1/payment-agreements/{agreement-id}/payment-charges

Request

POST /v1/payment-agreements/{agreement-id}/payment-charges

{
  "amount": {
    "value": 1000,
    "currency": "USD"
  }
}

Response

{
    "id": "charge_WLnk5R2RKwzAinkEoAMm0",
    "paymentMethod": "AMAZON_PAY",
    "currency": "USD",
    "country": "US",
    "instrumentId": "instr_86xMmxSjrVafelQgtAXxr",
    "status": "CAPTURED",
    "consumer": {
        "name": "John Smith",
        "country": "US"
    },
    "authorizations": [
        {
            "id": "authz_nx4VgDiibOTPoYgXxQbrL",
            "amount": 1000,
            "status": "AUTHORIZED",
            "createdAt": "2025-04-10T16:28:40.150Z",
            "updatedAt": "2025-04-10T16:28:40.150Z"
        }
    ],
    "captures": [
        {
            "id": "capture_aJh1kGwLdwK8S3aFCeWFV",
            "amount": 1000,
            "status": "CAPTURED",
            "createdAt": "2025-04-10T16:28:40.150Z",
            "updatedAt": "2025-04-10T16:28:40.150Z"
        }
    ],
    "refunds": [],
    "voids": [],
    "createdAt": "2025-04-10T16:28:38.716Z",
    "updatedAt": "2025-04-10T16:28:40.150Z"
}