Skip to content
Developer docs
⌘ K
Dashboard ↗

Webhook events

payout.account_required

Sent when a scheduled run creates no payout for a partner because the schedule waits for a Stripe account and the partner has none. Sent once per wait: later runs that skip the same partner send nothing until the partner is paid or has nothing payable at a run. The amounts are what the run would have paid. The rewards stay payable and roll over.

Example payload

This illustrative payload follows the current event validator. Amounts use minor units.

json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "companyId": "company-example",
  "type": "payout.account_required",
  "data": {
    "partnerId": "partner-example",
    "partnerExternalId": "merchant-partner-001",
    "currency": "CAD",
    "amountCents": 500,
    "nettedDebtCents": 500,
    "netAmountCents": 500,
    "integrationId": "integrationId-example",
    "schedule": {
      "dueOn": "2026-10-11",
      "approvedBefore": "2026-10-11T12:00:00.000Z"
    }
  },
  "createdAt": "2026-10-11T12:00:00.000Z"
}

Payload fields

FieldTypeRequiredDetails
partnerIdstringYes
partnerExternalIdstringYes
currency"CAD", "USD", "EUR", "GBP"Yes
amountCentsintegerYesminimum 0. maximum 1000000000000
nettedDebtCentsintegerYesminimum 0. maximum 1000000000000
netAmountCentsintegerYesminimum 0. maximum 1000000000000
integrationIdstringYes
scheduleobjectYes

schedule

FieldTypeRequiredDetails
schedule.dueOnstringYes
schedule.approvedBeforestringYesdate-time

Payload schema

json
{
  "type": "object",
  "properties": {
    "partnerId": {
      "type": "string",
      "minLength": 1
    },
    "partnerExternalId": {
      "type": "string",
      "minLength": 1
    },
    "currency": {
      "type": "string",
      "enum": [
        "CAD",
        "USD",
        "EUR",
        "GBP"
      ]
    },
    "amountCents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "nettedDebtCents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "netAmountCents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "integrationId": {
      "type": "string",
      "minLength": 1
    },
    "schedule": {
      "type": "object",
      "properties": {
        "dueOn": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "approvedBefore": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "dueOn",
        "approvedBefore"
      ],
      "additionalProperties": true
    }
  },
  "required": [
    "partnerId",
    "partnerExternalId",
    "currency",
    "amountCents",
    "nettedDebtCents",
    "netAmountCents",
    "integrationId",
    "schedule"
  ],
  "additionalProperties": true
}

Handle delivery

Verify the signature over the raw body before parsing JSON. Check that the body ID matches Grizzlee-Event-Id. Process each ID once, since delivery can repeat.