hoHellOOpass

Webhook Payload Structure

JSON envelope and field reference for HellOOpass bill/order webhook events.

Webhook contract

Event names are final (placed, confirmed, rejected, success). The envelope and payload fields below are illustrative until the full webhook specification is published.

Every delivery uses the same envelope: a top-level event wrapper with bill/order data nested under data.

Envelope

{
  "id": "evt_01HZX9K2EXAMPLE",
  "type": "success",
  "api_version": "v1",
  "created_at": "2026-10-20T16:45:00Z",
  "data": {
    "order": {
      "id": "ord_01HZX9K2EXAMPLE",
      "status": "success",
      "amount": 1000,
      "currency": "ETB",
      "reference": "order_1024",
      "metadata": { "order_id": "1024" }
    }
  }
}

Fields

FieldTypeDescription
idstringUnique event id — use it as your dedupe key.
typestringEvent name: placed, confirmed, rejected, or success.
api_versionstringSchema version of the event.
created_atstringISO 8601 timestamp when the event was created.
data.order.idstringHellOOpass bill/order id.
data.order.statusstringBill/order status at emit time.
data.order.amountintegerAmount in the smallest currency unit.
data.order.referencestringYour original order reference, echoed back.

Rules

  • Dedupe by event id — store id with a unique constraint and ignore repeat deliveries.
  • Never trust it alone for fulfillment — check amount, currency, and reference against your order first.
  • Signed means authoritative — verify the signature, process idempotently, and when state conflicts call Verify Payment.

Related: Testing Webhooks · Webhook Event Types

Was this page helpful?