Ask for an invitation
Menu

Webhook event

payout.signed

A key-holding member approved with a passkey and the co-signer added its signature. From here it cannot be cancelled.

Type
payout.signed
The object it carries
the payout object
Subscribe with
payout.signed, payout.* or *

Example payload

The body of the request your endpoint receives, shown here over several lines. On the wire it is compact JSON; check its signature over the bytes exactly as they arrive.

Example payload

{
  "id": "evt_m0hbky99kjewybzqkm2q2xw2",
  "object": "event",
  "livemode": true,
  "created": "2026-10-12T10:12:00.000Z",
  "type": "payout.signed",
  "api_version": "2026-10-11",
  "data": {
    "object": {
      "id": "po_351ggq5kz6kxwpfrhp5qh3b0",
      "object": "payout",
      "livemode": true,
      "created": "2026-10-12T09:30:00.000Z",
      "updated": "2026-10-12T10:12:00.000Z",
      "kind": "payout",
      "status": "signed",
      "pending_reason": null,
      "batch": null,
      "source": {
        "wallet": "wal_bsfw07hymawmda7gg8jsyy3g",
        "asset": "base:usdc",
        "amount": "250.000000"
      },
      "destination": {
        "saved_address": "dst_92jw0br3z1bzkk45ddjqcm6q",
        "address": "0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb",
        "network": "base",
        "asset": "base:usdc"
      },
      "delivery": {
        "rail": "direct",
        "amount_estimated": "250.000000",
        "route_fee": null,
        "fee_bearer": null
      },
      "value": {
        "amount": "250.00",
        "currency": "USD"
      },
      "description": "October green beans",
      "reference": "PO-2210",
      "network_fee": null,
      "requested_by": {
        "type": "api_key",
        "id": "key_6e3gg2c6ea176xxdek2nar6v"
      },
      "approved_by": "mem_ceh1wpzdrpk13cnpcjy9w0fa",
      "approval_url": null,
      "approval_expires_at": "2026-10-19T09:30:00.000Z",
      "transaction_hash": null,
      "failure_code": null,
      "cancellation_reason": null,
      "approved_at": "2026-10-12T10:12:00.000Z",
      "sent_at": null,
      "confirmed_at": null,
      "metadata": {
        "supplier_id": "s_19"
      }
    },
    "previous_attributes": {
      "status": "awaiting_approval",
      "approved_by": null,
      "approved_at": null
    }
  },
  "request": {
    "id": null,
    "idempotency_key": null
  },
  "pending_webhooks": 1
}

Fields of data.object

Fields of data.object in payout.signed
FieldIn this example
id"po_351ggq5kz6kxwpfrhp5qh3b0"
object"payout"
livemodetrue
created"2026-10-12T09:30:00.000Z"
updated"2026-10-12T10:12:00.000Z"
kind"payout"
status"signed"
pending_reasonnull
batchnull
sourceAn object with wallet, asset, amount
destinationAn object with saved_address, address, network, asset
deliveryAn object with rail, amount_estimated, route_fee, fee_bearer
valueAn object with amount, currency
description"October green beans"
reference"PO-2210"
network_feenull
requested_byAn object with type, id
approved_by"mem_ceh1wpzdrpk13cnpcjy9w0fa"
approval_urlnull
approval_expires_at"2026-10-19T09:30:00.000Z"
transaction_hashnull
failure_codenull
cancellation_reasonnull
approved_at"2026-10-12T10:12:00.000Z"
sent_atnull
confirmed_atnull
metadataAn object with supplier_id

What each field means is on the page of the payout object. data.previous_attributes holds the old values of exactly the fields that changed: here status, approved_by, approved_at.

Endpoints behind it

Calls that change payouts. An event is also sent when a payer, the network, a timer or a person in the dashboard causes the change; the sentence above says which.