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
PROVIDER_ERROR
500
Payment provider returned an error
✅ Retry later
TTL_EXPIRED
400
Payment expired before completion
❌ Create new payment
LOCK_TIMEOUT
400
Could not acquire lock on resource
✅ Retry
TRANSACTION_ERROR
500
Transaction processing error
✅ Retry
INVALID_CLABE
400
Invalid CLABE format (18 digits)
✅ Fix data
INVALID_CVU
400
Invalid CVU format (22 digits)
✅ Fix data
LIMIT_EXCEEDED
400
Transaction limit exceeded
❌ Reduce amount
DAILY_LIMIT_EXCEEDED
400
Daily transaction limit reached
❌ Wait for next day
MONTHLY_LIMIT_EXCEEDED
400
Monthly transaction limit reached
❌ Wait for next month
METHOD_NOT_AVAILABLE
400
Payment method not available
❌ Use different method
METHOD_NOT_CONFIGURED
400
Payment method not configured for merchant
❌ Contact support
DUPLICATE_REFERENCE
400
Duplicate reference detected
⚠️ Use unique reference
PAYMENT_ALREADY_PROCESSED
400
Payment already in terminal status
❌ Cannot modify
PAYMENT_ALREADY_EXISTS
400
Payment already exists
⚠️ Returns existing
DATABASE_ERROR
500
Internal database error
✅ Retry
TIMEOUT
504
Operation timed out
✅ Retry
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"}