Welcome to Xendit’s latest documentation. For legacy content, access the previous documentation here or the previous API reference here.

Create Account Holder

Prev Next
Post
/account_holders

An Account Holder represents the legal entity that holds the Xendit Account that is created in your Platform. You will need to Create an Account to link the account holder with. The details that you need to provide in the request depend on the Account holders' legal entity type. Please refer to this guide for a comprehensive step-by-step as well as requirements for each country and entity type.

You will need to use Update Account API to link the Account Holder to the xenPlatform Account before the verification can begin.

You will need the Account Holder Write API key permission to perform this request

Security
HTTP
Type basic
Body parameters
Philippines Corporation
{
  "business_detail": {
    "type": "CORPORATION",
    "legal_name": "My Store Inc.",
    "trading_name": "John's Store",
    "description": "description here",
    "industry_category": "ELECTRONICS_AND_ACCESSORIES",
    "date_of_registration": "2023-02-02",
    "country_of_operation": "PH"
  },
  "individual_details": [
    {
      "given_names": "John",
      "surname": "Doe",
      "phone_number": "+63021234567",
      "email": "test@xendit.co",
      "nationality": "PH",
      "place_of_birth": "PH",
      "date_of_birth": "2000-02-02",
      "gender": "MALE",
      "type": "PIC",
      "role": "owner"
    }
  ],
  "address": {
    "country": "PH",
    "city": "Caloocan",
    "street_line1": "9th St",
    "street_line2": "Building 101",
    "district": "1st district",
    "province_state": "Metro Manila",
    "postal_code": "1400"
  },
  "kyc_documents": [
    {
      "type": "SEC_CERTIFICATE_REGISTRATION_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "ARTICLES_OF_INCORPORATION_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "NOTARIZED_SECRETARY_CERTIFICATE_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "LATEST_GIS_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "ACR_OR_IMMIGRANT_COR_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "SERVICE_AGREEMENT_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    }
  ],
  "website_url": "https://xendit.co",
  "phone_number": "+6381234567",
  "email": "test@xendit.co"
}
Expand All
object
business_detail
object (xenPlatform_business_detail) Required

An object containing the business detail of the Account Holder

type
string

The entity type of the business

Valid values[ "CORPORATION", "PARTNERSHIP", "SOLE_PROPRIETORSHIP", "INDIVIDUAL", "FOREIGN", "FOREIGN_SEC", "FOREIGN_NONSEC" ]
legal_name
string

Legal name of the business. This must match the documentation submitted.

trading_name
string

Trading or brand name of the business. This will be the name that appears to endpayer on payment page.

description
string

Description of the business. Please specify what business model or goods and services that the business provide. Max 1000 characters.

industry_category
string

One of our accepted Industry Category Codes depending on your entity type and country of operation.

Refer to the list of accepted industry category codes here

date_of_registration
string

Business registration date in YYYY-MM-DD

country_of_operation
string

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
individual_details
Array of object (xenPlatform_individual_detail) Required
object

An object containing the individual details of the Account Holder. This could be the details of the business owner, director etc. You may submit multiple PICs (Person in Charge) for your business in this object.

type
string

A minimum 1 Incorporator and 1 PIC is required when they need to activate Cards capabilities. Whereas 1 PIC is required when they need to activate Gcash capabilities. Please see more details here

Valid values[ "PIC", "Incorporator" ]
role
string

This role specifies the role of the PIC or Incorporator. E.g. Owner, Director, Administrator.

given_names
string Required

First and middle name (if any) of the account holder

Max length255
surname
string Required

Surname or family name of the account holder

Max length255
phone_number
string Required

The contact number of the Account Holder in E.164 format. This may also be a landline.

Max length30
email
string Required

The email address of the account holder

Max length255
nationality
string

Country code for customer's nationality (ISO 3166-2 Country Code)

place_of_birth
string

City or other relevant location of the account holder's birth place

date_of_birth
string

Date of birth of the customer in YYYY-MM-DD

gender
string

The gender of the account holder

Valid values[ "male", "female", "other" ]
tax_identification_number
string

Tax Identification Number of the account holder. This parameter is required when they need to activate Cards capabilities with USD or recurring capabilities.

