Skip to content

Disbursement Field Validation

  • Endpoint: POST /aggregate-pay/api/gateway/paymentFieldValidation
  • Tags: Disbursement Service

Description

This interface is used to perform structured validation on the payee information fields (such as account number, name, ID, etc.) provided by the merchant before initiating an actual payout. It ensures that the payee information complies with format rules when the transaction is initiated. The validation scope includes checking whether the format is correct (e.g., length, regular expressions, more detailed algorithmic rules) and whether the values are valid enumerations.

The purpose of this interface is to help merchants identify erroneous fields in advance and display frontend error messages to users, thereby improving payout success rates and user experience. Merchants are advised to call this interface on the payee information collection page to check parameter formats. This interface is solely for static field format validation. Passing the validation indicates a high likelihood of avoiding transaction failures due to incorrect information, but it does not completely eliminate the possibility. Merchants are discouraged from caching field configurations, as specific field requirements will be dynamically updated in accordance with changes in payment rules.

Parameters

FieldInTypeRequiredConstraintsDescription
Content-TypeheaderstringYes
signheaderstringYes签名信息请参考技术文档

Parameter Examples

  • Content-Type: "application/json"
  • sign: "FPFVT3o227JrFRbqu19boZCpVVTF9KznxyRawUmxpfXilHV/0yK46haPhAjNu1hPUMy7Vw/ILXhfzffNm4Fj0apWknlTY9OJxnSoQxS9BTFtc61tn5yV1q69x/kkBl82/qwg+XTJ4fOzy7Mar3VaC1E2PlDA6RkkKBUyNE6RYgsdB+Su7an4+4HVTNAnoe74WyvBgxTLMNg28igBTdqxaO3w/UBY6ObVp7vkqkQGdL1Y+HgmMYaAVwrM3+ALWGId0sJ+YqTY4WJ+0xCRGhaSnybiIjZsQEYyID68WNUfuavDLDsEhaMm/HfQvf5p0R1Ltovp3wwJnEbQcjY458iX5A=="

Request Body

Content-Type: application/json

