Receive transfer result notification

Signature required

WorldFirst sends notifications of the transfer result with this interface. The Partner can set up the URL for receiving transfer notifications by specifying the transferToDetail.transferNotifyUrl field when calling createTransfer.

The Partner needs to acknowledge the reception of the notification. For more details, refer to the Result processing logic section.

Structure

A message consists of a header and body.

Request header parameters

Field

Required

Sample

Description

Client-Id

Yes

Client-Id: *****

For detailed field descriptions, see API Overview

Signature

Yes

Signature: algorithm=RSA256, keyVersion=2, signature=*****

Content-Type

Yes

Content-Type: application/json; charset=UTF-8

Request-Time

Yes

Request-Time: 2019-04-04T12:08:56+08:00

Request body parameters

Field

Data type

Required

Description

transferRequestId

String

Yes

The unique ID assigned by the Partner to identify a transfer request.

Note:

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

More information:

  • Maximum length: 64 characters

transferId

String

Yes

The unique ID assigned by WorldFirst to identify a transfer.

More information:

  • Maximum length: 64 characters

transferResult

Result object

Yes

Indicates the result of the transfer request.

transferFinishTime

DateTime object

Yes

Indicates the finishing time of a transfer.

Note:

  • The value of this field follows the ISO 8601 standard format. For example, 2019-01-01T01:01:01+08:00, or 2019-01-01T01:01:01Z(UTC timezone).

transferFromDetail

TransferFromDetail object

Yes

Transfer details submitted by the payer.

transferToDetail

TransferToDetail object

Yes

Transfer details for the beneficiary.

transferOrderAddition

TransferOrderAddition object

No

Additional information about the transfer, such as information about the payer and the beneficiary.

Result processing logic

transferResult.resultStatus indicates the result of the transfer. For more details, refer to the result codes section.

After receiving the notification, you need to send a response message to acknowledge the receipt of the notification.

The Partner needs to properly sign the message before making the response. For details, refer to the Sign a request and validate the signature chapter.

The response header observes the following structure:

  • Signature: Required. Example: Signature: algorithm=RSA256, keyVersion=2, signature=*****
  • Content-Type: Required. Example: Content-Type: application/json; charset=UTF-8
  • Client-Id: Required. Example: Client-Id: *****
  • Response-Time: Required. Example: Response-Time: 2019-04-04T12:08:56+08:00

For more details about the response message, refer to the API overview chapter.

The response body has the following fixed value:

copy
{
  "result":{
     "resultStatus":"S",
     "resultCode":"SUCCESS",
     "resultMessage":"success"
  }
}

In the absense of an ackowledgement reponse from the Partner, WorldFirst will resend the result.

The following policy represents how WorldFirst makes retry attempts:

  • WorldFirst retries notifications 7 times.
  • Intervals between notifications: 2m, 10m, 10m, 1h, 2h, 6h, and 15h.

Response body parameters

Field

Data type

Required

Description

result

Result object

Yes

Indicates whether this API is called successfully.

Result codes

result.resultCode

resultCode

resultStatus

resultMessage

Further action

SUCCESS

S

Success

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 POST.

transferResult.resultCode

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.

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.

AMOUNT_EXCEED_LIMIT

F

The amount exceeds the limit.

Make sure the amount submitted is correct and retry.

RISK_REJECT

F

The transfer is rejected for risk control reasons.

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

ORDER_IS_CLOSED

F

The order is closed.

Retry with another transfer order.

ORDER_IS_REVERSED

F

The order is reversed.

Retry with another transfer order.

CARD_INFO_NOT_MATCH

F

The card information does not match.

Retry with another transfer order.

BALANCE_NOT_ENOUGH

F

Balance is not enough.

Make sure the balance is sufficient and retry.

Samples

Request

copy
{
    "transferResult": {
        "resultCode": "SUCCESS",
        "resultMessage": "success.",
        "resultStatus": "S"
    },
    "transferRequestId": "*****",
    "transferId": "*****",
    "transferFinishTime": "2022-05-11T06:27:25Z",
    "transferFromDetail": {
        "transferFromAmount": {
            "currency": "USD",
            "value": 1000
        }
    },
    "transferToDetail": {
        "purposeCode": "GDS",
        "transferToAmount": {
            "currency": "EUR",
            "value": 938
        },
        "feeAmount": {
            "currency": "USD",
            "value": 10
        },
        "transferToMethod": {
            "customerId": "*****",
            "paymentMethodType": "BALANCE"
        },
        "transferQuote": {
            "quoteId": "*****"
        }
    },
    "transferOrderAddition": {
        "referenceOrderId": "*****"
    }
}

Response

copy
{
    "result": {
        "resultCode": "SUCCESS",
        "resultMessage": "success.",
        "resultStatus": "S"
    }
}

@2024 WorldFirst