A booking is a confirmed reservation paid for by your customer through your bank’s checkout. SafarAPI never touches the card or payment data — your bank captures payment, sends the booking confirmation to SafarAPI with an HMAC‑signed proof of payment.Documentation Index
Fetch the complete documentation index at: https://developers.safarapi.com/llms.txt
Use this file to discover all available pages before exploring further.
Lifecycle
Unlike B2C bookings on Safariat, partner bookings have no PENDING state: they are created already CONFIRMED because the payment has already been settled.Required fields
| Field | Meaning |
|---|---|
quote_id | The quote you obtained from POST /quotes |
partner_reference | Your internal booking ID — unique per partner, used for reconciliation |
traveler | Final customer information (first/last name, email, phone, language) |
payment_confirmation | Proof of payment captured on your side |
traveler.customer_reference is your bank’s internal customer ID. SafarAPI hashes it with a per‑partner salt before storing it — no cross‑partner traceability is possible, even in the event of a data leak.
Payment confirmation
paid_amount_total— what the customer paid your bank (informative)paid_amount_net— what your bank owes SafarAPI; must equalquote.net_amountbank_payment_ref— your bank’s internal payment reference, stored for reconciliationpayment_method— one ofCARD,BANK_TRANSFER,ACCOUNT_DEBIT,CASH,WAFACASH,OTHER
What happens after booking
- SafarAPI creates a shadow user in Keycloak (federated identity to your bank)
- The booking is linked to the adventure snapshot (frozen content as your customer saw it)
- The local agency is notified (system event)
- The voucher PDF is generated and emailed to the traveller’s email
- The webhook
booking.confirmedfires to your registered endpoint (if configured) - The booking’s
partner_paid_amount_netis added to your outstanding settlement balance
Cancelling
tier_applied— which cancellation tier matched (frozen on the booking at creation, never moves)refund.net_to_partner— deducted from your next monthly invoicerefund.gross_to_traveler_indicative— what you should refund your customer (your decision, not enforced)
Refunds are processed entirely through the monthly settlement cycle. SafarAPI does not initiate any wire transfer to your bank for cancellations — the refund appears as a negative line on your next invoice.
Listing your bookings
GET /bookings returns a paginated list of all bookings made under your partner account. Filters:
status—CONFIRMED,COMPLETED,CANCELLEDcreated_from,created_to— ISO datetime rangetravel_date_from,travel_date_to— date rangecursor,limit— pagination
meta.next_cursor from the previous response to get the next page.