FieldTypeRequiredConstraintsDescriptionEnum
versionstringYesAPI version. Current value: 1.5
keyVersionstringYesSignature Algorithm Version, Current value: 1
requestTimestringYesRequest time, compliant with rfc3339 specification, format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX The time must be within two minutes of the current time
appIdstringYesMerchant AppId,The unique identifier assigned to the merchant app by PayerMax
merchantNostringNomaxLength: 32Merchant Id, the unique identifier generated when the merchant signs the contract with PayerMax
dataobjectYesRequest data body.
data.countrystringYesmaxLength: 2Country code, using capital letters, please refer:【Supported countries and currencies】.
data.chargeOptionstringNoWhether charge bearer mode of fees is required, please refer: 【Disbursement Application Template and Filling Specifications
data.clearingRailstringNoEnumerated values: SWIFT, SEPA, LOCAL, corresponding to the contracted payment methods SWIFT, SEPA, and Local Banks, respectively. Please provide the value based on the actual payment method being used, please refer: 【Disbursement Application Template and Filling Specifications
data.sourceAccountstringNomaxLength: 3Currency code of the deduction account, in uppercase letters.
data.destinationCurrencystringNomaxLength: 3The currency that the beneficiary receives. Please refer to the 【Payment Method Types List】. If the receiving  currency is indicated in the payment method, please specify it. If not indicated, the receiving currency is limited to the local currency and no specification is required.
data.payeeInfoobjectYesPayee Information.
data.payeeInfo.paymentMethodTypestringYesmaxLength: 64Payment method types, please refer:【Payment Method Types and Target Org】.
data.payeeInfo.targetOrgstringNomaxLength: 64Target organization, please refer:【Payment Method Types and Target Org】.
data.payeeInfo.payeeType stringNoPayee type (PERSONAL/CORPORATION), default to PERSONAL
data.payeeInfo.accountInfoobjectNoPayee account information
data.payeeInfo.accountInfo.accountNostringNomaxLength: 128Payee account, fill in the corresponding account number according to the payment method.
data.payeeInfo.accountInfo.accountTypestringNoThe type of receiving account is regulated differently in different countries and payment methods.
data.payeeInfo.accountInfo.checkDigitstringNoVerification number of payee’s account.
data.payeeInfo.bankInfoobjectNoReceiving bank information
data.payeeInfo.bankInfo.bankCodestringNomaxLength: 64It is used to identify the bank code of the payee under a specific financial institution, and the filling specifications are different in different countries, refer to 【Disbursement Application Template and Filling Instructions】以及【List of supported bank ranges】.
data.payeeInfo.bankInfo.bankNamestringNomaxLength: 255Name of payee’s bank.
data.payeeInfo.bankInfo.bankBranchstringNomaxLength: 64Payee’s bank branch number/branch number.
data.payeeInfo.bankInfo.bankCitystringNomaxLength: 255City where the recipient’s bank is located.
data.payeeInfo.bankInfo.corAccountNostringNomaxLength: 128Agent account number of the payee’s bank(correspondent account).
data.payeeInfo.nameobjectNoThe name of the payee, which supports English, spaces, commas, dashes, and dots, and can be filled in according to different standards in different countries and payment methods.
data.payeeInfo.name.firstNamestringNomaxLength: 64First name of payee.
data.payeeInfo.name.middleNamestringNomaxLength: 64The payee’s Middle name is separated by spaces when there are multiple Middle name.
data.payeeInfo.name.lastNamestringNomaxLength: 64Family name of payee.
data.payeeInfo.name.fullNamestringNomaxLength: 512Full name of payee.
data.payeeInfo.documentobjectNoReceiving document information.
data.payeeInfo.document.documentTypestringNomaxLength: 16The type of the payee’s personal identity certificate, the optional types are different in different countries, please refer: 【Disbursement Application Template and Filling Specifications
data.payeeInfo.document.documentIdstringNomaxLength: 64Payee’s personal identification number. The Option type varies in different countries, please refer: 【Disbursement Application Template and Filling Specifications
data.payeeInfo.document.documentIssueDatestringNomaxLength: 10The effective date of the payee’s personal identification number, the optional type is different in different countries, the format is "yyyy-MM-dd".
data.payeeInfo.document.documentExpireDatestringNomaxLength: 10The expiration date of the payee’s personal identification number, the optional type is different in different countries, the format is "yyyy-MM-dd".
data.payeeInfo.addressobjectNoReceiving address information.
data.payeeInfo.address.addressstringNomaxLength: 512Address of payee.
data.payeeInfo.address.citystringNomaxLength: 255City of payee.
data.payeeInfo.address.statestringNomaxLength: 255State.
data.payeeInfo.address.zipCodestringNomaxLength: 32Postal code of payee.
data.payeeInfo.payeePhonestringNomaxLength: 64The recipient’s mobile phone number is filled in according to different standards in different countries and payment methods.
data.payeeInfo.birthDatestringNomaxLength: 10Payee’s date of birth, in the format of "yyyy-MM-dd".
data.payeeInfo.emailstringNomaxLength: 64Mailbox of payee.
data.payeeInfo.payeeNationalitystringNomaxLength: 2payee Nationality, CN, US etc country code
data.payeeInfo.payeeGenderstringNomaxLength: 1payee Gender, F or M, (F=Female,M=Male)
data.payeeInfo.payeeBirthCountrystringNomaxLength: 2payee BirthCountry, CN, US etc country code
data.payerInfoobjectNoPayer Information.
data.payerInfo.nameobjectNoThe name of the payer, which supports English, spaces, commas, dashes, and dots, and can be filled in according to different standards in different countries and payment methods.
data.payerInfo.name.firstNamestringNoFirst name of payer.
data.payerInfo.name.middleNamestringNoThe payer’s Middle name is separated by spaces when there are multiple Middle name.
data.payerInfo.name.lastNamestringNoFamily name of payer.
data.payerInfo.name.fullNamestringNoFull name of payer.
data.expiryDaysstringNoThe validity days of the withdrawal code are currently only valid in FawryCash. It supports inputing integers in range of 1 to 15 (1=24Hours), and defaults to 7 if other values are not input.
data.remarkstringNoPostscript or remarks for disbursement, allows format of English, numbers, dash lines, spaces and dots; Due to channel constraints, this field may undergo special processing, such as ultra long truncation or filling in default values.
data.notifyEmailstringNomaxLength: 64Recipient notification email. Currently, only certain payment methods, such as FAWRY, send withdrawal code emails.
data.notifyPhonestringNomaxLength: 64Recipient notification phone number.
data.purposestringNomaxLength: 32Disbursement purpose,enumeration value, ISUBIL:Pay to utilities (i.e. water, electricity, gas bills); EPTOUR:Tourism; EPTKAG:Pay for travel tickets or travel agency fees; ISPAYR:Pay Salary; ISPAYRA:Pay Agent Salary; ISGDDS:Goods Trade; ISSCVE:Purchase and Sale of Services; ISSUPP:Supplier Payment; ISLOGS:Logistics and Transportation Service Payment; INCEN:Incentive/Promotion/User Acquisition Activity; GAME:Gaming Equipment, Game Coins, and Other Game Items; SAMENM:Same Name Business Account Transfer; PAYCMSN:Reimbursement/Benefit Distribution/Commission Distribution; SAMENMC:Legal Person/Shareholder/Director Personal Account; AGOPEXP:Agency operating expenses; ADEXP:Advertising expenses;RFND:Refund;SMCNTST:Sub merchant settlement;LGTEP:Logistics expenses;GOODPAY:Goods payment;SINVEST:Investment in shares;FINVEST:Fund investment;TAXPAY:Tax payment;LOANPAY:Payment of loans; OTHER:Other;

