Buy Now Pay Later (BNPL) lets customers split a purchase into multiple installments, often interest-free for short terms. The customer is approved in real time by the BNPL provider and pays Yuno the full amount upfront — installment collection is handled by the provider.
Available BNPL providers
| Provider | payment_method_type | Country | Currency | Notes |
|---|
| Kueski | KUESKI | Mexico (MX) | MXN | Consumer credit; redirect flow |
| Aplazo | APLAZO | Mexico (MX) | MXN | Retailer installments; redirect flow |
| Adyen Klarna | KLARNA | LatAm + Global | Varies | Multi-currency; redirect flow |
Each BNPL provider must be configured as a connection in Dashboard > Connections before it appears at checkout. Contact your Yuno account manager to enable a provider for your account.
How BNPL works with Yuno
- The customer selects a BNPL option at checkout.
- Your backend creates a payment with the BNPL
payment_method.type and desired installment count.
- Yuno returns a
redirect_to URL in the payment response.
- The customer is redirected to the BNPL provider’s site to review and approve the installment plan.
- After approval, the provider redirects back to your
callback_url.
- Yuno fires a
PAYMENT_STATE_CHANGED webhook when the payment is confirmed.
BNPL flows are always redirect-based. The customer must leave your site to complete approval on the provider’s platform. Design your checkout to handle the redirect gracefully and process the webhook for final order fulfillment.
Create a BNPL payment
curl --request POST \
--url https://api-sandbox.y.uno/v1/payments \
--header 'Content-Type: application/json' \
--header 'private-secret-key: YOUR_SECRET_KEY' \
--header 'account-code: YOUR_ACCOUNT_CODE' \
--data '{
"merchant_order_id": "order-mx-bnpl-001",
"checkout_session": "SESSION_ID",
"country": "MX",
"amount": { "value": 300000, "currency": "MXN" },
"payment_method": {
"type": "KUESKI",
"installments": 3
},
"customer_payer": {
"first_name": "Sofia",
"last_name": "Ramirez",
"email": "sofia.ramirez@example.com"
},
"callback_url": "https://yourstore.com/checkout/return"
}'
Response
{
"payment_id": "pay_bnpl_abc123",
"status": "PENDING",
"payment_method": {
"type": "KUESKI",
"detail": {
"redirect_to": "https://kueski.com/pay/session-xyz",
"installments": 3,
"installment_amount": { "value": 100000, "currency": "MXN" }
}
}
}
Redirect the customer to payment_method.detail.redirect_to immediately after receiving this response.
Handling the redirect return
After the customer approves or rejects the installment plan, the BNPL provider redirects back to your callback_url with a query parameter indicating the result. Do not rely on this redirect alone for order fulfillment — use the webhook instead.
// On your callback page
const params = new URLSearchParams(window.location.search);
const paymentId = params.get('payment_id');
// Show a holding screen while awaiting webhook confirmation
showMessage('Processing your payment — please wait a moment.');
// Your backend listens for PAYMENT_STATE_CHANGED webhook
// and updates the order status
Webhook confirmation
{
"type": "PAYMENT_STATE_CHANGED",
"data": {
"payment_id": "pay_bnpl_abc123",
"status": "SUCCEEDED",
"payment_method_type": "KUESKI"
}
}
Only fulfill the order after receiving status: "SUCCEEDED" from the webhook.
Installment plans
The installments field specifies how many installments the payment is split into. Available installment counts depend on the provider’s configuration and the payment amount.
You control which installment options appear at checkout. Configure plans in Dashboard > Payment Features > Installments.Merchant installments guide → The BNPL provider determines available plans based on its own credit assessment of the customer and transaction. Pass installments: 0 or omit the field to let the provider decide.Provider installments guide →
Display installment breakdowns clearly before the customer is redirected. Showing the per-installment amount (e.g., “3 x MXN 1,000”) alongside the total increases BNPL conversion rates.
Minimum and maximum amounts
Each BNPL provider enforces minimum and maximum transaction amounts. If the payment amount falls outside the allowed range, the provider rejects the request. Verify limits with your provider configuration or the Yuno Dashboard before surfacing BNPL as an option.