Checkout

Bank transfer checkout that confirms itself.

Each order gets its own one-time IBAN. When the transfer lands, the order is marked paid automatically. No reference for your customer to type, no payments to chase.

Available to verified businesses only.

Northwind StoreSecure checkout
Order NW-20418
€249.00
IBANFR76 3000 4012 7700 0198 3362 015
Account holderNorthwind Store
BICNEOFFRP1
Amount249.00 EUR
Waiting for your transfer

Expires in 23:41:12

  • No reference needed. This IBAN belongs to your order.
  • Pay from any bank app. Instant rails confirm in seconds.

Simulate

Sample data
The problem

Cards are expensive and references are unreliable.

  • Card fees and chargebacks are expensive for high-value B2B orders.
  • Ordinary bank-transfer checkout depends on the customer typing a reference correctly.
  • Finance teams waste hours matching transfers to orders.
How it works

Four steps, no manual matching.

Create a session

Your server creates a checkout_session with amount, currency and expiry.

Show the IBAN

The customer sees a hosted page (or your embedded widget) with a unique IBAN.

Customer pays

The customer pays from their banking app.

Confirm

NEO matches the credit to the session, checks the amount, and fires checkout_session.paid.

Session lifecycle

open → paidopen → expiredpaid → refunded / partially_refundedopen → underpaid → (top-up) paid | refunded
Features

Everything you need, nothing you have to build.

Hosted page

Branded with your logo and colours; mobile-first; available in English, French, German, Dutch, Spanish and Italian.

Embeddable widget

A drop-in component for your own checkout.

Exact-amount rules

Choose to accept, partially accept or refund over- and under-payments.

Expiry

Sessions expire after a set time (default 24 h); late payments are returned.

Copy and QR

One-tap copy for every field; EPC QR code for EUR where supported by the payer's bank.

Status in real time

The page updates the moment funds arrive.

Refunds

Full or partial refunds back to the payer's account via API.

Payment links

Generate a payable link from the dashboard without code.

Interactive demo

Try it with sample data.

Northwind StoreSecure checkout
Order NW-20418
€249.00
IBANFR76 3000 4012 7700 0198 3362 015
Account holderNorthwind Store
BICNEOFFRP1
Amount249.00 EUR
Waiting for your transfer

Expires in 23:41:12

  • No reference needed. This IBAN belongs to your order.
  • Pay from any bank app. Instant rails confirm in seconds.

Simulate

Sample data
Developers

Create a checkout session

Idempotent POST, synchronous response, signed webhook. Full details in the API reference.

Compliance note

Every checkout credit is name-checked against the payer and screened by Shield before the session is marked paid. Third-party or sanctioned payers are returned to source.

Request
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" }
  }'
Response
{
  "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"
}
checkout_session.paid
{
  "id": "ev_6Rd20",
  "type": "checkout_session.paid",
  "created_at": "2026-11-05T14:09:48Z",
  "data": {
    "id": "cs_8Wn3Qa",
    "order_ref": "NW-20418",
    "amount": 24900,
    "amount_received": 24900,
    "currency": "EUR",
    "credit": "cr_3Mn8vB",
    "payer": { "name": "Orchard Retail SAS", "country": "FR" },
    "paid_at": "2026-11-05T14:09:48Z"
  }
}
FAQ

Questions we get about Checkout.

How fast does the customer see confirmation?

As soon as the transfer settles on its rail. Timing depends on the payer's bank and the rail used; SEPA Instant and Faster Payments typically settle within seconds, while standard SEPA settles on the next business day.

What if the customer pays the wrong amount?

Your session rules decide: auto-refund, accept as partial, or hold for review.

What if they pay after expiry?

The payment is returned and credit.returned fires with the reason session_expired.

Can I use my own domain?

Yes. Custom checkout domains are available on Scale and Institutional plans.

Do customers need an account with NEO?

No. The payer simply makes a bank transfer from their existing bank account.

Issue your first virtual IBAN this week.

Sandbox access is immediate. Live accounts follow KYB review of your business.