For archived content, access the previous documentation here or the previous API reference here.

Payout Webhook

Prev Next
Post
/v3_payout_webhook

Webhook sent when payout status changes.

Events:

  • v3_payout.succeeded — The payout has already succeeded. The partner bank has credited the funds to the beneficiary.
  • v3_payout.failed — The payout has already failed. The partner bank rejected the transaction or there was an issue processing the transaction.
  • v3_payout.reversed — The payout that was originally in succeeded status received a bounceback or reversal of funds from the partner bank. Funds have been refunded back to the merchant's available balance.
  • v3_payout.rejected — The payout has been rejected due to compliance assessment. Funds have been refunded back to the merchant’s available balance.
  • v3_payout.pending_compliance — The payout requires further compliance assessment. Prepare for additional requests for information from Xendit’s compliance team.

Configure your callback URL at https://dashboard.xendit.co/settings/developers#webhooks under the PAYOUT section.

Security
HTTP
Type Basic

Secret API Key authentication. Required permission: MONEY-OUT

Body parameters
Payout Failed Webhook

Payout Failed Webhook

{
  "event": "v3_payout.failed",
  "business_id": "6018306aa16ad90cb3c43ba7",
  "created": "2025-06-11T08:01:30Z",
  "data": {
    "payout_id": "po-b2c3d4e5-f6a7-8901-bcde-f23456789012",
    "status": "FAILED",
    "reference_id": "payout-ref-002",
    "type": "B2C",
    "source_currency": "PHP",
    "source_amount": 50000,
    "destination_currency": "PHP",
    "destination_amount": 50000,
    "sender": {
      "type": "BUSINESS",
      "business_name": "Acme Corp"
    },
    "recipient": {
      "type": "INDIVIDUAL",
      "given_name": "Maria",
      "surname": "Santos",
      "relationship": "CUSTOMER",
      "details": {
        "personal_mobile_number": "+639171234567"
      },
      "address": {
        "country": "PH",
        "street_line_1": "123 Rizal Avenue",
        "city": "Manila",
        "province_state": "Metro Manila",
        "postal_code": "1000"
      },
      "account_details": {
        "currency": "PHP",
        "account_country": "PH",
        "account_holder_name": "Maria Santos",
        "account_number": "09171234567",
        "routing_type_1": "WALLET",
        "routing_value_1": "PH_GCASH"
      }
    },
    "source_of_fund": "BUSINESS_REVENUE",
    "purpose_code": "SALARY",
    "description": "Freelancer payment",
    "failure_code": "INVALID_DESTINATION",
    "created": "2025-06-11T08:00:00Z",
    "updated": "2025-06-11T08:01:30Z",
    "business_id": "6018306aa16ad90cb3c43ba7"
  }
}
Payout Succeeded Webhook

Payout Succeeded Webhook

{
  "event": "v3_payout.succeeded",
  "business_id": "6018306aa16ad90cb3c43ba7",
  "created": "2025-06-10T11:45:00Z",
  "data": {
    "payout_id": "po-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "SUCCEEDED",
    "reference_id": "payout-ref-001",
    "type": "B2C",
    "source_currency": "IDR",
    "source_amount": 1000000,
    "destination_currency": "USD",
    "destination_amount": 63,
    "sender": {
      "type": "BUSINESS",
      "business_name": "Acme Corp"
    },
    "recipient": {
      "type": "INDIVIDUAL",
      "given_name": "John",
      "surname": "Doe",
      "relationship": "CUSTOMER",
      "account_details": {
        "currency": "USD",
        "account_country": "US",
        "account_holder_name": "John Doe",
        "account_number": "1234567890",
        "routing_type_1": "ABA",
        "routing_value_1": "021000021"
      }
    },
    "source_of_fund": "BUSINESS_REVENUE",
    "purpose_code": "SALARY",
    "description": "Monthly salary payment",
    "created": "2025-06-10T10:30:00Z",
    "updated": "2025-06-10T11:45:00Z",
    "business_id": "6018306aa16ad90cb3c43ba7"
  }
}
Expand All
object

Webhook event payload sent when payout status changes

event
string Required

Type of the event

Valid values[ "v3_payout.succeeded", "v3_payout.failed", "v3_payout.reversed", "v3_payout.rejected", "v3_payout.pending_compliance" ]
business_id
string Required

Xendit's unique business ID

created
string (date-time) Required

Timestamp when the event was made. Format: ISO 8601, UTC+0

data
object Required

Payout Object

payout_id
string Required

Unique payout id in UUID format, prefixed with po-

status
string Required

Status of the payout. See Payout Status Lifecycle

Valid values[ "ACCEPTED", "PENDING_COMPLIANCE_REVIEW", "REJECTED", "ROUTING", "REQUESTED", "READY", "LOCKED", "EXPIRED", "FAILED", "SUCCEEDED", "CANCELLED", "REVERSED" ]
reference_id
string Required

