Skip to main content

Error Handling

When an API request fails, do not guess. Check it in this order:

  1. Check the HTTP status. 401 means authentication, 403 means permission, and 400 usually means request data.
  2. Check message. It tells you which field or configuration caused the problem.
  3. Use the tables below to fix the request or account configuration.

Success response:

{
"code": 0,
"message": "ok",
"data": {}
}

Error response:

{
"code": 53,
"message": "payout route not configured",
"data": null
}

Quick Check

HTTP StatusMeaningCheck First
400Request data or business configuration is wrongfields, amount, currency, recipient, payout route
401Authentication failedAPI key, Bearer token, IP whitelist
403Authenticated but not allowedAPI key permission, product access
404Resource does not exist or is not visiblepayout_id, order_id, batch_id, environment
500Platform or upstream errorquery current status before retrying

Response Fields

FieldMeaning
codeBusiness result code. 0 means success.
messageMain troubleshooting hint. The list below is organized by this field.
dataSuccess payload. Usually empty on errors.

Common codes:

codeMeaning
0Success
51Basic validation failed, such as missing required fields or invalid length
53Business parameter or business configuration is wrong
61Authentication or permission failed
65Resource not found
50Platform or upstream error

Authentication And Permission

messageMeaningWhat To Do
unauthorizedToken is missing, malformed, or invalidSend Authorization: Bearer <token> or X-API-Key: <token>
api key not foundAPI key does not exist, or Sandbox / Live environment is wrongCreate a new API key and verify the environment
api key disabledAPI key is disabledEnable it or create a new one
api key expiredAPI key expiredCreate or renew the API key
api key version mismatchAPI key was rotated and the old token is invalidUse the latest token
invalid api key tokenToken content is incomplete or malformedCopy the full token again
ip not allowedServer egress IP is not whitelistedAdd your server egress IP to the API key whitelist
ip not allowed: <ip><ip> is the source IP seen by BeyoungerAdd that IP to the whitelist
forbiddenAPI key lacks permission or product access is not enabledGrant permission or enable the product

Common permissions:

ActionPermission
Read accountpayment.account.read
Read balancespayment.wallet.read
Read ledgerpayment.ledger.read
Create Quick Payout / payoutpayment.payout.create
Read payoutspayment.payout.read
Update payoutpayment.payout.update
Submit payoutpayment.payout.submit
Cancel payoutpayment.payout.cancel
Manage beneficiariespayment.payout.beneficiary.read / payment.payout.beneficiary.write
Manage beneficiary accountspayment.payout.beneficiary_account.read / payment.payout.beneficiary_account.write

Common Request Errors

messageMeaningWhat To Do
Validation FailedA required field, length, enum, or minimum rule failedFix the field according to the API reference
request requiredRequest body is empty or JSON was not parsedSend valid JSON with Content-Type: application/json
<field> requiredA required field is missingAdd the field shown in the message
invalid notify_urlCallback URL is invalidUse a full URL, such as https://merchant.example.com/webhooks/payout
invalid statusUnsupported status filterUse documented status values
invalid review_statusUnsupported review statusUse draft, pending_review, returned, rejected, or approved
invalid execution_statusUnsupported execution statusUse init, processing, completed, failed, or cancelled
no changesUpdate request has no changed fieldsSend at least one field to update
account not foundAPI key account does not exist or environment is wrongCheck API key and environment
account frozenMerchant account is frozenContact Beyounger
internal errorInternal details are hiddenKeep request time, path, payload, and response for support

Fiat Payout

