Lux Financial

Errors

HTTP status codes, error response format, and error handling patterns.

Errors

HTTP Status Codes

CodeMeaning
200OK — Request succeeded
201Created — Resource created
400Bad Request — Invalid parameters
401Unauthorized — Missing or invalid API key
403Forbidden — Insufficient permissions or AML violation
404Not Found — Resource doesn't exist
409Conflict — Duplicate idempotency key with different parameters
422Unprocessable — Valid syntax but failed business rules
429Rate Limited — Too many requests
500Server Error — Internal error

Error Response Format

{
  "error": {
    "code": "invalid_request",
    "message": "The amount field is required",
    "source": {
      "location": "body",
      "key": "amount"
    }
  }
}

Error Codes

Authentication Errors

CodeDescription
requiredMissing Api-Key header
invalidInvalid API key
expiredAPI key has been revoked
insufficient_permissionsKey lacks required scope

Request Errors

CodeDescription
invalid_requestMalformed request body
missing_fieldRequired field not provided
invalid_fieldField value is invalid
idempotency_conflictSame key, different parameters

Business Logic Errors

CodeDescription
aml_violationFailed AML screening
insufficient_fundsNot enough balance
kyc_requiredCustomer KYC not approved
unsupported_railPayment rail not available
transfer_limit_exceededAmount exceeds limits

Error Handling

try {
  const transfer = await lux.transfers.create({ ... });
} catch (err) {
  if (err.code === 'aml_violation') {
    // Compliance block — do not retry
  } else if (err.code === 'insufficient_funds') {
    // Insufficient balance — notify user
  } else if (err.status === 429) {
    // Rate limited — exponential backoff
    await sleep(err.retryAfter * 1000);
  }
}

On this page