ID provided by merchant to identify the request

type
string Required

Payout type

Valid values[ "B2B", "B2C", "C2C", "C2B" ]
processor_reference
string

Payout reference from Xendit's processor

source_currency
string

Origin currency of the Payout

Valid values[ "USD", "SGD", "IDR", "PHP", "MYR", "THB", "VND", "HKD", "MXN", "CNY", "KRW", "AUD", "EUR" ]
source_amount
integer

Origin amount of the Payout in minor units.

A minor unit is the smallest unit of a currency. Most currencies have 2 decimals, others have 0. Examples: PHP 10.00 → 1000, IDR 10 → 10.

destination_currency
string Required

Destination currency of the Payout

Valid values[ "USD", "SGD", "IDR", "PHP", "MYR", "THB", "VND", "HKD", "MXN", "CNY", "KRW", "AUD", "EUR" ]
destination_amount
integer Required

Destination amount of the Payout in minor units.

A minor unit is the smallest unit of a currency. Most currencies have 2 decimals, others have 0. Examples: PHP 10.00 → 1000, IDR 10 → 10.

sender
object Required

Contains sender information

type
string Required

Entity type of the sender

Valid values[ "INDIVIDUAL", "BUSINESS" ]
business_name
string

Name of the business sender. Required if type is BUSINESS

Max length50
given_name
string

First name of the sender. Required if type is INDIVIDUAL

Max length50
surname
string

Last name of the sender. Required if type is INDIVIDUAL

Max length50
given_name_non_roman
string

First non-roman name of the sender

Max length50
surname_non_roman
string

Last non-roman name of the sender

Max length50
details
object

Details of the sender

date_of_birth
string (date)

Date of birth

country_of_birth
string

Country of birth. Format: ISO 3166-2 Country Code

nationality
string

Nationality. Format: ISO 3166-2 Country Code

personal_id_type
string

Personal ID type

Valid values[ "BIRTH_CERTIFICATE", "BANK_STATEMENT", "DRIVING_LICENSE", "IDENTITY_CARD", "PASSPORT", "VISA", "BUSINESS_REGISTRATION", "BUSINESS_LICENSE" ]
personal_id_value
string

Personal ID value

Max length255
personal_id_expiration_date
string (date)

Personal ID expiration date

personal_id_country
string

Personal ID country of issuance. Format: ISO 3166-2 Country Code

personal_email
string (email)

Personal email

Max length50
personal_mobile_number
string

Personal mobile number. Supports E.164 international format and local formats

Min length7
Max length15
gender
string

Gender

Valid values[ "MALE", "FEMALE", "OTHER" ]
occupation
string

Occupation

Max length50
date_of_incorporation
string (date)

Date of incorporation of the business sender

registration_number
string

Registration number of the business sender

Max length50
business_phone_number
string

Phone number of the business sender

Min length7
Max length15
nature_of_business
string

Nature of business

Max length50
address
object

Address details of the sender

country
string

Country. Format: ISO 3166-2 Country Code

province_state
string

Province, state or region

Max length255
city
string

City, village or town

Max length255
street_line_1
string

Line 1 of street address e.g., building name and apartment number

Max length255
street_line_2
string

Line 2 of street address e.g., street number and name

Max length255
postal_code
string

ZIP/Postal Code

Max length255
recipient
object Required

Contains recipient information

type
string Required

Entity type of the recipient

Valid values[ "INDIVIDUAL", "BUSINESS" ]
business_name
string

Name of the business recipient. Required if type is BUSINESS

Max length50
given_name
string

First name of the recipient. Required if type is INDIVIDUAL

Max length50
surname
string

Last name of the recipient. Required if type is INDIVIDUAL

Max length50
given_name_non_roman
string

First non-roman name of the recipient

Max length50
surname_non_roman
string

Last non-roman name of the recipient

Max length50
relationship
string Required

Recipient's relationship to the sender in the context of the transaction

Valid values[ "BRANCH_REPRESENTATIVE_OFFICE", "BUSINESS_PARTNER", "CHILDREN", "CREDITOR", "CUSTOMER", "DEBTOR", "EMPLOYEE", "EX_SPOUSE", "FRANCHISEE_FRANCHISOR", "GRANDPARENTS", "HOLDING_COMPANY", "MAID", "OWNSELF", "PARENTS", "RELATIVE", "SIBLING", "SPOUSE", "SUBSIDIARY_COMPANY", "SUPPLIER", "FRIEND", "GOVERNMENT_BODY", "EDUCATION_INSTITUTION", "NON_GOVERNMENT_BODY", "OTHER" ]
details
object

Details of the recipient

date_of_birth
string (date)

Date of birth

country_of_birth
string

Country of birth. Format: ISO 3166-2 Country Code

nationality
string

Nationality. Format: ISO 3166-2 Country Code

personal_id_type
string

Personal ID type