Example

json
{
  "version": "1.4",
  "keyVersion": "1",
  "requestTime": "2025-07-02T08:43:43.362+00:00",
  "appId": "appId",
  "merchantNo": "merchantNo",
  "data": {
    "sourceAccount": "USD",
    "destinationCurrency": "IDR",
    "country": "ID",
    "payeeInfo": {
      "paymentMethodType": "BANK_TRANSFER",
      "targetOrg": "BCA",
      "payeeType": "",
      "accountInfo": {
        "accountNo": "SA1210987654987654987654",
        "accountType": "",
        "checkDigit": ""
      },
      "bankInfo": {
        "bankCode": "NCBKSAJE",
        "bankName": "Raiffeisenbank",
        "bankBranch": "",
        "bankCity": "asdasd",
        "corAccountNo": "30101810200000000700"
      },
      "name": {
        "firstName": "Williams",
        "middleName": "middleName",
        "lastName": "lastName",
        "fullName": "Chiamaka chukwudolue"
      },
      "document": {
        "documentType": "",
        "documentId": "",
        "documentIssueDate": "1994-06-21",
        "documentExpireDate": ""
      },
      "address": {
        "address": "test address",
        "city": "",
        "zipCode": ""
      },
      "payeePhone": "79123456789",
      "birthDate": "1994-06-21",
      "email": "example@gmail.com",
      "payeeNationality": "ID",
      "payeeGender": "F",
      "payeeBirthCountry": "ID"
    },
    "payerInfo": {
      "name": {
        "fullName": ""
      },
      "subMerchantNo": "",
      "businessLegalName": "name yssss",
      "registrationCountry": "Eg",
      "merchantCategoryCode": "",
      "payerId": "23434234"
    },
    "expiryDays": "",
    "remark": "remark test"
  }
}

Responses

200

FieldTypeRequiredConstraintsDescriptionEnum
codestringYesAPI response code, ‘APPLY_SUCCESS’ means success. Indicates that the interface request is successful, but does not indicate the order status.
msgstringYesResponse description, ‘Success.’
dataobjectYesResponse data body.
data.validationCodestringYesVerification result code, PASS: no field failed verification, PARAMS_INVALID: there is a field that failed verification
data.validationPassedFieldsarray[object]YesThe list of fields that passed the validation.
data.validationPassedFields[].fieldstringNoThe path of the field that passed the validation
data.ignoredFieldsarray[object]YesA collection of fields that ignore validation
data.ignoredFields[].fieldstringYesIgnore validation field paths
data.validationFailedFieldsarray[object]YesThe list of fields that failed validation
data.validationFailedFields[].fieldstringYesThe path of the field that failed the validation
data.validationFailedFields[].errorMsgstringYesVerification failure reason

Response Example

json
{
  "msg": "Success.",
  "code": "APPLY_SUCCESS",
  "data": {
    "validationCode": "PARAMS_INVALID",
    "validationPassedFields": [
      {
        "field": "payeeInfo.name.fullName"
      }
    ],
    "ignoredFields": [
      {
        "field": "payeeInfo.bankInfo.bankCode"
      },
      {
        "field": "payeeInfo.birthDate"
      },
      {
        "field": "payeeInfo.bankInfo.bankCity"
      },
      {
        "field": "payeeInfo.document.documentIssueDate"
      },
      {
        "field": "payeeInfo.name.lastName"
      },
      {
        "field": "remark"
      },
      {
        "field": "payeeInfo.payeePhone"
      },
      {
        "field": "payeeInfo.bankInfo.corAccountNo"
      },
      {
        "field": "payeeInfo.email"
      },
      {
        "field": "payeeInfo.address.address"
      },
      {
        "field": "payeeInfo.bankInfo.bankName"
      },
      {
        "field": "payeeInfo.name.middleName"
      },
      {
        "field": "notifyEmail"
      }
    ],
    "validationFailedFields": [
      {
        "field": "payeeInfo.name.firstName",
        "errorMsg": "The payeeInfo.name.firstName should not exceed 64 characters"
      },
      {
        "field": "payeeInfo.accountInfo.accountNo",
        "errorMsg": "Please enter numbers."
      }
    ]
  }
}

Was this page helpful?

Thank you for your help in improving PayerMax Product Docs!

Released under the MIT License.