Create a payout request
POST
: /amsin/api/v1/business/fund/createPayout
The Partner can use this API to withdraw money from a Wallet Account (WA) to a bank account.
Structure
A message consists of a header and body.
Request header parameters
Field | Required | Sample | Description |
Client-Id | Yes |
| For detailed field descriptions, see API Overview. |
Signature | Yes |
| |
Content-Type | Yes |
| |
Request-Time | Yes |
| |
Connected-CustomerId | No (Conditional) |
| Required when a partner manages a customer's account. |
Request body parameters
Response body parameters
Field | Data type | Required | Description |
result | Result object | Yes | Indicates whether this API is called successfully. |
Note: The following fields are returned as needed only when | |||
transferRequestId | String | Yes | The unique ID assigned by the Partner to identify a payout request. Note:
More information:
|
transferId | String | Yes | The unique ID assigned by WorldFirst to identify a payout.
|
transferFromDetail | TransferFromDetail object | Yes | Payout details submitted by the payer. |
transferToDetail | TransferToDetail object | Yes | Payout details for the beneficiary. |
transferOrderAddition | TransferOrderAddition object | No | Additional information about the payout, such as the payer and the beneficiary. |
Result processing logic
After making an API request, WorldFirst responds to the Partner with the result of the API call. 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 |
U | This indicates the API call result is unknown.
|
Result codes
result.resultCode
System-related result codes
resultCode | resultStatus | resultMessage | Further action |
PROCESSING | S | The transfer is in process. | The payout is created successfully and being processed. |
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. |
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. |
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. |
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 |
Business-related result codes
resultCode | resultStatus | resultMessage | Further action |
UN_SUPPORT_BUSINESS | F | Unsupported business. | Invalid parameters are used. Retry with the correct information. |
ORDER_NOT_EXIST | F | The order does not exist. | Retry with another order. |
USER_NO_PERMISSION | F | User does not have permission. | Retry with another user information. |
CURRENCY_NOT_SUPPORT | F | The currency is not supported. | Make sure the currency input is correct and try again. |
USER_NOT_EXIST | F | The user does not exist. | Retry with the correct user information. |
USER_ACCOUNT_ABNORMAL | F | The user account status is abnormal. | Retry with a different user. If the issue persists, contact our Technical Support Team for more details. |
REPEAT_REQ_INCONSISTENT | F | Repeated requests are inconsistent. | Ensure all the fields in the requests are the same and try again. |
USER_STATUS_ABNORMAL | F | The status of the user is abnormal. Retry with another card. | The status of the user is abnormal. Retry with another order. |
BALANCE_NOT_ENOUGH | F | Balance is not enough. | Make sure the balance is sufficient and retry. |
AMOUNT_EXCEED_LIMIT | F | The amount exceeds the limit. | Make sure the amount submitted is correct and retry. |
CONTRACT_NOT_EXIST | F | Contract does not exist. | Ensure the Partner has already signed a contract and the input is correct. |
Samples
Request
Senario 1: Non FX settlement
{
"transferRequestId": "*****",
"transferFromDetail": {
"transferFromAmount": {
"currency": "USD",
"value": 1000
}
},
"transferToDetail": {
"transferToAmount": {
"currency": "EUR"
},
"feeAmount": {
"currency": "USD",
"value": 10
},
"transferToMethod": {
"paymentMethodMetaData": {
"bankCountryCode": "GB",
"bankAccountName": "beneficiary bank account name",
"bankAccountIBAN": "*****",
"bankBIC": "*****"
},
"paymentMethodType": "BANK_ACCOUNT_DETAIL"
},
"transferNotifyUrl": "www.notifyurl.com",
"transferQuote": {
"quoteId": "*****"
},
"transferMemo": "memo shows in worldfirst statement",
"transferRemark": "remark shows in bank statement",
"purposeCode": "GDS",
"isFVT": "Y"
},
"transferOrderAddition": {
"referenceOrderId": "*****"
}
}
Senario 2: FX settlement with a third-party company bank account
{
"businessSceneCode": "THIRD_PARTY_PAYOUT",
"transferFromDetail": {
"transferFromAmount": {
"currency": "USD",
"value": 1050
}
},
"transferToDetail": {
"transferToAmount": {
"currency": "CNY"
},
"transferToMethod": {
"paymentMethodMetaData": {
"beneficiaryType": "THIRD_PARTY_COMPANY_BANK_ACCOUNT",
"routingNumber": "910290003990",
"bankCountryCode": "CN",
"bankAccountLocalName": "收款人账户本地姓名(本地语言)",
"bankLocalName": "收款银行本地语言名称",
"bankAccountNo": "8111501012000846128"
},
"paymentMethodType": "BANK_ACCOUNT_DETAIL"
}
}
}
Senario 3: FX settlement with a third-party personal bank account
{
"businessSceneCode": "THIRD_PARTY_PAYOUT",
"transferFromDetail": {
"transferFromAmount": {
"currency": "USD",
"value": 1050
}
},
"transferToDetail": {
"transferToAmount": {
"currency": "CNY"
},
"transferToMethod": {
"paymentMethodMetaData": {
"beneficiaryType": "THIRD_PARTY_PERSONAL_BANK_ACCOUNT",
"routingNumber": "910290003990",
"bankCountryCode": "CN",
"bankAccountLocalName": "收款人账户本地姓名(本地语言)",
"bankLocalName": "收款银行本地语言名称",
"bankAccountNo": "8111501012000846128"
},
"paymentMethodType": "BANK_ACCOUNT_DETAIL"
}
}
}
Response
{
"result": {
"resultCode": "PROCESSING",
"resultMessage": "Processing",
"resultStatus": "S"
},
"transferRequestId": "*****",
"transferId": "*****",
"transferFromDetail": {
"transferFromAmount": {
"currency": "USD",
"value": 1000
}
},
"transferToDetail": {
"purposeCode": "GDS",
"transferToAmount": {
"currency": "EUR",
"value": 938
},
"feeAmount": {
"currency": "USD",
"value": 10
},
"transferToMethod": {
"paymentMethodId": "*****",
"paymentMethodType": "BANK_ACCOUNT_DETAIL"
},
"transferQuote": {
"quoteId": "*****"
},
"transferMemo": "memo shows in worldfirst statement",
"transferRemark": "remark shows in bank statement",
"isFVT": "Y"
},
"transferOrderAddition": {
"referenceOrderId": "*****"
}
}