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:
- The customer chooses their Buy Now, Pay Later payment method during checkout.
- The customer chooses how much they want to pay, such as nothing, installments, or the total amount.
- The unpaid amount is divided into equal installments that are paid over a fixed amount of time.
- 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 Method | Capture Context allowedPaymentTypes | Capture Context completeMandate.type | Separate Capture? | Payment Confirmation | Customer Country (Country Code) | Customer ISO Currency Code |
|---|---|---|---|---|---|---|
| Afterpay | AFTERPAY | CAPTURE | No | Immediate | Canada (CA) | CAD |
| Afterpay | AFTERPAY | AUTH or PREFER_AUTH | Yes | Delayed | Canada (CA) | CAD |
| Afterpay | AFTERPAY | CAPTURE | No | Immediate | Australia (AU) | AUD |
| Afterpay | AFTERPAY | AUTH or PREFER_AUTH | Yes | Delayed | Australia (AU) | AUD |
| Afterpay | AFTERPAY | CAPTURE | No | Immediate | New Zealand (NZ) | NZD |
| Afterpay | AFTERPAY | AUTH or PREFER_AUTH | Yes | Delayed | New Zealand (NZ) | NZD |
| Cash App Afterpay | AFTERPAY | CAPTURE | No | Immediate | United States (US) | USD |
| Cash App Afterpay | AFTERPAY | AUTH or PREFER_AUTH | Yes | Delayed | United States (US) | USD |
| Clearpay | AFTERPAY | CAPTURE | No | Immediate | Great Britain (GB) | GBP |
| Clearpay | AFTERPAY | AUTH or PREFER_AUTH | Yes | Delayed | Great 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.organizationIdorganizationInformation.businessInformation.nameorganizationInformation.businessInformation.websiteUrlorganizationInformation.businessInformation.merchantCategoryCodeproductInformation.selectedProducts.payments.unifiedCheckout.subscriptionInformation.enabled: set totrue.productInformation.selectedProducts.payments.unifiedCheckout.subscriptionInformation.features.afterPay.enabled: set totrueto enable Afterpay on Unified Checkout.productInformation.selectedProducts.payments.unifiedCheckout.subscriptionInformation.features.portfolioAccessofSensitiveData.enabled: set totrueto enable portfolio access to sensitive data.
Include these required fields in the PECS API request:
Required Fields for Enabling Afterpay Using the PECS API
organizationIdpayments.unifiedCheckout.subscriptionInformation.enabled: set totrue.payments.unifiedCheckout.subscriptionInformation.features.afterPay.enabled: set totrueto enable Afterpay on Unified Checkout.payments.unifiedCheckout.subscriptionInformation.features.portfolioAccessofSensitiveData.enabled: set totrueto 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:
Add Afterpay to your integration by adding
AFTERPAYto theallowedPaymentTypesfield within the capture context request. The default field value isAFTERPAYeven if you want to support Cash App Afterpay in the US or Clearpay in the UK.Set the
completeMandate.typefield value toAUTH, CAPTURE, orPREFER_AUTH.You can perform a sale and capture the funds immediately if you include the
completeMandate.typefield in the capture context request and set the value to CAPTURE.You can capture the funds later if you include the
completeMandate.typefield in the capture context request and set the value toAUTH. 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.typefield toPREFER_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.Include these required fields in the capture context request:
orderInformation.billTo.address1orderInformation.billTo.administrativeAreaorderInformation.billTo.countryorderInformation.billTo.emailorderInformation.billTo.firstNameorderInformation.billTo.lastNameorderInformation.billTo.localityorderInformation.billTo.postalCode
Include these optional fields in the capture context request:
orderInformation.shipTo.address1orderInformation.shipTo.administrativeAreaorderInformation.shipTo.countryorderInformation.shipTo.firstNameorderInformation.shipTo.lastNameorderInformation.shipTo.localityorderInformation.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.
Related Payment Methods
Thanks for your feedback!
Last published: September 29, 2026