Add a new beneficiary

POST: /amsin/api/v1/business/account/bindBeneficiary Signature required

To create a beneficiary, the Partner can call this API to bind a beneficiary by connecting the bank card information of the beneficiary to a WorldFirst account.

Structure

A message consists of a header and body. The following sections are focused on the body structure. For the header structure, see:

Request parameters

Field

Data type

Required

Description

bindBeneficiaryRequestId

String

Yes

The unique ID assigned by the Partner to identify a request for beneficiary binding.

Note:

  • This field is an API idempotency field. For details about API idempotency, see the Idempotency chapter.

More information:

  • Maximum length: 64 characters

customerId

String

Yes(Conditional)

The unique ID assigned by WorldFirst to identify an account on WorldFirst.

Note:

  • customerId and accessToken cannot be both empty.

More information:

  • Maximum length: 64 characters

accessToken

String

Yes(Conditional)

The access token used for OAuth authorization.

Note:

  • customerId and accessToken cannot be both empty.

More information:

  • Maximum length: 64 characters

beneficiaryBankAccount

BeneficiaryBankAccount object

No

Details about the beneficiary's bank account, such as the name of the account holder, region and BIC of the beneficiary's bank, etc.

beneficiaryType

String

Yes

Defines the type of beneficiary's card.

Valid values are:

  • THIRD_PARTY_COMPANY_BANK_ACCOUNT
  • THIRD_PARTY_PERSONAL_BANK_ACCOUNT

For more information, refer to BeneficiaryType.

countryCode

String

Yes

2-character ISO 3166 country/region code that represents the country/region where the beneficiary locates.

More information:

  • Maximum length: 2 characters

currency

String

Yes

3-character ISO 4217 currency code that represents the currency used. Currently, the following currencies are supported:

  • USD,EUR,GBP,NZD,CAD,AUD,JPY,SGD,HKD,CNH

beneficiaryNick

String

Yes

The nickname of the beneficiary. The nickname is defined by the Customer to identify the beneficiary easily.

templateCategory

String

No

Defines the type of the template used for the beneficiary. 

Valid values are: 

  • GENERAL_TEMPLATE: General template returned in the cardTemplateData field of the inquiryBeneficiaryTemplate API. 
  • LOCAL_TEMPLATE: Local template returned in the localCardTemplateData field of the inquiryBeneficiaryTemplate API. 
  • CROSS_BORDER_TEMPLATE: Cross-border template returned in the crossBorderCardTemplateData field of the inquiryBeneficiaryTemplate API. 

More information: 

  • The default value is GENERAL_TEMPLATE.

referenceBeneficiaryId

String

No

The unique ID defined by the Partner to identify a beneficiary.

More information:

  • Maximum length: 64 characters

Response parameters

Field

Data type

Required

Description

result

Result object

Yes

Indicates whether this API is called successfully.

beneficiary

Beneficiary object

Yes

Describes details about the beneficiary.

Result processing logic

After calling the API, a response is returned with two result codes, result.resultStatus and beneficiary.status.

  • result.resultStatus indicates the result of the inquiry.
  • beneficiary.status indicates the status of the submitted beneficiary.

The possible responses for result.resultStatus are:

Result status

Description

S

This indicates the API call succeeded.

F

This indicates the API call failed. For more information on why the call failed, see result.resultCode.

U

This indicates the API call result is unknown. Partner can make a query when the returned status is UNKNOWN. Use the following query strategy:

  • A Partner can make 7 queries at maximum.
  • Intervals between queries: 5m, 10m, 20m, 40m, 80m, 160m, and 320m.

If none of the queries is successful, contact our Technical Support Team.

Result codes

result.resultCode

System-related result codes

resultCode

resultStatus

resultMessage

Further action

SUCCESS

S

Success

PROCESS_FAIL

F

A general business failure occurred. Do not retry.

Human intervention is usually needed. It is recommended that you contact our Technical Support Team to resolve the issue.

PARAM_ILLEGAL

F

Illegal parameters exist. For example, a non-numeric input, or an invalid date.

Check and verify whether the request fields, including the header fields and body fields, are correct and valid.

For details on the fields of each API, see the specific API Structure section.

UNKNOWN_EXCEPTION

U

API failed due to unknown reason.

The service might be down, retry later. If the issue persists, contact our Technical Support Team.

REQUEST_TRAFFIC_EXCEED_LIMIT

U

The request traffic exceeds the limit.

Call the interface again to resolve the issue. If the issue persists, contact our Technical Support Team.

OAUTH_FAIL

F

OAuth process failed.

Contact our Technical Support Team for detailed reasons.

INVALID_API

F

The called API is invalid or not active.

Check whether the correct API is being called.

INVALID_CLIENT

F

The client is invalid.

The Client ID does not exist or is invalid.

INVALID_SIGNATURE

F

The signature is invalid.

Make sure the request is properly signed with a valid signature.

METHOD_NOT_SUPPORTED

F

The server does not implement the requested HTTP method.

Ensure the HTTP method is POST.

Business-related result codes

resultCode

resultStatus

resultMessage

Further action

UN_SUPPORT_BUSINESS

F

Unsupported business.

Invalid parameters are used e.g. currency is incorrect. Retry with the correct information.

USER_NOT_EXIST 

F

The user does not exist.

Retry with the correct user information.

RISK_REJECT

F

The transfer is rejected for risk control reasons.

Prompt the user that the request is rejected because the risk control failed.

REPEAT_BIND_BENEFICIARY_REQUEST

U

Repeated request to bind a beneficiary.

Check whether the beneficiary has already been successfully bound with the inquiryBeneficiary API.