Valid values[ "BIRTH_CERTIFICATE", "BANK_STATEMENT", "DRIVING_LICENSE", "IDENTITY_CARD", "PASSPORT", "VISA", "BUSINESS_REGISTRATION", "BUSINESS_LICENSE" ]
personal_id_value
string

Personal ID value

Max length255
personal_id_expiration_date
string (date)

Personal ID expiration date

personal_id_country
string

Personal ID country of issuance. Format: ISO 3166-2 Country Code

personal_email
string (email)

Personal email

Max length50
personal_mobile_number
string

Personal mobile number. Supports E.164 international format and local formats

Min length7
Max length15
gender
string

Gender

Valid values[ "MALE", "FEMALE", "OTHER" ]
occupation
string

Occupation

Max length50
date_of_incorporation
string (date)

Date of incorporation of the business recipient

registration_number
string

Registration number of the business recipient

Max length50
business_phone_number
string

Phone number of the business recipient

Min length7
Max length15
nature_of_business
string

Nature of business

Max length50
account_details
object Required

Recipient's account details where the payment will be credited

currency
string Required

Currency of the account. Format: ISO 4217 Currency Code

account_country
string Required

Account country code. Format: ISO 3166-2 Country Code

account_holder_name
string Required

Account name of the recipient's account

Max length255
account_number
string Required

Account number

routing_type_1
string Required

Routing code type

Valid values[ "SWIFT", "IBAN", "SORT_CODE", "ABA", "BSB", "WALLET", "CLABE", "MOBILE_NO", "BUSINESS_REG_NO", "NATIONAL_ID" ]
routing_value_1
string Required

Routing type value

routing_type_2
string

Routing code subtype (reserved for future supported corridors)

routing_value_2
string

Routing subtype value

account_type
string

Account type

Valid values[ "CHECKING", "SAVINGS" ]
address
object Required

Address details of the recipient

country
string

Country. Format: ISO 3166-2 Country Code

province_state
string

Province, state or region

Max length255
city
string

City, village or town

Max length255
street_line_1
string

Line 1 of street address e.g., building name and apartment number

Max length255
street_line_2
string

Line 2 of street address e.g., street number and name

Max length255
postal_code
string

ZIP/Postal Code

Max length255
source_of_fund
string

Source of fund of the payout

Valid values[ "INVESTMENT", "PERSONAL_SAVINGS", "BUSINESS_REVENUE", "LEGACY", "BUSINESS_ARRANGEMENT", "LOAN", "SALARY", "OTHER" ]
purpose_code
string

Purpose of the payout

Valid values[ "SELF", "FAMILY", "EDUCATION", "MEDICAL", "HOTEL", "TRAVEL", "UTILITIES", "LOAN_REPAYMENT", "TAX_PAYMENT", "RESIDENCE_PURCHASE", "RESIDENCE_RENT", "INSURANCE", "MUTUAL_FUND", "SHARES_INVESTMENT", "DONATION", "ADVERTISING", "ROYALTY_FEES", "BROKER_FEES", "ADVISORS", "OFFICE", "CONSTRUCTION", "SHIPMENT", "EXPORT", "DELIVERY", "TRADES", "SALARY", "REFUND", "OTHER" ]
description
string

Free text description shown in recipient's bank statement, if supported

Max length100
receipt_notification
object

Configuration for sending payout receipt notifications via email

email_to
Array of string Required

List of email addresses to send the payout receipt to

string (email)
email_cc
Array of string

List of email addresses to CC on the payout receipt

string (email)
email_bcc
Array of string

List of email addresses to BCC on the payout receipt

string (email)
underlying_documents
Array of object (UnderlyingDocument)

Underlying document attachments

object
type
string

Type of the document

Valid values[ "INVOICE", "PURCHASE_ORDER", "CONTRACT", "DELIVERY_SLIP", "CUSTOMS_DECLARATION", "BILL_OF_LADING", "OTHERS" ]
reference_no
string

Reference number of the document

Max length100
file_id
string

File ID of the document

created
string (date-time) Required

Timestamp when the payout was made. Format: ISO 8601, UTC+0

updated
string (date-time) Required

Timestamp when the payout was last updated. Format: ISO 8601, UTC+0

estimated_arrival_time
string (date-time)

Estimated time of arrival of funds in destination account. UTC+0

failure_code
string

Failure reason of the Payout. See Payout Status Lifecycle

Valid values[ "INSUFFICIENT_BALANCE", "INVALID_DESTINATION", "DESTINATION_MAXIMUM_LIMIT", "ACCOUNT_NAME_MISMATCH", "REJECTED_BY_CHANNEL", "TEMPORARY_TRANSFER_ERROR", "TRANSFER_ERROR", "SLS_SENDER", "SLS_RECIPIENT" ]
business_id
string Required

Your Xendit Business ID

metadata
object

Object of additional information the merchant may use

property*
Responses
204

There is no content to send for this request, but the headers may be useful.