Skip to main content
Payout webhooks tell you when your own funds move from Dodo Payments to your bank account. Use them to reconcile payouts in your accounting systems without polling the List Payouts endpoint.

Payout Webhook Events

A payout emits an event at each stage of its lifecycle. The stages match the payout statuses shown in your dashboard.
payout.created was previously emitted as payout.not_initiated. If an existing endpoint filters on payout.not_initiated, update the filter to payout.created so it keeps matching. The status field on the payload still reports not_initiated at this stage.

Handling Payout Events

Payouts are about your own money rather than a customer’s, so these events usually feed bookkeeping and internal alerting rather than customer-facing flows.
Handling payout events
Always verify the webhook signature before processing — see the Webhooks guide for setup. The handler above omits verification for brevity.
Payout events are neither terminal nor strictly ordered. payout.failed can arrive after payout.success when a bank returns the transfer, and payout.success can arrive after payout.failed when a failed payout is later recovered. Treat the status field on the payload as the current state rather than assuming the last event you received is final.

Payout Status

The payout object reports its progress through a single field:
refunds, chargebacks, and tax on the payload are deprecated. Use the payout breakup endpoints for a detailed breakdown instead.

Payout Structure

How payouts are scheduled and calculated, and what each payout status means.

Balances & Wallets

Track wallet balances and the ledger behind each payout.

Webhook Payload Schema

amount
integer<int64>
required

The total amount of the payout.

business_id
string
required

The unique identifier of the business associated with the payout.

chargebacks
integer<int64>
required
deprecated

The total value of chargebacks associated with the payout.

created_at
string<date-time>
required

The timestamp when the payout was created, in UTC.

currency
enum<string>
required

The currency of the payout, represented as an ISO 4217 currency code.

Available options:
AED,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BWP,
BYN,
BZD,
CAD,
CHF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SEK,
SGD,
SHP,
SLE,
SLL,
SOS,
SRD,
SSP,
STN,
SVC,
SZL,
THB,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW
fee
integer<int64>
required

The fee charged for processing the payout.

payment_method
string
required

The payment method used for the payout (e.g., bank transfer, card, etc.).

payout_id
string
required

The unique identifier of the payout.

refunds
integer<int64>
required
deprecated

The total value of refunds associated with the payout.

status
enum<string>
required

The current status of the payout.

Available options:
not_initiated,
in_progress,
on_hold,
failed,
success
tax
integer<int64>
required
deprecated

The tax applied to the payout.

updated_at
string<date-time>
required

The timestamp when the payout was last updated, in UTC.

name
string | null

The name of the payout recipient or purpose.

payout_document_url
string | null

The URL of the document associated with the payout.

remarks
string | null

Any additional remarks or notes associated with the payout.

Last modified on August 1, 2026