How the integration fits together
Payments and refunds go through the Boxo Platform. Order events are sent by Airport Rides straight to the host app’s webhooks URL.Endpoints exposed by the host app
Boxo Platform endpoints called by the host app
Dashboard settings to confirm
Boxo must enable Event Bridge for both the host app and Airport Rides. Enabling only one side prevents refund events from being delivered.
Authentication
Calls received by the host app (order webhooks, event receiver, create order payment, get payment status) carry:complete-order are authorized by IP whitelisting or request signaturing configured in the dashboard.
IP whitelisting and request signaturing are also available for securing server-to-server calls. See Security measures.
Payments
Ride checkout uses the standard Boxo Payments flow.Create order payment request
The Boxo Platform calls the host app’s create order payment endpoint with the body Airport Rides sends:{"order_payment_id": "..."} with HTTP 200. The traveller settles that payment through the SDK.
miniapp_order_id is the order id for a new booking. When the traveller pays extra for a more expensive booking change, it is the booking change id. Each paid change is a separate payment with its own order_payment_id.Report the payment result
After the traveller confirms, call the platform:
Include
payment_fail_reason with cancelled and failed statuses for operational diagnosis.
Get order payment status
If a payment result is not delivered, Airport Rides queries the Boxo Platform, which calls the host app’s get order payment status endpoint. The endpoint must return the current status (created, in_process, paid, cancelled, returned, failed, or process_failed).
Order events
Airport Rides sends order events straight to the host app’s order webhooks URL, in this envelope:The two event types
Payload reference
Order events carry no passenger personal data.
Full example
Delivery and idempotency
- Events are sent after the booking state change is committed.
- Any non-
2xxresponse or timeout counts as a failure. A failed delivery is retried about every 5 minutes for up to 24 hours. - Retried events keep the same
id, anddatais rebuilt from the current booking state on every attempt. - Delivery failures never affect the booking.
Refunds
Airport Rides implements Standard Events: Refunds. It sendsrefund_request to the host app’s event receiver, and the host app reports the result with refund_status.
Values Airport Rides puts in the payload:
refund_status payload, and the refund states.
Traveller identity
Login uses Boxo Connect through either the OAuth or Direct flow.reference in the supplied user data becomes the traveller’s identity in Airport Rides and is sent as hostapp_user_id in the create order payment request. custom_attributes are optional.
Integration checklist
1
Enable Event Bridge
Request that Boxo enable Event Bridge for the host app and Airport Rides, and register the host-app event receiver URL.
2
Register payment endpoints
Register the host-app create order payment and get order payment status URLs. Both are required for safe checkout.
3
Set the order webhooks URL
Share the host-app order webhooks URL with Boxo so that
order.succeeded and order.failed are delivered.4
Verify inbound credentials
Verify Basic
hostapp_client_id:hostapp_secret_key on every inbound call.5
Acknowledge every event
Return
200 from the order webhooks URL and the event receiver for every event, including unsupported types.6
Key records on stable ids
Key payments on
miniapp_order_id and order events on booking_id and external_source_payment_id.7
Deduplicate refunds on refund_id
Never refund the same
refund_id twice.8
Always send a final refund_status
Send exactly one final
refund_status (completed, failed or cancelled) for every refund_request.Quick reference
Platform reference: Boxo Event Bridge, Boxo Payments, Boxo Connect, Standard Events.