API reference/Events

Core resource

Events

Every state change and access-token mutation writes an immutable B2bEvent. Events are append-only — once written, they cannot be modified. Delivery to subscribed webhook endpoints is fire-and-forget on emission.

Event catalog

Event typeEmitted on
transaction.createdPOST /transactions
transaction.access_link_generatedPOST /transactions/:id/access-tokens
transaction.participant_engagedFirst portal session exchange or approval
transaction.funding_initiatedPortal fund succeeds at creating the PaymentIntent
transaction.fundedpayment_intent.succeeded
transaction.releasedRelease succeeds end-to-end
transaction.refundedAdministrative refund path (post-Finovate)
transaction.cancelledPOST /transactions/:id/cancel
transaction.expiredexpires_at passed with no completion
access_token.revokedDELETE /access-tokens/:id
webhook.delivery_succeededEndpoint returned 2XX
webhook.delivery_failedEndpoint returned non-2XX or timed out

Envelope

Webhook deliveries wrap the event in a Stripe-compatible envelope:

Webhook envelopejson
{
  "id":         "b2bev_…",
  "type":       "transaction.funded",
  "created_at": "2026-05-04T14:23:12.000Z",
  "livemode":   false,
  "data": {
    "transaction": { "id": "b2btxn_…", "status": "funded", … }
  },
  "metadata":   { "stripe_payment_intent_id": "pi_…" }
}

Query via API

GET/api/v1/b2b/transactions/:id/events

Cursor pagination on starting_after, newest-first. Default limit 50, max 200. Scope: transactions:read.