Webhook Events
Complete reference of all webhook events sent by Inkress and their payload structures.
Event Structure
All webhook events follow a consistent structure:
{
"event": "resource.action",
"facilitator": "Inkress",
"resource_name": {
// Resource data
}
}Order Events
Events related to one-time payments and orders.
orders.paid
Triggered when an order is successfully paid.
{
"event": "orders.paid",
"order": {
"id": 2345,
"status": "paid",
"total": 14000,
"reference": "53837|42iyvtv",
"currency": "JMD",
"lines": [],
"customer": {
"id": 4829,
"email": "customer@example.com",
"first_name": "John",
"last_name": "Doe"
},
"uid": "278282jbsh-595e-4011-b808-2872872",
"updated_at": "2025-12-27T18:39:07.670135Z",
"meta_data": null,
"created_at": "2025-12-27T18:39:07.670135Z",
"payment_details": {
"provider": "fac",
"brand": "MasterCard",
"last4": "1821"
}
},
"facilitator": "Inkress"
}How order events are named
Order events are not a fixed list. The event name is derived from the order's status at the moment it changes, in the form orders.<status> — so an order moving to shipped emits orders.shipped.
orders.paid
Payment succeeded. This is the event to build on for fulfilment.
orders.pending
The order was created but has not been paid yet.
orders.cancelled
The order was cancelled.
orders.prepared
The order is packed and ready to ship.
orders.shipped
The order has been despatched.
orders.delivered
The order reached the customer.
orders.completed
The order is fully complete.
orders.returned
The customer returned the order.
orders.verifying
The order is undergoing merchant checks.
Don't hard-code the full set. Several order statuses share an underlying status code, so the exact event name for failed, voided, error and refunded states is not guaranteed to be stable. Treat orders.paid as the reliable signal that money moved, subscribe to the wildcard below for everything else, and branch on the order payload rather than on the event name alone.
Subscribing to every order event
Rather than registering one endpoint per event, a webhook can subscribe to a wildcard and receive the whole family. This is the recommended setup — it means a new order status never silently stops reaching you.
orders
Receives every orders.* event.
all
Receives every event Inkress delivers.
Set the wildcard as the webhook's event when you create it. The actual event name still arrives in the event field of the payload and in the X-Inkress-Webhook-Event header, so you can branch on it in your handler.
Subscription Events
Events related to recurring billing and subscriptions.
subscriptions.created
Triggered when a new subscription is created.
{
"event": "subscriptions.created",
"facilitator": "Inkress",
"subscription": {
"id": "sub_1234567890",
"customer_id": "cus_1234567890",
"plan_id": "plan_1234567890",
"status": "active",
"current_period_start": "2023-01-01T00:00:00Z",
"current_period_end": "2023-02-01T00:00:00Z",
"cancel_at_period_end": false
}
}subscriptions.created
A new subscription was created.
subscriptions.trial_started
A free trial began. No charge has been taken yet.
subscriptions.trial_ending
The trial is approaching its end — a good moment to prompt the customer.
subscriptions.trial_ended
The trial finished and billing begins.
subscriptions.activated
The subscription became active.
subscriptions.payment_success
A recurring charge succeeded.
subscriptions.payment_failed
A recurring charge failed — often an expired card. See the card update flow in Subscriptions.
subscriptions.adhoc_charge
A one-off charge was raised against the subscriber outside the billing cycle.
subscriptions.cancelled
The subscription was cancelled.
The subscriptions wildcard subscribes to all of the above, and all subscribes to everything Inkress delivers.
Payout Events
Do not build against these yet. The payout event shapes below are documented for reference, but Inkress does not currently deliver financial_requests.* webhooks. Payouts are processed internally without emitting a webhook. To track payout state today, poll the payouts endpoints or check the dashboard. This page will be updated if and when these events start being delivered.
financial_requests.requested
Would be triggered when a payout is requested.
{
"event": "financial_requests.requested",
"financial_request": {
"id": 2233,
"status": "pending",
"total": 1400,
"currency": "JMD",
"source_account": {
"name": "Inkress Wallet",
"currency_code": "JMD"
},
"destination_account": {
"name": "Scotiabank",
"currency_code": "JMD",
"bank_name": "Scotiabank",
"account_number": "******7618",
"branch_name": "Half Way Tree",
"account_holder_name": "John Doe",
"account_type": "Chequing"
},
"uid": "18272872-595e-4011-b808-28728hbussbuyy628g"
},
"facilitator": "Inkress"
}financial_requests.processing
financial_requests.processed
financial_requests.failed
financial_requests.rejected
Payment Link Events
Do not build against this yet. Inkress does not currently deliver payment_links.visited webhooks. The shape is documented for reference only. To know when a link converts, use orders.paid.
payment_links.visited
Would be triggered when a customer visits a payment link.
{
"event": "payment_links.visited",
"payment_link": {
"id": 2233,
"currency": "JMD",
"title": "Payment Link",
"description": "hello world",
"status": "active",
"usage_limit": 999,
"total": 4000,
"data": {
// Custom data
},
"customer": {
"name": "Scotiabank",
"id": "28728",
"first_name": "Altou",
"last_name": "Brown",
"email": "alro@gmail.com"
},
"uid": "18272872-595e-4011-b808-28728hbussbuyy628g"
},
"facilitator": "Inkress"
}