Docs/Payment-API
SPICEPAY DEVELOPER DOCS

Errors

HTTP status describes the request outcome; the payment's own status describes whether it was paid.

How it works

HTTP status describes the request outcome; the payment's own status describes whether it was paid. Keep these two error channels separate in your integration.

Implementation

Validate field names, amounts, currencies and shop selection before retrying. Invalid input requires a corrected request; invalid credentials require a key or scope fix. Handle rate limits and transient network or server failures with bounded backoff. A processor decline can be returned in a successful HTTP response and is not a reason to blindly repeat the charge. Log a request or payment identifier and a redacted diagnostic message.

Fields

type When
invalid_request 4xx errors
api SpicePay-side 500
connector Processor error (CE_ codes)
blocked Payment blocked; comes with HTTP 200, so check for error

Common codes

Code HTTP Meaning What to do
IR_01 401 API key missing or invalid Check the api-key header.
IR_18 401 Not authorized; message says why Check the key and request.
IR_22 403 Key may not access this resource Use a key with access.
IR_04 400 Required field missing Add the field in message.
IR_21 400 Several required fields missing See data.
IR_05 422 Wrong field format Fix the field.
IR_06 422 Invalid request data, including unknown fields Fix the request.
IR_07 400 Invalid field value Fix the value.
IR_08 400 client_secret missing or expired Create a new payment or session.
IR_09 400 client_secret does not match the payment Send the payment's own secret.
IR_13 400 Refunds would exceed the captured amount Lower amount.
IR_14 400 Payment state does not allow this call Retrieve it; message names the expected states.
IR_28 400 Currency not supported Use a supported currency.
IR_30 400 Connector account misconfigured Fix the connector credentials.
IR_39 400 No connector takes this payment method Enable the method or change the request.
IR_52 429 Too many requests Wait for Retry-After (also data.retry_after_secs).
HE_01 400 Object already exists (reused refund_id or payment_id) Use the existing object.
HE_02 404 Object does not exist Check the ID and shop.
HE_03 400 Object state does not allow this (refund on an unpaid payment) Retrieve the object.
HE_04 404 Related object not found (dispute, file, successful payment) Check the ID.
CE_00–CE_09 varies Processor error See message and reason.

HTTP example

json
{
  "error": {
    "type": "invalid_request",
    "code": "IR_04",
    "message": "Missing required param: amount"
  }
}