messageMeaningWhat To Do
currency requiredPayout currency is missingSend currency, such as USD
currency not supportedAccount does not support the currencyConfirm the currency is enabled
amount must be greater than zeroAmount must be positiveSend an amount greater than 0
amount must be greater than fee when fee_bearer is userAmount is not enough after user-borne feeIncrease amount or use fee_bearer: merchant
fee_bearer must be merchant or userFee bearer value is invalidUse merchant or user
reference requiredMerchant reference is missingSend a unique reference
reference already existsThe same reference was already usedQuery the original payout before creating another one
beneficiary_account_id requiredNo existing account or inline recipient was sentSend beneficiary_account_id, or send both beneficiary and beneficiary_account
beneficiary and beneficiary_account must be provided togetherOnly one inline object was sentSend both objects
method_id required when creating beneficiary inlineInline beneficiary creation needs a methodSend method_id
channel_id requires method_idchannel_id was sent without method_idSend the matching method_id
method_id required when channel_id providedchannel_id was sent without method_idSend the matching method_id
payout method not foundMethod does not exist or is not enabled for the merchantVerify method_id or ask Beyounger to enable it
payout channel not foundChannel does not exist or is not configuredDo not send channel_id unless Beyounger provides it
payout route not configuredNo route matches account, currency, method, and amountAsk Beyounger to configure payout routing
channel account not configuredRoute exists but channel account is missingAsk Beyounger to configure the channel account
payout method not supported for currency typeFiat / crypto method type is mixedUse a fiat method for fiat payout
beneficiary account not foundBeneficiary account does not exist or is out of scopeCheck beneficiary_account_id
beneficiary account not activeBeneficiary account is not activeEnable or recreate it
beneficiary account disabled, please enable it firstBeneficiary account is disabledEnable it first
beneficiary account suspendedBeneficiary account is suspendedContact Beyounger or use another account
beneficiary account type mismatchAccount type does not match currency or routeDo not send account_type unless provided by Beyounger
account_type mismatchSent account_type does not match route rulesFor PayPal, usually omit account_type: paypal
beneficiary not foundBeneficiary does not exist or is out of scopeCheck beneficiary_id
beneficiary disabledBeneficiary is disabledEnable or recreate it
beneficiary method mismatchBeneficiary method conflicts with request method_idUse a matching method_id or recreate beneficiary
beneficiary channel mismatchBeneficiary channel conflicts with request channel_idUse matching channel or omit channel_id
beneficiary account mismatchBeneficiary and beneficiary account do not belong togetherUse an account under the same beneficiary
beneficiary profile incomplete: missing <fields>Provider requires more recipient profile fieldsFill all fields listed in <fields>
wallet not foundAccount has no wallet for the currencyAsk Beyounger to enable the wallet
merchant account not foundAccount setup is incompleteAsk Beyounger to check account setup
payout not foundPayout does not exist or is not visibleCheck payout_id and environment
payout not editablePayout can no longer be editedQuery status before updating
payout already approvedPayout was already approvedWait for execution result or query status
payout already processingPayout is being executedWait for webhook or query status
payout rejectedPayout was rejectedFix data and create a new payout
invalid payout statusCurrent status does not allow the operationQuery payout status first

Beneficiary Fields

These errors usually come from beneficiary.fields.

messageMeaningWhat To Do
beneficiary fields requiredBeneficiary fields are missingSend beneficiary.fields
fields requiredField object is missingSend fields
fields missing required: <fields>Required fields are missingFill the fields listed in <fields>
fields.payee_id invalid: expect ^[a-zA-Z0-9]{3,60}$payee_id must be 3-60 alphanumeric charactersFix the ID
fields.language invalid: expect 2 lettersLanguage must be 2 lettersUse values like en
fields.country invalid: expect ISO-2 uppercaseCountry must be uppercase ISO-2Use values like US
fields.phone invalid: expect (\\+[0-9]{1,3}-)?[0-9]{4,12}Phone format is invalidUse +1-4155550100 or 4-12 digits
fields.birthdate invalid: expect yyyy-MM-ddBirthdate format is invalidUse 1990-01-31
fields.email invalidEmail format is invalidSend a valid email
fields.first_name invalid: length 3-100, letters/'/-/space onlyFirst name format is invalidUse 3-100 letters, spaces, ', or -
fields.last_name invalid: length 3-100, letters/'/-/space onlyLast name format is invalidUse 3-100 letters, spaces, ', or -
fields.zip invalid: length 3-30ZIP/postal code length is invalidUse the recipient country format
fields.zip invalid for country <country>ZIP/postal code does not match the countryFix it for <country>
fields.city invalid: length 2-120City length is invalidUse 2-120 characters
fields.state invalid: length 2-60State length is invalidUse 2-60 characters
fields.address invalid: length 3-200Address length is invalidUse 3-200 characters

Beneficiary Account Fields

These errors usually come from beneficiary_account or beneficiary account APIs.

messageMeaningWhat To Do
network_code requiredReceiving network is missingSend beneficiary_account.network_code
network not foundNetwork is not availableQuery GET /payment/payout-networks first
schema requiredNetwork field schema is missingContact Beyounger
field <name> requiredAccount field is missingFill it according to network schema
field <name> invalidAccount field format is invalidFollow the schema hint
field <name> invalid: <hint>Account field format is invalidFix it according to <hint>
unknown field <name>Field is not defined by schemaRemove the field
cashapp_account must start with $Cash App account must start with $Use a value like $example
beneficiary account already existsSame beneficiary account already existsReuse the existing account

