In the sandbox these endpoints work against real carrier test inventory: a search returns real offers and you can create a real booking with a carrier PNR. Two things are worth knowing before you build against them.
- Sandbox orders are test reservations. Nobody flies on them, and they raise no fee. Cancel what you create; anything left over expires on its own payment time limit.
- Sandbox tickets are test documents. A paid order comes back
ticketedwith test ticket and EMD numbers intickets[]; a hold comes backconfirmedwith none. Readstatusandtickets[], not the HTTP code — that is the check production relies on too.
Refund eligibility
Is this order refundable, and for how much?
/v1/orders/{orderID}/refund-eligibilityRequires X-API-KeyReturns a RefundEligibility: whether a refund is possible, the amount, the penalty and a deadline.
**A GET, so it is not blocked by the booking feature gate** — this works even in environments where order writes return coming_soon.
Derived, not authoritative. eligible is computed as penalty < original fare; refund_amount is original fare − penalty; deadline is a flat 24 hours from now, not a date the airline supplied. All of it comes from the airline's order reprice rather than a refund quote, so use it as guidance and confirm the real figure before promising money back.
?airline= is optional: the airline comes from your stored order, not from this parameter. A value that disagrees with the persisted carrier is refused with 400 airline does not match the order.
Request example
curl --request GET \
--url https://api.norba.io/v1/orders/{orderID}/refund-eligibility \
--header "X-API-Key: $NORBA_KEY"Response example
{
"order_id": "AA001Y1XD7ZA6",
"eligible": true,
"refund_amount": 380.62,
"refund_currency": "EUR",
"penalty_amount": 0,
"penalty_currency": "EUR",
"deadline": "2026-08-15T09:15:00Z"
}Path parameters
orderIDstringRequiredCanonical order ID.
AA001Y1XD7ZA6Query parameters
airlinestringIATA code. Optional — inferred from your stored order. A value that disagrees with the persisted carrier is refused with 400 airline does not match the order.
AAResponse fields
order_idstringRequiredThe order assessed.
eligiblebooleanRequiredtrue when the penalty is smaller than the original fare.
refund_amountnumberOriginal fare minus penalty.
refund_currencystringISO 4217 code.
penalty_amountnumberFee the airline retains.
penalty_currencystringISO 4217 code.
deadlinestring (RFC 3339)Currently always 24 hours from the request — not an airline-supplied date.
reasonsarray<string>Restrictions, when known.
Error codes
400airline does not match the order — only returned when a supplied ?airline= disagrees with the persisted carrier; omitting it is fine.
502The airline rejected the reprice.