Skip to main content

Buy Now, Pay Later


Buy Now, Pay Later payment methods enable customers to purchase goods or services immediately and pay in installments over time. With Buy Now, Pay Later, you are paid immediately and in full, while your customers pay nothing or only a portion of the total at the time of purchase. The remaining balance is typically spread over equal, often interest-free, payments.

Buy Now, Pay Later is increasingly popular for both online and in-store purchases.

This is how Buy Now, Pay Later works:

Buy Now, Pay Later
  1. The customer chooses their Buy Now, Pay Later payment method during checkout.
  2. The customer chooses how much they want to pay, such as nothing, installments, or the total amount.
  3. The unpaid amount is divided into equal installments that are paid over a fixed amount of time.
  4. You receive the full payment after the customer completes checkout, and the Buy Now, Pay Later provider collects the installment payments from your customer.

Unified Checkout supports the Afterpay/Clearpay and PayPal Buy Now, Pay Later payment methods.

This table describes the available Buy Now, Pay Later payment methods:

Payment MethodCapture Context allowedPaymentTypesCapture Context completeMandate.typeSeparate Capture?Payment ConfirmationCustomer Country (Country Code)Customer ISO Currency Code
AfterpayAFTERPAYCAPTURENoImmediateCanada (CA)CAD
AfterpayAFTERPAYAUTH or PREFER_AUTHYesDelayedCanada (CA)CAD
AfterpayAFTERPAYCAPTURENoImmediateAustralia (AU)AUD
AfterpayAFTERPAYAUTH or PREFER_AUTHYesDelayedAustralia (AU)AUD
AfterpayAFTERPAYCAPTURENoImmediateNew Zealand (NZ)NZD
AfterpayAFTERPAYAUTH or PREFER_AUTHYesDelayedNew Zealand (NZ)NZD
Cash App AfterpayAFTERPAYCAPTURENoImmediateUnited States (US)USD
Cash App AfterpayAFTERPAYAUTH or PREFER_AUTHYesDelayedUnited States (US)USD
ClearpayAFTERPAYCAPTURENoImmediateGreat Britain (GB)GBP
ClearpayAFTERPAYAUTH or PREFER_AUTHYesDelayedGreat Britain (GB)GBP

For information on ISO country codes, see ISO Standard Country Codes.

For information on ISO currency codes, see ISO Standard Currency Codes.


Afterpay

Afterpay is a Buy Now, Pay Later service that allows customers to purchase items immediately and pay for them in four interest-free installments over a period of 6 weeks. Afterpay is also known as Clearpay in the UK, and Cash App Afterpay in the US. For more information, see the Afterpay and Clearpay Developer Guide.

When the total amount of the order is outside the range of accepted transaction amounts, the Afterpay/Clearpay payment button is not displayed in Unified Checkout. These are the accepted transaction amounts:

  • Minimum transaction amount: 1 (CAD, AUD, NZD, USD, and GBP)
  • Maximum transaction amount: not applicable

Board Merchants with Afterpay

Before you can accept Afterpay payments, your account must be boarded for Afterpay. Portfolio users can board and enable their merchants for Afterpay using the API.

Send a POST request to the Boarding Registration API to board Afterpay:

POST /boarding/v1/registrations

POST /boarding/v1/registrations

If your organization is already boarded, you can add Afterpay as a product using the PECS API instead:

POST /products/v1/product-setups

POST /products/v1/product-setups

Include these required fields in the Boarding Registration API request:

Required Fields for Enabling Afterpay Using the BRS API
  • organizationInformation.organizationId
  • organizationInformation.businessInformation.name
  • organizationInformation.businessInformation.websiteUrl
  • organizationInformation.businessInformation.merchantCategoryCode
  • productInformation.selectedProducts.payments.unifiedCheckout.subscriptionInformation.enabled: set to true.
  • productInformation.selectedProducts.payments.unifiedCheckout.subscriptionInformation.features.afterPay.enabled: set to true to enable Afterpay on Unified Checkout.
  • productInformation.selectedProducts.payments.unifiedCheckout.subscriptionInformation.features.portfolioAccessofSensitiveData.enabled: set to true to enable portfolio access to sensitive data.

Include these required fields in the PECS API request:

Required Fields for Enabling Afterpay Using the PECS API
  • organizationId
  • payments.unifiedCheckout.subscriptionInformation.enabled: set to true.
  • payments.unifiedCheckout.subscriptionInformation.features.afterPay.enabled: set to true to enable Afterpay on Unified Checkout.
  • payments.unifiedCheckout.subscriptionInformation.features.portfolioAccessofSensitiveData.enabled: set to true to enable portfolio access to sensitive data.
{  "organizationInformation": {    "organizationId": "stuartwickedfasteatz01",    "parentOrganizationId": "apitester00",    "type": "MERCHANT",    "configurable": false,    "businessInformation": {      "name": "StuartWickedFastEatz",      "address": {        "country": "US",        "address1": "123456 SandMarket",        "locality": "ORMOND BEACH",        "administrativeArea": "FL",        "postalCode": "32176"      },      "websiteUrl": "https://www.StuartWickedEats.com",      "phoneNumber": "6574567813",      "businessContact": {        "firstName": "Stuart",        "lastName": "Stuart",        "phoneNumber": "6574567813",        "email": "[email protected]"      },      "merchantCategoryCode": "5999"    }  },  "productInformation": {    "selectedProducts": {      "payments": {        "unifiedCheckout": {          "subscriptionInformation": {            "enabled": true,            "features": {              "afterPay": {                "enabled": true              },              "portfolioAccessofSensitiveData": {                "enabled": true              }            }          }        }      }    }  }}
{  "organizationId": "stuartwickedfasteatz01",  "payments": {    "unifiedCheckout": {      "subscriptionInformation": {        "enabled": true,        "features": {          "afterPay": {            "enabled": true          },          "portfolioAccessofSensitiveData": {            "enabled": true          }        }      }    }  }}

