Kredivo (PayLater)
BNPL — payer authorises an installment plan in the Kredivo app
Kredivo is a Buy Now Pay Later (BNPL / PayLater) channel. The payer authorises an installment plan inside the Kredivo app and 505pay receives a payment.completed webhook once the credit decision lands. There is no 3-D-Secure step.
| Field | Value |
|---|---|
allowed_channels value | kredivo |
| TTL | 30 days |
| Refund support | Programmatic (within the standard 30-day window) |
| Settlement | T+1 |
| Channel-typed response fields | payment_url, checkout_url |
Create intent
See the canonical create-intent example — pass allowed_channels: ["kredivo"].
curl -X POST https://sandbox.505pay.link/v1/payments/intents \
-H "Authorization: Bearer $PAYOPS_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $YOUR_KEY" \
-d '{
"merchant_id": "'"$PAYOPS_MERCHANT_ID"'",
"amount_idr": 500000,
"max_uses": 1,
"allowed_channels": ["kredivo"]
}'The response includes payment_url (the Kredivo-hosted authorisation page) and checkout_url (the 505pay-hosted checkout that wraps it). Redirect the payer to checkout_url to let 505pay handle the BNPL flow end-to-end.
Sandbox simulator
curl -X POST "https://sandbox.505pay.link/v1/payments/intents/$INTENT_ID/sandbox-complete" \
-H "Authorization: Bearer $PAYOPS_SECRET_KEY"Triggers payment.completed webhook + flips intent status to paid.
Webhook events
payment_intent.created— fired on POST intent.payment.completed— fired when Kredivo approves the installment plan.payment.failed— fired if the credit application is declined.payment_intent.expired— fired if the payer never authorises within the 30-day TTL.
See Payment lifecycle.
Minimum amount
Kredivo enforces a per-transaction minimum (typically Rp 100,000). 505pay forwards the response code verbatim — check the merchant dashboard for the current floor.
Was this page helpful?