Checkout Flow
A complete walkthrough of the CoverPay BNPL checkout — from when the user clicks "Pay Later" to when you receive a confirmed payment token.
Flow Overview
1
User clicks "Pay Later"
Your app triggers CoverPay Link to open. This can be a button click, checkout step, or any user action.
2
Eligibility check
CoverPay verifies the user passes all 5 checks: age, residency, KYC, sanctions, and terms acceptance. If any check fails, the user sees an appropriate error.
3
Terms acceptance
First-time users are presented with 4 legal documents to accept. Returning users who already accepted skip this step.
4
Provider offers
The smart router queries all available providers, scores them, and presents ranked offers to the user.
5
User selects a plan
The user chooses a provider and installment plan (Pay in 4, monthly, etc.). Some providers require additional authentication.
6
Payment token issued
CoverPay returns a one-time payment token to your app. The checkout modal closes.
7
Order completion
Your server uses the payment token to finalize the order. Webhooks notify you of subsequent payment events.
Smart Router
The smart router scores each provider on 5 factors to maximize approval rates:
| Factor | Weight | Description |
|---|---|---|
| Availability | 40% | Is the amount within the provider's min/max range? |
| APR | 25% | Lower APR scores higher — better for the customer |
| Approval Rate | 20% | Historical approval likelihood for similar profiles |
| Preference | 10% | Your business-configured provider priority |
| Historical | 5% | Past performance for this customer segment |
Payment Token
The payment token (pt_...) is a one-time credential that represents the customer's BNPL authorization. Send it to your server to complete the order.
Token properties
Format:pt_{provider}_{random}
Expiry:15 minutes
Usage:Single use only
Contains:Provider, plan type, amount, customer reference
After Checkout
Once the checkout completes, listen for webhook events to track payment status:
checkout.completedCheckout succeeded — fulfill the orderpayment.successAn installment payment was collectedpayment.failedAn installment payment failed — provider handles retryloan.completedAll installments paid — loan closed