Opt in to Afterpay on Unified Checkout

Follow these steps to opt in to the Afterpay/Clearpay payment method in Unified Checkout:

  1. Add Afterpay to your integration by adding AFTERPAY to the allowedPaymentTypes field within the capture context request. The default field value is AFTERPAY even if you want to support Cash App Afterpay in the US or Clearpay in the UK.

  2. Set the completeMandate.type field value to AUTH, CAPTURE, or PREFER_AUTH.

    You can perform a sale and capture the funds immediately if you include the completeMandate.type field in the capture context request and set the value to CAPTURE.

    You can capture the funds later if you include the completeMandate.type field in the capture context request and set the value to AUTH. When you capture the funds later, you must perform a capture using the payments API. See Captures for Buy Now, Pay Later.

    If you accept more than one payment type and must perform an authorization where funds are collected at a later time, set the completeMandate.type field to PREFER_AUTH. You must perform a capture using the payments API when an authorization is performed. A capture is performed automatically if an authorization is not allowed by the payment type.

  3. Include these required fields in the capture context request:

    • orderInformation.billTo.address1
    • orderInformation.billTo.administrativeArea
    • orderInformation.billTo.country
    • orderInformation.billTo.email
    • orderInformation.billTo.firstName
    • orderInformation.billTo.lastName
    • orderInformation.billTo.locality
    • orderInformation.billTo.postalCode
  4. Include these optional fields in the capture context request:

    • orderInformation.shipTo.address1
    • orderInformation.shipTo.administrativeArea
    • orderInformation.shipTo.country
    • orderInformation.shipTo.firstName
    • orderInformation.shipTo.lastName
    • orderInformation.shipTo.locality
    • orderInformation.shipTo.postalCode

Verify Status for Afterpay

When the status of your payment request is PENDING, you can verify the status by sending a POST request to the URL that is included in the transactionStatus.url field in the webhook response:

{  "payload": {    "transactionResult": {      "submitTimeUtc": "2025-07-22T08:16:24Z",      "reconciliationId": "KPUJHD4X2G31",      "processorInformation": {        "responseCode": "00004"      },      "id": "7531173918516064204807",      "message": "Request was processed successfully.",      "status": "SETTLED"    },    "transactionStatus": {      "url": "/pts/v2/refresh-payment-status/7531173918516064204807",      "method": "POST",      "payload": {        "clientReferenceInformation": {          "applicationName": "unifiedCheckout"        },        "processingInformation": {          "actionList": ["AP_STATUS"]        },        "paymentInformation": {          "paymentType": {            "method": {              "name": "AFTERPAY"            },            "name": "INVOICE"          }        }      }    }  }}

You can also send a request to this endpoint to verify the status:

POST /pts/v2/refresh-payment-status/{id}

POST /pts/v2/refresh-payment-status/{id}

The {id} is the ID that is returned in the webhook response. For more information, see Webhooks.


Handle Responses

When Unified Checkout automatically processes a payment with autoProcessing set to true, or you have set autoProcessing to false and are using checkout.Complete(), you must handle both successful responses and various errors. After the payment is complete, the completeResponse field object contains information about the transaction outcome.

When a payment is processed successfully, you must parse the response to confirm the payment status, update your order records, and trigger any post-payment workflows. Post-payment workflows include sending confirmation emails or updating inventory. See Integration Examples.

Your error handling should account for specific cases such as COMPLETE_TRANSACTION_CANCELED and COMPLETE_TRANSACTION_FAILED. COMPLETE_TRANSACTION_CANCELED occurs when the user cancels the transaction, and COMPLETE_TRANSACTION_FAILED indicates that the consumer's transaction failed.


Captures for Buy Now, Pay Later

When you set the completeMandate.type field value to AUTH or PREFER_AUTH, you must send a request to capture an authorized payment. Full and partial captures are supported. For capture endpoint details, see JavaScript Reference.

Example: Authorization Response from Unified Checkout

{  "details": {    "clientReferenceInformation": {      "code": "1753351101383"    },    "orderInformation": {      "amountDetails": {        "currency": "USD",        "totalAmount": "21.00"      }    },    "processorInformation": {      "approvalCode": "AUTH456789",      "responseCode": "00003",      "responseDetails": "00003",      "transactionId": "2016011808153910011808153AUTH"    },    "reconciliationId": "04RYADD29YRO",    "submitTimeUtc": "2025-07-24T09:58:21Z"  },  "id": "7533511014286971803092",  "message": "Request processed successfully.",  "outcome": "AUTHORIZED",  "status": "AUTHORIZED"}

Response Status

responds to your capture request with one of these statuses:

  • FAILED: the capture request failed.
  • PENDING: the capture request is accepted but not captured. Send a request to the check status service to retrieve status updates.
  • SETTLED: the capture request is settled for the amount requested.

Last published: September 29, 2026