Create a Charge

Create a charge that deducts funds from a merchant's account balance. The charge is accepted synchronously and processed asynchronously — the initial response returns status set to PROCESSING. Poll Query a Charge or listen for the settlement webhook to confirm the final SUCCESS or FAILED outcome.
Request Parameters
requestIdstring
required
Idempotency key. Assign a unique value (e.g., UUID) per request. Repeating the same requestId returns the result of the first charge instead of creating a duplicate deduction.
sourceAccountIdstring
required
Identifier of the merchant account whose balance is debited.
chargeAmountAmount
required
Amount to deduct, including currency and value. See Data Types.
chargeCategorystring
required
Business category of the charge. See ChargeCategory.
referenceOrderIdstring
Partner-side order or reference number associated with this charge. Stored and echoed back as-is.
transferMemostring
Free-text note describing the purpose of the charge. Stored and echoed back as-is.
Response Parameters
resultResult
See Result.
idstring
Unique identifier of the charge. Use this ID to query the charge later.
requestIdstring
Idempotency key echoed from the request.
sourceAccountIdstring
Identifier of the merchant account that is debited.
chargeAmountAmount
Amount to deduct, including currency and value. See Data Types.
chargeCategorystring
Business category of the charge. See ChargeCategory.
statusstring
Current status of the charge. Set to PROCESSING on successful acceptance.

Valid Values:

PROCESSING — The charge has been accepted and is being processed asynchronously.
SUCCESS — The charge was deducted successfully (terminal).
FAILED — The charge could not be completed (terminal).
referenceOrderIdstring
Partner-side order or reference number. Returned only when it was provided at creation.
transferMemostring
Free-text note. Returned only when it was provided at creation.
createdAtdatetime
Time the charge was created, following the ISO 8601 standard. See Data Types.
Error Codes
resultCoderesultStatusresultMessageTroubleshooting
SUCCESSSsuccessN/A
PARAM_ILLEGALFIllegal parameters. Refer to the API documentation to verify the request parameters, then retry.Ensure `chargeAmount` has a valid currency and value, and `chargeCategory` is a supported value.
USER_NO_PERMISSIONFNo permission to perform this operation.Confirm the partner is authorized to charge the specified `sourceAccountId`.
ACCOUNT_NOT_EXISTFThe account does not exist.Verify `sourceAccountId` refers to a valid merchant account.
USER_STATUS_ABNORMALFThe account status is abnormal.The source account is frozen or unavailable. Verify the account status before retrying.
UN_SUPPORT_BUSINESSFThe requested business is not supported.The `chargeCategory` or currency is not enabled for this account. Contact WF business.
INCONSISTENT_REPEATED_REQUESTFA repeated request with inconsistent parameters was detected.Reuse the original `requestId` only with identical parameters, or use a new `requestId`.
PROCESS_FAILFA general business processing failure occurred.Do not retry with the same parameters. Contact WF support if the issue persists.
Definition
POST /api/open/v1/charges/create
Request
{
"requestId": "req_c1h2a3r4",
"sourceAccountId": "20260101000000067890",
"chargeAmount": {
  "currency": "USD",
  "value": 1000
},
"chargeCategory": "PLATFORM_FEE",
"referenceOrderId": "order_20260808001",
"transferMemo": "August platform service fee"
}
Response
{
"result": {
  "resultCode": "SUCCESS",
  "resultStatus": "S",
  "resultMessage": "success"
},
"id": "20260808000000098765",
"requestId": "req_c1h2a3r4",
"sourceAccountId": "20260101000000067890",
"chargeAmount": {
  "currency": "USD",
  "value": 1000
},
"chargeCategory": "PLATFORM_FEE",
"status": "PROCESSING",
"referenceOrderId": "order_20260808001",
"transferMemo": "August platform service fee",
"createdAt": "2026-08-08T08:00:00+08:00"
}