Checkout: one-time IBANs per order
One-time IBANs per order. The customer pays by bank transfer and the session confirms itself.
Create a session
curl https://api.neofin.tech/v1/checkout-sessions \
-H "Authorization: Bearer $NEO_API_KEY" \
-H "Idempotency-Key: 3e8b1d7c-52aa-4f0e-9c1d-0a7b6e5d4c3b" \
-H "Content-Type: application/json" \
-d '{
"amount": 24900,
"currency": "EUR",
"order_ref": "NW-20418",
"expires_in": 86400,
"amount_rules": {
"underpayment": "refund",
"overpayment": "refund_excess"
},
"success_url": "https://shop.example/thanks",
"branding": { "display_name": "Northwind Store" }
}'
{
"id": "cs_8Wn3Qa",
"object": "checkout_session",
"status": "open",
"amount": 24900,
"currency": "EUR",
"order_ref": "NW-20418",
"iban": "FR7630004012770001983362015",
"bic": "NEOFFRP1",
"holder_name": "Northwind Store",
"hosted_url": "https://pay.neofin.tech/s/cs_8Wn3Qa",
"expires_at": "2026-11-06T14:02:11Z",
"created_at": "2026-11-05T14:02:11Z"
}
Redirect the customer to hosted_url, or render the IBAN, holder name, BIC and amount yourself using the embeddable widget.
Amount rules
| Rule | Options |
|---|---|
| underpayment | refund (default) · accept_partial · hold (wait for a top-up until expiry) |
| overpayment | refund_excess (default) · accept · hold |
Lifecycle and events
open → paidemitscheckout_session.paid.open → expiredemitscheckout_session.expired. Credits after expiry are returned withsession_expired.open → underpaidemitscheckout_session.underpaid; a top-up moves it topaid.paid → refunded / partially_refundedviaPOST /checkout-sessions/{id}/refunds.
Refunds
curl https://api.neofin.tech/v1/checkout-sessions/cs_8Wn3Qa/refunds \
-H "Authorization: Bearer $NEO_API_KEY" \
-H "Idempotency-Key: 5d4c..." \
-H "Content-Type: application/json" \
-d '{ "amount": 24900, "reason": "order_cancelled" }'
Refunds are sent to the payer's originating account. They cannot be redirected elsewhere.
Custom domains
On Scale and Institutional plans, hosted pages can be served from pay.yourdomain.com. Add the CNAME shown in the console and we issue the certificate automatically.