Please see more details here

address
object (xenPlatform_address)

An address object.

country
string Required

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
city
string Required

City, village or town

province_state
string Required

Province, state or region

street_line1
string Required

Line 1 of street address e.g street number and name

Max length255
street_line2
string Required

Line 2 of street address e.g building name or apartment number

Max length255
district
string Required

District

sub_district
string Required

Sub-district

postal_code
string Required

Zip or postal code

address
object (xenPlatform_address) Required

An address object.

country
string Required

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
city
string Required

City, village or town

province_state
string Required

Province, state or region

street_line1
string Required

Line 1 of street address e.g street number and name

Max length255
street_line2
string Required

Line 2 of street address e.g building name or apartment number

Max length255
district
string Required

District

sub_district
string Required

Sub-district

postal_code
string Required

Zip or postal code

kyc_documents
Array of object (xenPlatform_kyc_document) Required
object

A KYC document file for Account Holder verification

country
string

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
type
string

The type of the legal or KYC requirements document

Refer to the list of Required KYC Documents for all countries here

expires_at
string

Expiry date of the document if relevant. Format YYYY-MM-DD

file_id
string

The file ID returned by the Upload API

website_url
string (email) Required

A valid website associated with the business

Max length255
Examplemystore.com
phone_number
string (phone) Required

A valid phone number associated with the business

Max length30
Example62123456789
email
string (email) Required

A valid email address associated with the object

