Buy now, pay later
How Buy Now Pay Later methods work on PayMongo — current providers, how they attach to a Payment Intent, and customer eligibility considerations.
Overview
Buy Now, Pay Later (BNPL) lets customers complete purchases immediately and pay over time in scheduled installments. PayMongo integrates with BillEase as the BNPL provider. As the merchant, you receive the full payment amount (minus processing fees) when the transaction completes — BillEase handles the installment collection from the customer.
Provider
| Provider | Payment method type |
|---|---|
| BillEase | billease |
How it attaches to a Payment Intent
BNPL follows the standard Payment Intent redirect flow:
- Create a Payment Intent with
"billease"inpayment_method_allowed - Create a Payment Method with
type: "billease" - Attach the Payment Method — the response includes
next_action.redirect.url - Redirect the customer to BillEase to complete the eligibility check and installment selection
- Customer returns to your
return_url - Confirm via webhook —
payment.paidorpayment.failed
Customer eligibility
BillEase assesses customer eligibility during the redirect step. Not all customers will qualify — eligibility is determined by BillEase based on the customer's account history and credit standing. If the customer is not eligible, the payment fails and the Payment Intent returns to awaiting_payment_method.
Handle this case in your UI: show a message that BNPL wasn't available for this customer and offer an alternative payment method.
Accept a BNPL payment
Create a Payment Intent
const intent = await fetch('https://api.paymongo.com/v1/payment_intents', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + btoa('sk_test_YOUR_SECRET_KEY:')
},
body: JSON.stringify({
data: {
attributes: {
amount: 50000,
currency: 'PHP',
payment_method_allowed: ['billease', 'card', 'gcash'],
description: 'Order #5678'
}
}
})
}).then(r => r.json());Create and attach a Payment Method
// Create
const pm = await fetch('https://api.paymongo.com/v1/payment_methods', {
method: 'POST',
headers: { 'Authorization': 'Basic ' + btoa('pk_test_YOUR_PUBLIC_KEY:'), 'Content-Type': 'application/json' },
body: JSON.stringify({
data: { attributes: { type: 'billease' } }
})
}).then(r => r.json());
// Attach
const intent = await fetch(
`https://api.paymongo.com/v1/payment_intents/${paymentIntentId}/attach`,
{
method: 'POST',
headers: { 'Authorization': 'Basic ' + btoa('pk_test_YOUR_PUBLIC_KEY:'), 'Content-Type': 'application/json' },
body: JSON.stringify({
data: {
attributes: {
payment_method: pm.data.id,
client_key: clientKey,
return_url: 'https://yoursite.com/payment/complete'
}
}
})
}
).then(r => r.json());
// Redirect to BillEase
window.location.href = intent.data.attributes.next_action.redirect.url;Transaction amounts
BNPL follows the same minimum and maximum amount limits as the Payment Intent. There are no separate limits set by PayMongo for BillEase. However, a customer's individual eligibility — determined by BillEase based on their account and credit standing — may affect whether a specific transaction is accepted.
Updated about 4 hours ago