Crypto Mass Payout

messageMeaningWhat To Do
items requiredBatch items are missingSend items
items length must be between 1 and 500Batch must contain 1-500 itemsSplit the batch or add items
only crypto currency supportedFiat currency was usedUse a crypto currency
method_id requiredPayout method is missingSend a crypto method_id
payout method not supported for cryptoMethod is not a crypto payout methodUse a crypto method
order_no requiredItem order number is missingSend unique order_no for each item
duplicate order_no in requestDuplicate order number in current requestDeduplicate
duplicate order_no in batchDuplicate order number in batchUse a new order_no
duplicate order_no in merchant payoutsOrder number was used beforeQuery the original payout
beneficiary_account.address requiredReceiving address is missingSend address
receiving address requiredReceiving address is missingSend address
invalid EVM receiving addressEVM address is invalidUse a valid EVM address
invalid TRON receiving addressTRON address is invalidUse a valid TRON address
duplicate receiving address in batch requestDuplicate address in batchDeduplicate or split the batch
batch not foundBatch does not exist or is not visibleCheck batch_id and environment
batch not editableBatch can no longer be editedQuery batch status
batch not ready for submitBatch cannot be submitted yetFix batch items first
batch has no itemsBatch has no itemsAdd items
batch not approvedBatch is not approvedWait for review result
batch contains multiple payout channel accounts; split batch by routeBatch uses multiple payout routesSplit the batch by route

Acquiring

messageMeaningWhat To Do
order_currency only supports USDOrder currency must be USDSend USD
order_amount must be > 0Order amount must be positiveSend an amount greater than 0
expire_seconds must be between 60 and 10800Expiration is outside the allowed rangeUse 60-10800 seconds
underpay_tolerance must be >= 0Underpay tolerance cannot be negativeSend 0 or a positive value
allowed_pay_currencies requiredAllowed pay currencies are missingSend allowed_pay_currencies
notify_webhook_id requiredAcquiring webhook ID is missingSend a valid notify_webhook_id
notify_webhook_id invalid or inactiveWebhook is missing or inactiveEnable webhook in merchant dashboard
notify_webhook_id not subscribed to acquiring eventsWebhook is not subscribed to acquiring eventsSubscribe it to acquiring.*
redirect_url must be an absolute https URL or a same-origin relative pathRedirect URL format is invalidUse HTTPS full URL or same-origin relative path
logo_url must be an absolute https URLLogo URL must be HTTPS full URLUse HTTPS image URL
mode must be checkout or directAcquiring mode is invalidUse checkout or direct
unsupported checkout_typeCheckout type is not supportedUse an enabled checkout type
network/currency requiredNetwork and currency must be sent togetherSend both network and currency
network/currency not allowed by orderPayment option is not allowed by the orderUse an allowed option
unsupported network/currency: <network>/<currency>Account does not support that network/currency pairUse another option or ask Beyounger to enable it
no available pay tokens for current accountAccount has no enabled pay tokensAsk Beyounger to configure pay tokens
order not foundOrder does not exist or is not visibleCheck order_id and environment
completed order cannot be closedCompleted order cannot be closedTreat it as completed
checkout_url not foundHosted checkout URL is not availableCheck order ID and order mode

Webhook Receiving

These errors usually happen when Beyounger receives callbacks from upstream providers. Merchants usually only need to keep logs and contact Beyounger if needed.

messageMeaningWhat To Do
webhook ip not allowedCallback source IP is not allowedCheck upstream IP whitelist configuration
unsupported acquiring webhook provider: <provider>Webhook provider is not supportedCheck provider configuration
empty cobo webhook eventCobo webhook event is emptySave the raw callback
invalid cobo merchant deposit payloadCobo payload format is invalidSave the raw payload
acquiring order not foundCallback cannot match a local acquiring orderCheck upstream order reference
merchant deposit address not foundCallback address cannot match merchant deposit addressCheck deposit address setup

Retry Rules

Error TypeRetry Directly?Guidance
401 / 403NoFix token, IP whitelist, or permission first
400 request errorNoFix request fields first
404 not foundNoCheck ID, account, and environment first
Query API 5xxYesRetry with backoff
Create / submit / payout API 5xxCarefullyQuery by reference, client_request_id, or payout_id before retrying