Skip to main content
For host app owners integrating the Airport Rides miniapp. This document covers every request the host app receives from Airport Rides and every request the host app makes about an Airport Rides order: payments, order events, and refunds. It covers payloads, authentication, retries, and the integration flow. All instructions use the host-app perspective: endpoints exposed by the host app, Boxo Platform endpoints called by the host app, and the data exchanged through each.

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:
The host app must verify these credentials on every request. There is no signature over the body. Calls made by the host app to the Event Bridge API use the same Basic credentials. Payment platform endpoints such as 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:
Return {"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:
How Airport Rides reads each status: 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).
The Get order payment status endpoint is not optional in practice. Payment results do get lost in transit, and this is the only way a payment stuck mid-flow ever resolves. Otherwise a traveller can be charged and never get a ride.

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-2xx response 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, and data is rebuilt from the current booking state on every attempt.
  • Delivery failures never affect the booking.
The webhook handler must be idempotent. The same event can arrive more than once. Deduplicate on id and key records on booking_id and external_source_payment_id.

Refunds

Airport Rides implements Standard Events: Refunds. It sends refund_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:
See Standard Events: Refunds for the full contract, the 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.
reference must be stable for a user across sessions and devices. If it changes, that traveller’s ride history goes with it.

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.