Register Beneficiary
Endpoint: POST /v2/gc/beneficiaries
Description: Register or update a beneficiary (payee/supplier) for payout operations. Supports overseas suppliers, domestic suppliers, and withdrawal accounts across SWIFT and LOCAL clearing networks.
Request
Request Body Field Descriptions (JSON)
requestId
string(32)
Yes
Merchant-generated unique request ID, maintained unique by the merchant. Used for idempotency.
type
string(32)
Yes
Beneficiary reporting business type. Enum: OVERSEAS_SUPPLIER | DOMESTIC_SUPPLIER | WITHDRAW_ACCOUNT.
supplierType
string(32)
Yes
Beneficiary entity type. Enum: ENTERPRISE | INDIVIDUAL.
accountType
string(3)
Yes
Beneficiary bank account type. Enum: PRI (personal) | PUB (enterprise, default). See: Payee Reporting Elements.
operate
string(6)
Conditional
Operation type. Enum: ADD (default) | UPDATE. Required when updating an existing beneficiary.
subMerchantId
string(32)
Conditional
Sub-merchant identifier. Optional in general; required when the merchant operates in PSP mode.
recType
string(16)
Conditional
Beneficiary account type. If not provided, the system defaults to BANK_ACCOUNT. Enum: BANK_ACCOUNT (default) | WALLET_ACCOUNT | GFC_ACCOUNT. Required when type=OVERSEAS_SUPPLIER.
businessType
string(64)
Conditional
Nature of the business relationship with the payee. Pass one value per request. Enum (16 values): GOODS_PURCHASE | ADVERTISING_SERVICE | LOGISTICS_SERVICE | TAX_DECLARATION | INSURANCE_FEE | LEGAL_CONSULTING | FINANCIAL_SERVICE | TECHNICAL_SERVICE | TRAVEL_PROCUREMENT | STUDY_ABROAD | AFFILIATED_COMPANY | EMPLOYEE_COMPENSATION | COMMISSION_PAYMENT | OPERATION_RELATED | OPERATION_AGENCY | OTHERS. Required when type=OVERSEAS_SUPPLIER (also required when type=DOMESTIC_SUPPLIER per this logic, though that path is currently unreachable since DOMESTIC_SUPPLIER is disabled in the Merchant Portal UI).
businessDetail
string(256)
Conditional
Business type segmentation / further detail. Example: Medical devices. Required when businessType is "other" / uncategorized.
country
string(3)
Conditional
ISO 3166-1 alpha-3 country code of the beneficiary's location. See: Country/Region list. Required when type=DOMESTIC_SUPPLIER, accountCurrency=CNY, supplierType=INDIVIDUAL, and the individual is a foreign national. Example: CHN.
address
string(256)
Conditional
Beneficiary's address. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER and recType=BANK_ACCOUNT/WALLET_ACCOUNT) or (type=WITHDRAW_ACCOUNT and bankCountry=CN).
clearingType
string(5)
Conditional
Clearing network to use. Enum: SWIFT | LOCAL. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT) and recType=BANK_ACCOUNT/WALLET_ACCOUNT.
accountName
string(128)
Conditional
Bank account beneficiary name (when recType=BANK_ACCOUNT) or wallet account name (when recType=WALLET_ACCOUNT). See: Payee Reporting Elements. Required when recType=BANK_ACCOUNT or WALLET_ACCOUNT.
accountNameLocal
string(64)
No
Beneficiary account name in local language (e.g. Japanese half-width Katakana for JP LOCAL clearing). See: Additional Field Validation Rules for format requirements per country.
accountNumber
string(128)
Conditional
Bank account number (when recType=BANK_ACCOUNT) or wallet account ID (when recType=WALLET_ACCOUNT). See: Payee Reporting Elements. Required when recType=BANK_ACCOUNT or WALLET_ACCOUNT.
accountCurrency
string(3)
Conditional
ISO 4217 currency code of the beneficiary's receiving account (e.g. USD, EUR, CNY). Required when recType=BANK_ACCOUNT or WALLET_ACCOUNT. When type=DOMESTIC_SUPPLIER, only CNY is supported.
bankName
string(70)
Conditional
Beneficiary's bank name (when recType=BANK_ACCOUNT) or wallet provider name (when recType=WALLET_ACCOUNT). See: Payee Reporting Elements. Required when recType=BANK_ACCOUNT or WALLET_ACCOUNT.
bankCountry
string(3)
Conditional
ISO 3166-1 alpha-3 country code of the beneficiary's bank. See: Country/Region list. Required when (type=OVERSEAS_SUPPLIER and recType=BANK_ACCOUNT/WALLET_ACCOUNT) or (type=WITHDRAW_ACCOUNT and accountCurrency=CNY). Example: USA. required whenever type=WITHDRAW_ACCOUNT unconditionally (no accountCurrency=CNY restriction) — see reconciliation note below.
swiftCode
string(11)
Conditional
Bank SWIFT/BIC code. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER and recType=BANK_ACCOUNT/WALLET_ACCOUNT) or (type=WITHDRAW_ACCOUNT and bankCountry≠CN). Example: DHBKHKHH.
bankCode
string(3)
Conditional
3-digit bank code. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), clearingType=LOCAL, bankCountry=JP. Recommended when clearingType=LOCAL, bankCountry=HK.
branchCode
string(6)
Conditional
Branch code. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT) and bankCountry=BR/JP/TR.
sortCode
string(6)
Conditional
6-digit sort code (fixed-length, digits only). See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=GB, clearingType=LOCAL.
firstName
string(64)
Conditional
Beneficiary's first name. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER, recType=BANK_ACCOUNT/WALLET_ACCOUNT, accountType=PRI) or (type=WITHDRAW_ACCOUNT, accountType=PRI).
middleName
string(64)
Conditional
Beneficiary's middle name. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER, recType=BANK_ACCOUNT/WALLET_ACCOUNT, accountType=PRI) or (type=WITHDRAW_ACCOUNT, accountType=PRI), and the beneficiary has a middle name.
lastName
string(64)
Conditional
Beneficiary's last name / surname. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER, recType=BANK_ACCOUNT/WALLET_ACCOUNT, accountType=PRI) or (type=WITHDRAW_ACCOUNT, accountType=PRI).
idType
string(64)
Conditional
Beneficiary identification document type. See: Payee Reporting Elements. Enum: PASSPORT | NATIONAL_ID | DRIVING_LICENSE | SOCIAL_SECURITY | TAX_ID | SENIOR_CITIZEN_ID | BIRTH_CERTIFICATE | VILLAGE_ELDER_ID | RESIDENT_CARD | ALIEN_REGISTRATION | PAN_CARD | VOTERS_ID | HEALTH_CARD | EMPLOYER_ID | OTHER. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=BR/AR/CO/SA, clearingType=LOCAL.
idNumber
string(64)
Conditional
Beneficiary identification document number. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=AR/BR/CO/SA/NG/AU/JP/MX/PK, clearingType=LOCAL; or type=WITHDRAW_ACCOUNT, bankCountry=CN.
province
string(100)
Conditional
Province/state where the beneficiary is located. Required when: (1) (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=US/CA/AU/ID, clearingType=LOCAL; or (2) type=DOMESTIC_SUPPLIER, bankCountry=CN, accountType=PRI and accountNumber does not start with 62; or type=DOMESTIC_SUPPLIER, bankCountry=CN, accountType=PUB and bankName is not in the exempted bank list. See: Payee Reporting Elements.
city
string(100)
Conditional
City where the beneficiary is located. Required when: (1) (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=US/CA/AU/ID, clearingType=LOCAL; or (2) type=DOMESTIC_SUPPLIER, bankCountry=CN, accountType=PRI and accountNumber does not start with 62; or type=DOMESTIC_SUPPLIER, bankCountry=CN, accountType=PUB and bankName is not in the exempted bank list. See: Payee Reporting Elements.
postCode
string(64)
Conditional
Postal code of the beneficiary's location. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=US/SA/AU/CA/BR, clearingType=LOCAL.
abaNumber
string(9)
Conditional
9-digit ABA routing number (fixed-length, digits only). See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=CA/US, clearingType=LOCAL.
bsbCode
string(6)
Conditional
6-digit BSB code (fixed-length, digits only). See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=AU, clearingType=LOCAL.
ifsCode
string(64)
Conditional
IFSC code for Indian bank routing. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=IN, clearingType=LOCAL.
accountNoType
string(64)
Conditional
Account number type. Enum: CHECKING | SAVINGS. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=BR/AR/CO, clearingType=LOCAL.
string(128)
Conditional
Beneficiary's email address. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=IN/EG/BR, clearingType=LOCAL.
mobile
string(64)
Conditional
Beneficiary's mobile phone number in international format. See: Payee Reporting Elements. Required when (type=OVERSEAS_SUPPLIER or WITHDRAW_ACCOUNT), bankCountry=AE/PH/NG/IN/JP/KE/BR/CO, clearingType=LOCAL.
branchName
string(256)
Conditional
Branch name. See: List of banks not requiring branch details. Required when type=DOMESTIC_SUPPLIER, bankCountry=CN, and (accountType=PRI with accountNumber not starting with 62) or (accountType=PUB with bankName not in the exempted bank list).
loginName
string(256)
Conditional
Login username for the beneficiary's account at the partner. Required when recType=GFC_ACCOUNT.
merchantName
string(256)
Conditional
Contract/signing name of the beneficiary merchant. Required when recType=GFC_ACCOUNT.
accountHolder
string(512)
Conditional
Account holder relationship to the contracting entity. Enum: CONTRACT_SUBJECT | DIRECTOR | SHAREHOLDER | LEGALPERSON. Required when type=WITHDRAW_ACCOUNT.
supplierName
string(128)
No
Beneficiary / payee name.
alias
string(256)
No
Beneficiary alias / nickname for merchant-side reference.
vouchers
array (max 20 items, each string(512))
No
Business-related material file paths. Array of uploaded file paths. Supports jpg, jpeg, png, pdf, zip, rar, tar formats; max 20MB per file, max 20 files. After receiving the supplementary material notification, call the Beneficiary Supplement Material API to provide these. Example: ["gfc/UPLOAD/67a246a6-3b54-4519-9de1-bc825b3ee198.jpeg"].
bankAddress
string(128)
No
Address of the beneficiary's bank.
remark
string(128)
No
Free-text remark or note for this beneficiary.
webhookUrl
string(256)
No
Merchant-provided URL to receive asynchronous registration status notifications (BENEFICIARY_REGISTRATION webhook). Recommended.
fedWireNumber
string(64)
No
FedWire number. See: Payee Reporting Elements.
iban
string(64)
No
International Bank Account Number. See: Payee Reporting Elements.
routingNumber
string(64)
No
Bank routing number. See: Payee Reporting Elements.
streetAddress
string(105)
No
Beneficiary's permanent / residential address.
payeeExpiryDate
string(32)
No
Document expiration date for the beneficiary's identification.
isHighValuePayout
string(32)
No
Whether the payout amount exceeds 300 million VND. Enum: yes | no. Specific to certain channels and merchants; optional for others.
Request sample
This is a real captured request/response pair (not a fabricated illustrative example):
Response
Response Field Descriptions
data
object
Registered beneficiary details.
message
string
Response message.
neoResponseId
string
Unique NeoX response identifier (UUID).
There is no state field in the response envelope. Every Global Collections response is {code, data, message} plus an optional neoResponseId.
data object fields:
id
string
Unique NeoX identifier for the registered beneficiary. Use this ID in subsequent payout requests and in Get/Update/Supplement calls.
requestId
string
Echoes the merchant-provided requestId.
status
string
Registration status observed value: PENDING. Other status values appear in Get Detail Beneficiary and the Webhook (e.g. WAIT_SUPPLEMENT, APPROVED).
The response uses id as the beneficiary identifier on create.
Response sample
Example cURL
Notes
Requires Bearer token in the Authorization header.
The Accept-Language header can be used to specify the response language (Support:
vi,en).Use a unique
requestIdfor each registration request to avoid duplicate beneficiary records.To update an existing beneficiary, use
PUT /v2/gc/beneficiaries— see Update Beneficiary below.The
idreturned in the response should be stored by the merchant and referenced in payout requests and in Get/Update/Supplement calls.A
statusofPENDINGindicates the registration was accepted and is under review; poll Get Detail Beneficiary or listen for theBENEFICIARY_REGISTRATIONwebhook (see Webhook) for the final status.recTypedefaults toBANK_ACCOUNTif not explicitly provided.Conditional field requirements: Many fields are conditionally required based on the combination of
type,bankCountry,clearingType,recType,accountType, andsupplierType. Refer to the detailed conditions in the field descriptions above, and the{% hint %}notes marking where the Merchant Portal UI's own validation matrix is narrower than the documented API-level conditions. Key dependencies include:SWIFT clearing:
swiftCodeis required for overseas suppliers and withdrawal accounts whenbankCountry≠CN.LOCAL clearing: Country-specific fields (
abaNumber,bsbCode,sortCode,ifsCode,bankCode,branchCode,postCode,accountNoType,idType,idNumber,email,mobile) are required depending on the destination country.Individual payees (
accountType=PRI):firstName,lastNameare required;middleNameis required when applicable.GFC accounts (
recType=GFC_ACCOUNT):loginNameandmerchantNameare required.Withdrawal accounts (
type=WITHDRAW_ACCOUNT):accountHolderis always required.
vouchers(business-related materials) should be supplemented viaPOST /v2/gc/beneficiaries/supplement— see Supplement Beneficiary Material below. Supported formats:jpg,jpeg,png,pdf,zip,rar,tar; max 20MB per file, max 20 files.There is no
GET /v2/gc/beneficiary-banksendpoint — the list of supported beneficiary banks is not exposed via API today. See the notice on Get List Beneficiary Banks.Country codes follow ISO 3166-1 alpha-3 (e.g.
USA,GBR,CHN).Currency codes follow ISO 4217 (e.g.
USD,EUR,CNY).
Update Beneficiary
Endpoint: PUT /v2/gc/beneficiaries
Updates fields on a previously registered beneficiary. Only allowed when the beneficiary's current status is INIT or APPROVED — attempting to update a beneficiary in any other status is rejected.
The request body is the same field set as registration (all fields effectively optional on update), plus id to locate the record. The gateway reshapes the flat body into a filter + update-data pair server-side; you don't need to construct that shape yourself.
Response:
No real captured sample is available for this endpoint yet — the field names/shape above are derived from the backend code; values are placeholders.
Supplement Beneficiary Material
Endpoint: POST /v2/gc/beneficiaries/supplement
Submits supporting document(s) (vouchers) for a beneficiary that is WAIT_SUPPLEMENT after registration (see the Webhook page for how this notification arrives).
id
string
Yes
The beneficiary's id, as returned by the Register Beneficiary API.
requestId
string(32)
Yes
Merchant-generated unique request ID for this supplement submission.
vouchers
array
No
Business-related material file paths (accepts a single string or an array; coerced to an array server-side). Each element must be a path returned by the File Upload API (POST /v2/gc/files/upload).
Real captured example:
Additional Field Validation Rules
Known quirk: the Merchant Portal UI additionally applies a blanket "digits only" rule (^[0-9]+$) to accountNumber in its own form layer, on top of whichever per-country rule is shown below. This conflicts with several rules below that explicitly allow letters (all IBAN/SEPA countries, CA, TR, SA alphanumeric rules). If you are integrating directly against the API (not through the Portal), follow the per-country rule in the tables below rather than assuming digits-only.
Last updated
Was this helpful?