Signed with HMAC-SHA256
Every request carries a timestamp and signature header. Verify both before you trust the body.
Developers
Money movement is asynchronous. Our event stream is signed, ordered per resource and replayable, so your ledger never drifts.
Every request carries a timestamp and signature header. Verify both before you trust the body.
Any non-2xx response is retried with exponential backoff, then parked for manual replay.
An event may arrive more than once. Key your handler on the event id and make it idempotent.
Events for a single resource are delivered in sequence, so a reversal never precedes its payout.
{
"id": "evt_01HQ8ZT4KX",
"type": "payout.completed",
"created_at": "2026-07-26T09:14:02Z",
"api_version": "2026-04-01",
"data": {
"payout_id": "po_8812",
"beneficiary": "acc_9f2c41",
"amount": 124500,
"rail": "IMPS",
"utr": "IMPS0921884412"
}
}Headers: Rubix-Signature and Rubix-Timestamp.
import { verifyWebhook } from '@rubixpe/node'
export async function POST(request: Request) {
const raw = await request.text()
const event = verifyWebhook({
payload: raw,
signature: request.headers.get('Rubix-Signature'),
timestamp: request.headers.get('Rubix-Timestamp'),
secret: process.env.RUBIXPE_WEBHOOK_SECRET,
})
await queue.enqueue(event)
return new Response(null, { status: 200 })
}| Event | Product | Meaning |
|---|---|---|
| payout.completed | RubixSwitch | Funds credited to the beneficiary account and the ledger entry finalised. |
| payout.reversed | RubixSwitch | The rail returned the transfer and your pool balance has been restored. |
| collection.received | RubixSwitch | An inbound credit landed on a virtual account and matched an invoice. |
| verification.finished | RubixVerify | A verification journey reached a final approve, reject or manual-review decision. |
| order.routed | RubixRoute | An order was authorised through the gateway selected by the routing engine. |
| settlement.posted | RubixRoute | A settlement batch was posted with a reconciled fee and tax breakdown. |
Our integration engineers will review your handler design and replay production-shaped traffic at it in sandbox.