EXCEED_MAX_COUNT_LIMIT

F

Exceed max count limit.

Ensure the data lies within the limit and try again.

USER_NO_PERMISSION

F

User does not have permission.

Check the permission of the user and retry.

BENEFICIARY_ALREADY_EXISTED

F

Beneficiary already existed.

Check whether the beneficiary has already been successfully bonded with the inquiryBeneficiary API.

REPEAT_REQ_INCONSISTENT

F

Repeated requests are inconsistent.

Ensure all the fields in the requests are the same.

REFERENCE_BENEFICIARY_ID_EXIST

F

Reference beneficiary id exist.

Check whether the beneficiary has already been successfully bound.

CARD_TEMPLATE_NOT_EXIST

F

No card templates met the query conditions.

Check whether the correct beneficiary template has been used. 

Samples

Samples using general template

Request

copy
{
  "customerId":"*****",
    "bindBeneficiaryRequestId": "*****",
  "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
    "countryCode":"DE",
    "currency":"EUR",
    "beneficiaryNick":"NickABC",
    "beneficiaryBankAccount": {
        "bankAccountName":"shen***",
        "bankName": "***BANK",
        "bankBIC":"CHASDE*****",
        "bankAccountIBAN":"DE111234432112345*****"
    }
}

Response

copy
{
    "beneficiary": {
        "beneficiaryBankAccount": {
            "bankAccountIBAN": "DE111234432112345*****",
            "bankAccountName": "shen***",
            "bankBIC": "CHASDE*****"
        },
        "beneficiaryNick": "NickABC",
        "beneficiaryToken": "ALIPAYroc+DTRHtO8*****",
        "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
        "bindBeneficiaryRequestId": "*****",
        "countryCode": "DE",
        "currency": "EUR",
        "status": "SUCCESS"
    },
    "result": {
        "resultCode": "SUCCESS",
        "resultMessage": "success.",
        "resultStatus": "S"
    }
}

Samples using local template

Request

copy
{
    "customerId":"*****",
    "bindBeneficiaryRequestId": "*****",
    "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
    "countryCode":"DE",
    "currency":"EUR",
    "beneficiaryNick":"NickABC",
    "templateCategory":"LOCAL_TEMPLATE",
    "beneficiaryBankAccount": {
        "bankAccountName":"shen***",
        "bankBIC":"CHASDE*****",
        "bankAccountIBAN":"DE315001051765761*****"
    }
}

Response

copy
{
    "beneficiary": {
        "beneficiaryBankAccount": {
            "bankAccountIBAN": "DE315001051765761*****",
            "bankAccountName": "shen***",
            "bankBIC": "CHASDE*****"
        },
        "beneficiaryNick": "shen***",
        "beneficiaryToken": "ALIPAYjIIt8*****",
        "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
        "bindBeneficiaryRequestId": "*****",
        "countryCode": "DE",
        "currency": "EUR",
        "status": "SUCCESS"
    },
    "result": {
        "resultCode": "SUCCESS",
        "resultMessage": "success",
        "resultStatus": "S"
    }
}

Samples using cross-border template

Request

copy
{
    "customerId":"*****",
    "bindBeneficiaryRequestId": "*****",
    "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
    "countryCode":"DE",
    "currency":"EUR",
    "beneficiaryNick":"NickABC",
    "templateCategory":"CROSS_BORDER_TEMPLATE",
    "beneficiaryBankAccount": {
        "bankAccountName":"shen***",
        "bankAccountLocalName":"shen***",
        "bankBIC":"CHASDE*****",
        "bankAccountIBAN":"DE315001051765761*****"
    }
}

Response

copy
{
    "beneficiary": {
        "beneficiaryBankAccount": {
            "bankAccountIBAN": "DE315001051765761*****",
            "bankAccountLocalName": "shen***",
            "bankAccountName": "shen***",
            "bankBIC": "CHASDE*****"
        },
        "beneficiaryNick": "NickABC",
        "beneficiaryToken": "ALIPAYjIIt8*****",
        "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
        "bindBeneficiaryRequestId": "*****",
        "countryCode": "DE",
        "currency": "EUR",
        "status": "SUCCESS"
    },
    "result": {
        "resultCode": "SUCCESS",
        "resultMessage": "success",
        "resultStatus": "S"
    }
}

Samples using referenceBeneficiaryId

Request

copy
{
    "customerId":"*****",
    "bindBeneficiaryRequestId": "*****",
    "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
    "countryCode":"DE",
    "currency":"EUR",
    "beneficiaryNick":"NickABC",
    "templateCategory":"LOCAL_TEMPLATE",
    "referenceBeneficiaryId":"2022*****",
    "beneficiaryBankAccount": {
        "bankAccountName":"shen***",
        "bankBIC":"CHASDE*****",
        "bankAccountIBAN":"DE315001051765761*****"
    }
}

Response

copy
{
    "beneficiary": {
        "beneficiaryBankAccount": {
            "bankAccountIBAN": "DE315001051765761*****",
            "bankAccountName": "shen***",
            "bankBIC": "CHASDE*****"
        },
        "beneficiaryNick": "NickABC",
        "beneficiaryToken": "ALIPAYjIIt8*****",
        "beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
        "bindBeneficiaryRequestId": "*****",
        "countryCode": "DE",
        "currency": "EUR",
        "referenceBeneficiaryId": "2022****",
        "status": "SUCCESS"
    },
    "result": {
        "resultCode": "SUCCESS",
        "resultMessage": "success",
        "resultStatus": "S"
    }
}

@2024 WorldFirst