Validate Beneficiary always fails with check 'Get Payout Required Fields'

Trying to create a beneficiary in Singapore. Validating always fails with the message below. I’ve checked the payout required fields and they match the regex.

If there any additional validation in the test system? Is it validating driving license numbers?

{
“status”: {
“error_code”: “ERROR_VALIDATE_PAYOUT_BENEFICIARY”,
“status”: “ERROR”,
“message”: “The request tried to validate a beneficiary, but there was an error in the input fields. The request was rejected. Corrective action: Run ‘Get Payout Required Fields’.”,
“response_code”: “ERROR_VALIDATE_PAYOUT_BENEFICIARY”,
“operation_id”: “4b5a74ac-f73c-45e4-b919-519c8c9fe62b”
}

I’m happy to share the beneficiary details if someone can spot something.

2 Likes

Hi Alan,
Welcome to the Rapyd developer community!
I tried the following methods in the sandbox and got a success.

  1. Create payout beneficiary
POST https://sandboxapi.rapyd.net/v1/payouts/beneficiary
{
    "category": "bank",
    "country": "SG",
    "currency": "SGD",
    "entity_type": "individual",
    "first_name": "John",
    "last_name": "Doe",
    "identification_type": "passport",
    "identification_value": "12930456789",
    "merchant_reference_id": "JDoe",
    "payment_type": "priority",
    "address": "1 Main Street",
    "postcode": "1A345",
    "account_number": "1234567",
    "bic_swift": "sdcssscsc"
}

{
    "status": {
        "error_code": "",
        "status": "SUCCESS",
        "message": "",
        "response_code": "",
        "operation_id": "29d64edb-0d38-4300-8f17-c678e751b005"
    },
    "data": {
        "id": "beneficiary_196f7abf3076550555016780c5673b22",
        "last_name": "Doe",
        "first_name": "John",
        "country": "SG",
        "entity_type": "individual",
        "address": "1 Main Street",
        "name": "John Doe",
        "postcode": "1A345",
        "account_number": "1234567",
        "currency": "SGD",
        "identification_type": "passport",
        "identification_value": "12930456789",
        "merchant_reference_id": "JDoe",
        "bic_swift": "sdcssscsc",
        "payment_type": "priority",
        "category": "bank"
    }
}
  1. Validate payout beneficiary:
POST https://sandboxapi.rapyd.net/v1/payouts/beneficiary/validate
{
    "beneficiary": "beneficiary_196f7abf3076550555016780c5673b22",
    "amount": 100,
    "payout_method_type": "sg_bnpparibas_bank",
    "sender_country": "SG",
    "sender_currency": "SGD",
    "sender_entity_type": "company"
}
{
    "status": {
        "error_code": "",
        "status": "SUCCESS",
        "message": "",
        "response_code": "",
        "operation_id": "5faf95dd-21f5-4572-acba-69185289da4b"
    },
    "data": {
        "validated": true,
        "beneficiary": {
            "id": "beneficiary_196f7abf3076550555016780c5673b22",
            "last_name": "Doe",
            "first_name": "John",
            "country": "SG",
            "entity_type": "individual",
            "address": "1 Main Street",
            "name": "John Doe",
            "postcode": "1A345",
            "account_number": "1234567",
            "currency": "SGD",
            "identification_type": "passport",
            "identification_value": "12930456789",
            "merchant_reference_id": "JDoe",
            "bic_swift": "sdcssscsc",
            "payment_type": "priority",
            "category": "bank"
        }
    }
}

Hope this helps.

1 Like

Ok - I’m posting this (to test). We are a company in Australia and we are trying to payout to an individual’s bank in Singapore.

POST https://sandboxapi.rapyd.net/v1/payouts/beneficiary 
{ 
 category = bank, 
 country = SG, 
 currency = SDG, 
 default_payout_method_type = sg_domestic_bank,
 entity_type = individual,
 identification_type = drivers_license,
 identification_value = S8101939E,
 sender_country = AU,
 sender_currency = AUD,
 sender_entity_type = company,
 first_name = Nine,
 last_name = Singapore,
 beneficiary_bic_local = 7171048,
 account_number = 04870199999,
 bank_account_type = CACC,
 company_name = RushGold Pty Ltd,
 address = Berry Avenue;2,
 postcode = 2094,
 city = Fairlight,
 state = NSW
}
Response:

{
  "id": "beneficiary_e41971bb565f99454da04686873a00e9",
  "last_name": "Singapore",
  "first_name": "Nine",
  "country": "SG",
  "entity_type": "individual",
  "address": "Berry Avenue;2",
  "name": "Nine Singapore",
  "postcode": "2094",
  "city": "Fairlight",
  "state": "NSW",
  "company_name": "RushGold Pty Ltd",
  "account_number": "04870199999",
  "currency": "SDG",
  "identification_type": "drivers_license",
  "identification_value": "S8101939E",
  "bank_account_type": "CACC",
  "category": "bank",
  "default_payout_method_type": "sg_domestic_bank"
}

And when I validate I see:-

{ 
  amount = 1000,
  beneficiary = beneficiary_e41971bb565f99454da04686873a00e9,
  payout_method_type = sg_domestic_bank,
  sender_country = AU,
  sender_currency = AUD,
  sender_entity_type = company 
}
{
  "status": {
    "error_code": "ERROR_VALIDATE_PAYOUT_BENEFICIARY",
    "status": "ERROR",
    "message": "The request tried to validate a beneficiary, but there was an error in the input fields. The request was rejected. Corrective action: Run 'Get Payout Required Fields'.",
    "response_code": "ERROR_VALIDATE_PAYOUT_BENEFICIARY",
    "operation_id": "283096e3-0ac9-4230-9798-4813d859c0cb"
  }
}

The payout required fields I see are

GET, 'https://sandboxapi.rapyd.net/v1/payouts/sg_domestic_bank/details?beneficiary_country=SG&beneficiary_entity_type=individual&payout_amount=1000&payout_currency=SGD&sender_country=AU&sender_currency=AUD&sender_entity_type=company', Version: 1.1, Content: <null>, Headers:

{
  "status": {
    "error_code": "",
    "status": "SUCCESS",
    "message": "",
    "response_code": "",
    "operation_id": "2eb9f841-0070-4e53-9cae-33597c2ab3db"
  },
  "data": {
    "payout_method_type": "sg_domestic_bank",
    "sender_currency": "AUD",
    "sender_country": "*",
    "sender_entity_type": "company",
    "beneficiary_country": "sg",
    "payout_currency": "SGD",
    "beneficiary_entity_type": "individual",
    "is_cancelable": 0,
    "is_location_specific": 0,
    "is_expirable": 0,
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "is_online": 0,
    "image": "/checkout/sg_domestic_bank.png",
    "status": 1,
    "beneficiary_required_fields": [
      {
        "name": "first_name",
        "regex": "^.{1,140}",
        "is_required": true,
        "type": "string"
      },
      {
        "name": "last_name",
        "regex": "^.{1,140}",
        "is_required": true,
        "type": "string"
      },
      {
        "name": "beneficiary_bic_local",
        "regex": "^[0-9]{7}",
        "is_required": true,
        "type": "string"
      },
      {
        "name": "account_number",
        "regex": "^[0-9]{11}",
        "is_required": true,
        "type": "string"
      },
      {
        "name": "bank_account_type",
        "regex": "CACC|SVGS",
        "is_required": true,
        "type": "string"
      }
    ],
    "sender_required_fields": [
      {
        "name": "company_name",
        "regex": "^.{1,140}",
        "is_required": true,
        "type": "string"
      },
      {
        "name": "address",
        "regex": ".*( ; ).*",
        "is_required": true,
        "type": "string",
        "description": "Enter Address with semicolon in format- Street Name ; Building Number"
      },
      {
        "name": "postcode",
        "regex": "^.{1,16}",
        "is_required": true,
        "type": "string"
      },
      {
        "name": "city",
        "regex": "^.{1,35}",
        "is_required": true,
        "type": "string"
      },
      {
        "name": "state",
        "regex": "^.{1,35}",
        "is_required": true,
        "type": "string"
      }
    ],
    "payout_options": [],
    "minimum_amount": null,
    "maximum_amount": null,
    "batch_file_header": "payout_method_type,sender_currency,payout_currency,ewallet,beneficiary.first_name,beneficiary.last_name,beneficiary.beneficiary_bic_local,beneficiary.account_number,beneficiary.bank_account_type,sender.company_name,sender.address,sender.postcode,sender.city,sender.state"
  }
}

I note when I look at the beneficiary in the sandbox Rapyd Client Portal I see the address, which is defined as the Senders address recorded as the beneficiaries address.

Hi, Alan. We’re looking into this. The office is out for holidays most of this week, so it might take a while to get back to you. In the meantime, have you tried any of the other payout methods for Singapore?

Ah, none of the other payment methods support AUD as a sender currency.

{[
  {
    "payout_method_type": "sg_anzbank_bank",
    "name": "Australia & New Zealand Banking Group Limited",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_anzbank_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 1,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_bangkok_bank",
    "name": "Bangkok Bank Singapore",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_bangkok_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "individual"
    ],
    "beneficiary_entity_types": [
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": null,
        "minimum_amount": null,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_bankofchina_bank",
    "name": "Bank Of China Limited",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_bankofchina_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 1,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_bnpparibas_bank",
    "name": "BNP Paribas",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_bnpparibas_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 1,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_cimbberhad_bank",
    "name": "CIMB Bank Berhad",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_cimbberhad_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 1,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_citibankna_bank",
    "name": "Citibank N.A",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_citibankna_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 0,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_citibanksg_bank",
    "name": "Citibank Singapore Limited",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_citibanksg_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 1,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_dbs_bank",
    "name": "DBS Payments",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_dbs_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 1,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_deutsche_bank",
    "name": "Deutsche Bank AG",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_deutsche_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company",
      "individual"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": 199999,
        "minimum_amount": 1,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "USD",
      "SGD"
    ]
  },
  {
    "payout_method_type": "sg_domestic_bank",
    "name": "SG Bank Disbursements",
    "is_cancelable": 0,
    "is_expirable": 0,
    "is_location_specific": 0,
    "is_online": 0,
    "status": 1,
    "image": "/checkout/sg_domestic_bank.png",
    "category": "bank",
    "beneficiary_country": "sg",
    "payout_currencies": [
      "SGD"
    ],
    "sender_entity_types": [
      "company"
    ],
    "beneficiary_entity_types": [
      "company",
      "individual"
    ],
    "amount_range_per_currency": [
      {
        "maximum_amount": null,
        "minimum_amount": null,
        "payout_currency": "SGD"
      }
    ],
    "minimum_expiration_seconds": null,
    "maximum_expiration_seconds": null,
    "sender_currencies": [
      "ZAR",
      "USD",
      "SGD",
      "SEK",
      "NZD",
      "NOK",
      "JPY",
      "HKD",
      "GBP",
      "EUR",
      "DKK",
      "CHF",
      "CAD",
      "AUD"
    ]
  }
]}

Hi Charles - I’m still blocked on this one.

Hi Alan,

We’re in the middle of holidays here. I’m pushing to have this dealt with, but nobody will be in the office until Sunday. I haven’t forgotten about you!

There are more holidays next week, so I don’t know when they will get to this - hopefully soon. Please stay in touch.

I think this may be a problem of my own making - with SDG as the currency rather than the correct SGD.

Please don’t spend any time on this - I will confirm is this is the issue.