Payment flow
Three separate movements of money surround a booking made through Norba, and keeping them apart is the whole point of this page. Norba never holds any of it. You collect the full price from your traveller, you pay the carrier the airline’s own amount through our API with your own payment method, and we bill you our fees at the end of the month.
| Movement | Who pays whom | When |
|---|---|---|
| 1 · Traveller → you | The whole price: the airline’s amount plus your markup. Taken on your own checkout, with your own payment provider. Never touches Norba. | At your checkout |
| 2 · You → carrier | The airline’s amount only, charged to your card, transmitted through the API. The carrier authorises it and issues the ticket. | POST /v1/orders |
| 3 · You → Norba | Our fees, accrued per booking, per extra sold, per servicing operation and per metered request, then charged to the card on your account. | Monthly, in arrears |
A booking, end to end
Figures below are illustrative. Your own rates are on the pricing page and in your dashboard.
| Step | Amount | Who moves it |
|---|---|---|
| Airline amount (fare + taxes + carrier charges) | 500.00 | Quoted by the carrier |
| Your markup | 50.00 | Set by you |
| Traveller pays you | 550.00 | Your payment provider |
| You pay the carrier, via the API | 500.00 | Your card, charged by the carrier |
| You keep, before your own costs | 50.00 | Stays in your account |
| Norba fee on the booking, accrued | per your rate card | Invoiced at month end |
The sequence
Traveller
│ pays 550.00 on your checkout (airline amount + your markup)
▼
Your agency ──────────────────────────────────────────────┐
│ POST /v1/shopping/offers search │ your markup
│ POST /v1/offers/price price the chosen offer │ stays here
│ POST /v1/orders with YOUR card │
▼ │
Norba API │
│ withholds your commission, tenders the airline amount │
▼ │
Carrier (NDC) │
│ authorises 500.00 on your card, issues the ticket │
▼ │
Norba API ── returns order_id, PNR, ticket numbers ────────┘
│
└─ accrues the Norba fee against your account
month end: Norba invoices you → card on fileWhat to send as payment.amount
Send the full price you quoted the traveller, markup included. Norba withholds your own commission and tenders the remainder — the airline’s amount — to the carrier. You do not subtract your markup yourself.
| You send | Norba tenders to the carrier | Result |
|---|---|---|
| 550.00 | 500.00 | Correct, where your commission rule in Norba is 50.00 for this sale. |
| 500.00 | 500.00 | Correct where you have no commission rule configured and collect your margin entirely outside Norba. |
| 1.00 | — | Rejected with 400: the amount is reconciled against the carrier’s own total for the offer before anything is sent. An amount that does not match never reaches the airline. |
Your commission rules live on Commissions in the dashboard. With no rule configured, nothing is withheld and what you send is what the carrier is asked to charge.
What Norba does, and what it does not
- Search, price and hold the carrier’s offers
- Transmit passenger data and your payment method to the carrier
- Issue through its own airline connections and accreditation
- Return the order, PNR and ticket numbers
- Meter your usage and accrue its own fees
- Invoice you monthly and suspend on non-payment
- Charge the traveller, or see their payment method
- Hold, settle or pay out any money
- Receive your markup, or charge a fee on it
- Act as merchant of record for anything the traveller pays
- Store a card number
- Pay the carrier on your behalf, or extend credit for a fare
Who carries which risk
| Event | Falls to | Why |
|---|---|---|
| Traveller disputes what you charged them | You | Their contract and their payment was with you, through your provider. |
| Your card is declined by the carrier | You | No ticket is issued. Nothing is charged, and the order does not reach ticketed. |
| Carrier adds its own card or service charge | You | It forms part of what that carrier charges; check the carrier's integration page. |
| Fraudulent traveller payment, ticket already issued | You | You collected at step 1 and paid the carrier at step 2; both are yours. |
| Debit memo caused by your data or instruction | You | Passed through with the carrier's own reference. See the agreement, section 12. |
| Debit memo caused by a Norba failure | Norba | Ours to carry. |
| Carrier cancels, reschedules or goes down | Neither | The carrier owes the traveller its passenger-rights duties; we relay what it tells us. |
Forms of payment a carrier will take
Whether a carrier accepts an agency’s own card, and whether it adds a charge for paying that way, is the carrier’s rule and not ours. It differs by carrier and it can change. Check the integration page for the carrier you are selling before you assume a form of payment works, and treat the payment rail as a per-carrier capability rather than something NDC guarantees everywhere.
Sending no card object at all settles the order offline instead — the method string is carried through to the carrier as a settlement remark. See Orders Lifecycle for that path.
3-D Secure and who authenticates
Norba never authenticates a cardholder. There is nobody present on a server-to-server booking call to answer a challenge, and the authentication tokens are bound to one transaction — one amount, one merchant, one directory-server exchange — so they can be neither minted here nor reused from another authentication.
That has a consequence worth stating plainly: you cannot authenticate the traveller once on your checkout and reuse those tokens for the carrier’s charge. They are different transactions. This is the main reason the model on this page pays the carrier with your own card rather than the traveller’s — the traveller’s authentication belongs to your charge, at step 1, where their bank can actually challenge them.
| Charge | Who authenticates | How |
|---|---|---|
| Traveller → you | You | Your payment provider runs 3-D Secure on your own checkout. Norba is not involved. |
| You → carrier | Usually nobody | A commercial card under a corporate payment process is commonly exempt, which is what makes this rail work at all. Where a carrier does want the tokens, send them in payment.authentication. |
The block covers both protocol versions. Version 1 carries xid and cavv_algorithm; version 2 carries ds_transaction_id and channel. The rest — authentication_value, eci, transaction_status — are common to both, whatever the carrier’s own schema happens to call them.
{
"payment": {
"method": "CARD",
"currency": "EUR",
"amount": 550.00,
"card": {
"number": "4111111111111111",
"holder": "Acme Travel SL",
"expiry_month": 11,
"expiry_year": 2030,
"brand": "VISA"
},
"authentication": {
"version": "2",
"authentication_value": "AAACBhZHkQICA0kAMkeREMAAAgE=",
"eci": "05",
"transaction_status": "Y",
"ds_transaction_id": "9682ed54-9bba-4f33-8e44-0f6f9dfdc9f2"
}
}
}payment.authentication to a carrier whose channel cannot carry it and the booking is refused with an error naming the carrier. Dropping it quietly would leave you believing the liability had shifted to the issuer while the carrier authorised the charge without ever seeing the tokens.Whether a carrier accepts an agency card, exempts a commercial one, or requires the tokens is per carrier and can change — check its integration page. The cryptogram and the xid are credentials: they are redacted from request logs and never persisted. The status codes beside them are not, because they are what a disputed authentication is traced with.
A reservation is not a ticket
The carrier can accept an order and still fail to issue the document. Until the API returns a ticketed status and at least one ticket number, no ticket exists, and you should not tell the traveller otherwise or treat the sale as complete.
{
"order_id": "AA001U8DY61A3",
"pnr": "KBKYAY",
"status": "confirmed",
"total_amount": 500.00,
"currency": "EUR",
"ticket_numbers": ["0012386549871"]
}A timeout is not an answer either: read the order back before retrying, and use an idempotency key on every write. Retrying a booking blind is how duplicate tickets — and the debit memos that follow them — get made.
At the end of the month
Everything we accrued against your account through the month — the share of each confirmed booking, each seat and extra sold, each servicing operation, and your metered requests beyond the free allowance — is totalled into one invoice and charged to the card on your account. Sandbox activity is metered but raises no booking fee, because a sandbox booking is not a sale.
The mechanics of that invoice, the standing checks that gate a booking on having a card on file, and what happens when one goes unpaid are all on Billing & Payments.