Max length255
Exampletest@example.co
Responses
200
Philippines Corporation
{
  "id": "4376b7b0-1c44-46be-8640-828f79cdc8be",
  "business_detail": {
    "type": "CORPORATION",
    "legal_name": "My Store Inc.",
    "trading_name": "John's Store",
    "description": "description here",
    "industry_category": "ELECTRONICS_AND_ACCESSORIES",
    "date_of_registration": "2023-02-02T00:00:00.000Z",
    "country_of_operation": "PH"
  },
  "individual_details": [
    {
      "given_names": "John",
      "surname": "Doe",
      "phone_number": "+63021234567",
      "email": "test@xendit.co",
      "nationality": "PH",
      "place_of_birth": "PH",
      "date_of_birth": "2000-02-02",
      "gender": "MALE",
      "type": "PIC",
      "role": "owner"
    }
  ],
  "address": {
    "country": "PH",
    "city": "Caloocan",
    "street_line1": "9th St",
    "street_line2": "Building 101",
    "district": "1st district",
    "province_state": "Metro Manila",
    "postal_code": "1400"
  },
  "kyc_documents": [
    {
      "type": "SEC_CERTIFICATE_REGISTRATION_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "ARTICLES_OF_INCORPORATION_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "NOTARIZED_SECRETARY_CERTIFICATE_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "LATEST_GIS_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "ACR_OR_IMMIGRANT_COR_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    },
    {
      "type": "SERVICE_AGREEMENT_DOCUMENT",
      "country": "PH",
      "file_id": "63f8719642f5856dcb142bd2"
    }
  ],
  "website_url": "https://xendit.co",
  "phone_number": "+6381234567",
  "email": "test@xendit.co",
  "kyc": {
    "status": "NOT_VERIFIED"
  },
  "created_at": "2023-03-30T11:41:57.881Z",
  "updated_at": "2023-03-30T11:44:01.122Z"
}
Expand All
object
id
string

The unique ID of an Account Holder object

business_detail
object (xenPlatform_business_detail)

An object containing the business detail of the Account Holder

type
string

The entity type of the business

Valid values[ "CORPORATION", "PARTNERSHIP", "SOLE_PROPRIETORSHIP", "INDIVIDUAL", "FOREIGN", "FOREIGN_SEC", "FOREIGN_NONSEC" ]
legal_name
string

Legal name of the business. This must match the documentation submitted.

trading_name
string

Trading or brand name of the business. This will be the name that appears to endpayer on payment page.

description
string

Description of the business. Please specify what business model or goods and services that the business provide. Max 1000 characters.

industry_category
string

One of our accepted Industry Category Codes depending on your entity type and country of operation.

Refer to the list of accepted industry category codes here

date_of_registration
string

Business registration date in YYYY-MM-DD

country_of_operation
string

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
individual_details
Array of object (xenPlatform_individual_detail)
object

An object containing the individual details of the Account Holder. This could be the details of the business owner, director etc. You may submit multiple PICs (Person in Charge) for your business in this object.

type
string

A minimum 1 Incorporator and 1 PIC is required when they need to activate Cards capabilities. Whereas 1 PIC is required when they need to activate Gcash capabilities. Please see more details here

Valid values[ "PIC", "Incorporator" ]
role
string

This role specifies the role of the PIC or Incorporator. E.g. Owner, Director, Administrator.

given_names
string

First and middle name (if any) of the account holder

Max length255
surname
string

Surname or family name of the account holder

Max length255
phone_number
string

The contact number of the Account Holder in E.164 format. This may also be a landline.

Max length30
email
string

The email address of the account holder

Max length255
nationality
string

Country code for customer's nationality (ISO 3166-2 Country Code)

place_of_birth
string

City or other relevant location of the account holder's birth place

date_of_birth
string

Date of birth of the customer in YYYY-MM-DD

gender
string

The gender of the account holder

Valid values[ "male", "female", "other" ]
tax_identification_number
string

Tax Identification Number of the account holder. This parameter is required when they need to activate Cards capabilities with USD or recurring capabilities.

Please see more details here

address
object (xenPlatform_address)

An address object.

country
string

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
city
string

City, village or town

province_state
string

Province, state or region

street_line1
string

Line 1 of street address e.g street number and name

Max length255
street_line2
string

Line 2 of street address e.g building name or apartment number

Max length255
district
string

District

sub_district
string

Sub-district

postal_code
string

Zip or postal code

address
object (xenPlatform_address)

An address object.

country
string

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
city
string

City, village or town

province_state
string

Province, state or region

street_line1
string

Line 1 of street address e.g street number and name

Max length255
street_line2
string

Line 2 of street address e.g building name or apartment number

Max length255
district
string

District

sub_district
string

Sub-district

postal_code
string

Zip or postal code

kyc_documents
Array of object (xenPlatform_kyc_document)
object

A KYC document file for Account Holder verification

country
string

The country (based on ISO 3166-1 Alpha-2) of incorporation for a business, or the country of residence for an individual.

Valid values[ "ID", "PH", "VN", "MY", "TH" ]
type
string

The type of the legal or KYC requirements document

Refer to the list of Required KYC Documents for all countries here

expires_at
string

Expiry date of the document if relevant. Format YYYY-MM-DD

file_id
string

The file ID returned by the Upload API

website_url
string (email)

A valid website associated with the business

Max length255
Examplemystore.com
phone_number
string (phone)

A valid phone number associated with the business

Max length30
Example62123456789
email
string (email)

A valid email address associated with the object

Max length255
Exampletest@example.co
kyc
object
status
string
Valid values[ "NOT_VERIFIED", "VERIFIED" ]
created_at
string

Timestamp of when the object was created

updated_at
string

Timestamp of when the object was updated

400

Validation error

API_VALIDATION_ERROR
{
  "error_code": "API_VALIDATION_ERROR",
  "message": "Inputs are failing validation. The errors field contains details about which fields are violating validation.",
  "errors": [
    "Detailed description here"
  ]
}
object

Inputs are failing validation. The errors field contains details about which fields are violating validation.

error_code
string
Valid values[ "API_VALIDATION_ERROR", "INVALID_CONFIGURATION", "INVALID_JSON_FORMAT", "TYPE_AND_CONFIGURATION_CONFLICT", "INVALID_SOURCE_OR_DESTINATION_ERROR", "INSUFFICIENT_BALANCE", "INVALID_FEE_AMOUNT", "DUPLICATE_ERROR", "INVALID_AMOUNT", "INSUFFICIENT_ACCOUNT_HOLDER_DATA" ]
message
string
errors
Array
OneOf
string
string
object
object
401

Validation error

INVALID_API_KEY
{
  "error_code": "INVALID_API_KEY",
  "message": "The API key format is invalid",
  "errors": [
    "Detailed description here"
  ]
}
object

Invalid API key

error_code
string
Valid values[ "INVALID_API_KEY" ]
message
string
errors
Array
OneOf
string
string
object
object
403

Validation error

REQUEST_FORBIDDEN_ERROR
{
  "error_code": "REQUEST_FORBIDDEN_ERROR",
  "message": "The API key in use does not have the necessary permissions to perform the request. Please assign the xenPlatform Account Holder Write permission for the key.",
  "errors": [
    "Detailed description here"
  ]
}
FEATURE_NOT_ACTIVATED
{
  "error_code": "FEATURE_NOT_ACTIVATED",
  "message": "This feature has not been activated for your account",
  "errors": [
    "Detailed description here"
  ]
}
object

Forbidden request

error_code
string
Valid values[ "REQUEST_FORBIDDEN_ERROR", "FEATURE_NOT_ACTIVATED", "DUPLICATE_REFERENCE", "XEN_PLATFORM_SUB_ACCOUNT_NOT_LIVE", "API_KEY_ENVIRONMENT_NOT_MATCH", "CHANNEL_ACTIVATION_IN_PROGRESS", "CHANNEL_HAS_BEEN_ACTIVATED", "KYC_VERIFICATION_IN_PROGRESS" ]
message
string
errors
Array
OneOf
string
string
object
object
404

Not found error

DATA_NOT_FOUND
{
  "error_code": "DATA_NOT_FOUND",
  "message": "Could not find payout with the corresponding ID. Please try again with a valid ID.",
  "errors": [
    "Detailed description here"
  ]
}
object

The object being referenced does not exist

error_code
string
Valid values[ "DESTINATION_ACCOUNT_NOT_FOUND", "DATA_NOT_FOUND" ]
message
string
errors
Array
OneOf
string
string
object
object
500

Validation error

SERVER_ERROR
{
  "error_code": "SERVER_ERROR",
  "message": "Something unexpected, our developers have been notified to troubleshoot the issue",
  "errors": [
    "Detailed description here"
  ]
}
object

Server error

error_code
string
Valid values[ "SERVER_ERROR" ]
message
string
errors
Array
OneOf
string
string
object
object
Callbacks
Post
/{verification_callback_url}
Body parameters
Account Holder KYC Callback
{
  "event": "account_holder.kyc.status",
  "created": "2021-01-01T10:00:00Z",
  "business_id": "5fe2b0137b7d62542fe6d7de",
  "data": {
    "id": "57fb4e076fa3fa296b7f5a97",
    "created": "2021-01-01T10:00:00Z",
    "updated": "2021-01-01T10:00:00Z",
    "kyc": {
      "status": "PASSED",
      "verified_at": "2021-01-01T10:00:00Z",
      "requested_at": "2021-01-01T10:00:00Z",
      "kyc_passed_at": "2021-01-01T10:00:00Z"
    }
  }
}
Expand All
object
event
string

Event that occurred for this webhook

Valid values[ "account_holder.kyc.status" ]
Exampleaccount_holder.kyc.status
business_id
string

ID of your Account, use this in the for-user-id header to create transactions on behalf of your Account

created
string

Timestamp of when the webhook was sent

updated
string

Timestamp of when the webhook was updated

data
object
id
string

The unique ID of an Account Holder object

created
string

Timestamp of when the webhook was sent

updated
string

Timestamp of when the webhook was updated

kyc
object (xenPlatform_account_holder_kyc_response)
status
string
Valid values[ "PASSED", "FAILED", "RESUBMISSION_REQUIRED" ]
requested_at
string

Timestamp of when the object was updated

kyc_passed_at
string

Timestamp of when the object was updated

verified_at
string

Timestamp of when the object was updated

capabilities
Array of object (xenPlatform_account_holder_capability_response)
object

An object containing the details of the Account Holder capabilities activation process

type
string
channel_code
string
status
string
Valid values[ "LIVE", "VERIFICATION_IN_PROGRESS", "RESUBMISSION_REQUIRED", "DECLINED" ]
activated_at
string

Timestamp of when the object was updated

verified_at
string

Timestamp of when the object was updated

requested_at
string

Timestamp of when the object was updated

Responses
200

OK