Documentation Index

Fetch the complete documentation index at: https://docs.xendit.co/llms.txt

Use this file to discover all available pages before exploring further.

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.

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",
      "account_details": {
        "currency": "PHP",
        "account_country": "PH",
        "account_holder_name": "Maria Santos",
        "account_number": "09171234567",
        "routing_type_1": "wallet",
        "routing_value_1": "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" ]
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_line1
string

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

Max length255
street_line2
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_code", "iban", "sort_code", "aba", "bsb", "wallet", "clabe" ]
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

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_line1
string

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

Max length255
street_line2
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
underlying_documents
Array of object (Payouts_v3_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.