The following error codes can be returned in the error_code field when a payment fails:
Error Code
HTTP Status
Description
Recoverable
INSUFFICIENT_BALANCE
400
Merchant balance too low for withdrawal
✅ Wait for deposits
MISSING_REQUISITES
400
No available requisites for this amount
✅ Wait/retry
NO_AVAILABLE_REQUISITES
400
All requisites are locked by pending transactions
✅ Wait/retry
INVALID_METHOD
400
Payment method not configured or inactive
❌ Contact support
INVALID_WITHDRAWAL_DATA
400
Invalid payout details (bank account, etc.)
✅ Fix data
UNSUPPORTED_CURRENCY
400
Currency not supported
❌ Use different currency
WITHDRAWAL_NOT_SUPPORTED
400
Method doesn’t support withdrawals
❌ Use different method
MERCHANT_REFERENCE_DUPLICATE
200
Payment with this reference exists
⚠️ Returns existing
VALIDATION_ERROR
400
Request validation failed
✅ Fix request
Recoverable errors (✅) can typically be resolved by waiting and retrying, or by fixing the request data.
Non-recoverable errors (❌) require configuration changes or using different parameters.
The provided API key is incorrect, expired, or doesn’t exist
Solution
Verify you’re using the correct API key provided by your LuxCore account manager. Ensure you’re using the correct key for the environment (qp_test_* or qp_prod_*).
Copy
{ "statusCode": 401, "message": "API key not found or invalid", "error": "INVALID_API_KEY"}
Your merchant balance is too low for the requested withdrawal
Solution
Check your balance via the Balance API. To add funds, you can request the LuxCore team to finalize a pending deposit for the required amount, which will credit your merchant balance.
Copy
{ "statusCode": 400, "message": "Insufficient balance for withdrawal", "error": "INSUFFICIENT_BALANCE"}
No requisites (bank accounts/payment instruments) are currently available for processing. This typically happens when: (1) Multiple transactions with the same amount are created simultaneously, exceeding the number of available requisites, (2) All requisites are already locked by pending transactions, (3) No requisites are configured for this payment method/currency combination
Solution
Wait for existing pending transactions to complete or fail (freeing up requisites). If this persists, contact LuxCore support to check requisite configuration or increase capacity. Consider implementing request queuing on your side.
Copy
{ "transaction_id": "pay_1761290149387_6149e9c2", "status": "failed", "amount": 200000, "currency": "ARS", "method": "bank_transfer", "type": "deposit", "merchant_reference": "fb384323-a356-4877-b9ff-9de8d0a3c126", "created_at": "2025-10-24T07:15:49.387Z", "error_code": "MISSING_REQUISITES", "error_message": "No available requisites for this operation"}
Similar to MISSING_REQUISITES - no free requisites are available. This is a more specific error code used when the system attempted to find a requisite but all were locked or unavailable.
Solution
Same as MISSING_REQUISITES. Wait for pending transactions to reach terminal status (completed/failed), or contact support for requisite capacity increase.
The payout object contains invalid or incomplete data (e.g., invalid bank account format, missing recipient name, unsupported bank code)
Solution
Verify all payout fields: recipient_name (required), bank_account (valid format for country), bank_code (valid bank identifier). Check country-specific validation rules.
Copy
{ "statusCode": 400, "message": "Invalid bank account format for ARS withdrawals", "error": "INVALID_WITHDRAWAL_DATA"}