AUTHORIZED, CAPTURED, VOIDED, and REFUNDED describe the payment lifecycle and are documented separately.
Read an error
Standard API errors return anerrors array and a request_id.
retry_after_seconds, documentation_url, routing_attempts, error_id, business_id, and entity_id are not currently returned.Validation errors
Field-level validation returnsMISSING_REQUIRED_FIELD or INVALID_FIELD_VALUE. The field value identifies the property that failed.
HTTP status codes
The HTTP status identifies the general class of failure. Use the errorcode for application logic.
Error categories
Every error belongs to a category. Use it as a fallback when your integration receives a code it does not recognize.Error codes
The table below lists the error codes currently returned by the payment, payment-link, instrument, device-payment, POS, and 3D Secure services.Retry failed requests
Branch oncode. For an unknown code, use category to identify the type of problem and retriable to determine whether a retry may succeed. Never branch on message.
A retriable: true response permits a controlled retry. It does not confirm that the original payment operation failed. For payment operations, retrieve the payment status before retrying or creating another payment attempt. This prevents duplicate authorizations, captures, voids, or refunds.
Use exponential backoff and cap the number of attempts. Stop retrying when the operation reaches a final state or when the retry limit is reached.
A retriable: false response requires a change before another attempt, such as correcting the request, using another payment instrument, or waiting for a valid workflow state.
Log the request_id for every failed request and include it when contacting lite support.
Errors by API
Find the errors each lite API can return. Open an example to see the exact response body. Values such as<request-id> and <status> are generated at runtime.
Common errors
These responses are shared by several APIs. Each endpoint section identifies the shared responses that apply.Merchant context is missing
Merchant context is missing
/api/v1/payments/*HTTP 401 Unauthorized · UNAUTHORIZED · Retriable: NoAuthentication, merchant, or terminal context is missing
Authentication, merchant, or terminal context is missing
UNAUTHORIZED · Retriable: NoThe request uses camelCase or contains unknown keys where snake_case is expected
The request uses camelCase or contains unknown keys where snake_case is expected
INVALID_REQUEST · Retriable: NoA required request field is missing
A required request field is missing
MISSING_REQUIRED_FIELD · Retriable: NoA request field fails validation
A request field fails validation
INVALID_FIELD_VALUE · Retriable: NoAn unhandled failure occurs
An unhandled failure occurs
INTERNAL_ERROR · Retriable: YesPayments
Authorize a payment
POST /api/v1/payments
Also returned: missing merchant context, malformed request, field validation, and internal errors.
The instrument ID is empty or is not a valid UUID
The instrument ID is empty or is not a valid UUID
INVALID_REQUEST · Retriable: NoThe merchant ID is missing from the payment input
The merchant ID is missing from the payment input
INVALID_REQUEST · Retriable: NoThe amount or currency is invalid
The amount or currency is invalid
INVALID_REQUEST · Retriable: NoThe terminal ID is missing for a merchant-initiated POS payment
The terminal ID is missing for a merchant-initiated POS payment
INVALID_REQUEST · Retriable: NoThe payment token does not exist or was deleted
The payment token does not exist or was deleted
TOKEN_NOT_FOUND · Retriable: NoThe payment token has expired
The payment token has expired
EXPIRED_TOKEN · Retriable: NoThe payment token is not active
The payment token is not active
INVALID_TOKEN · Retriable: Nolite cannot resolve the payment instrument
lite cannot resolve the payment instrument
INVALID_TOKEN · Retriable: NoA payment instrument with the same details already exists
A payment instrument with the same details already exists
DUPLICATE_ENTITY · Retriable: NoA request with the same order reference is already being processed
A request with the same order reference is already being processed
DUPLICATE_REQUEST · Retriable: NoThe payment instrument lookup times out
The payment instrument lookup times out
PROVIDER_TIMEOUT · Retriable: YesThe payment instrument lookup fails because of a connection error
The payment instrument lookup fails because of a connection error
PROVIDER_CONNECTION_ERROR · Retriable: Yeslite cannot start the payment operation
lite cannot start the payment operation
WORKFLOW_SUBMISSION_FAILED · Retriable: YesThe original idempotent request is still processing when the wait period ends
The original idempotent request is still processing when the wait period ends
INTERNAL_ERROR · Retriable: YesAn unexpected error occurs while resolving the payment instrument
An unexpected error occurs while resolving the payment instrument
INTERNAL_ERROR · Retriable: YesCapture a payment
POST /api/v1/payments/:paymentId/capture
Also returned: missing merchant context, malformed request, field validation, and internal errors.
`paymentId` is missing
`paymentId` is missing
MISSING_REQUIRED_FIELD · Retriable: NoThe payment is not found for the merchant
The payment is not found for the merchant
PAYMENT_NOT_FOUND · Retriable: NoThe merchant ID is missing
The merchant ID is missing
INVALID_REQUEST · Retriable: NoThe payment ID is missing while building the request
The payment ID is missing while building the request
INVALID_REQUEST · Retriable: NoThe capture amount is zero or negative while building the request
The capture amount is zero or negative while building the request
INVALID_REQUEST · Retriable: NoThe payment is not found during capture validation
The payment is not found during capture validation
INVALID_REQUEST · Retriable: NoThe payment is not in a capturable state
The payment is not in a capturable state
INVALID_STATE · Retriable: NoNo amount remains available for capture
No amount remains available for capture
INVALID_REQUEST · Retriable: NoThe resolved capture amount is zero or negative
The resolved capture amount is zero or negative
INVALID_REQUEST · Retriable: NoThe requested amount exceeds the remaining capturable amount
The requested amount exceeds the remaining capturable amount
INVALID_REQUEST · Retriable: Nolite cannot start the payment operation
lite cannot start the payment operation
WORKFLOW_SUBMISSION_FAILED · Retriable: YesVoid a payment
POST /api/v1/payments/:paymentId/void
Also returned: missing merchant context, malformed request, field validation, and internal errors. Missing-payment and build-input errors match the capture operation.
The void request fails validation
The void request fails validation
INVALID_REQUEST · Retriable: NoThe merchant is not allowed to void the payment
The merchant is not allowed to void the payment
FORBIDDEN · Retriable: NoThe payment is not found
The payment is not found
PAYMENT_NOT_FOUND · Retriable: NoThe payment has already been voided, captured, or is otherwise in the wrong state
The payment has already been voided, captured, or is otherwise in the wrong state
INVALID_STATE · Retriable: NoThe transaction is rejected for fraud
The transaction is rejected for fraud
FRAUD_DETECTED · Retriable: NoThe transaction is rejected by risk controls
The transaction is rejected by risk controls
RISK_DECLINED · Retriable: No3D Secure authentication fails
3D Secure authentication fails
AUTHENTICATION_FAILED · Retriable: NoThe 3D Secure service times out
The 3D Secure service times out
AUTHENTICATION_UNAVAILABLE · Retriable: YesAn upstream service cannot be reached
An upstream service cannot be reached
PROVIDER_CONNECTION_ERROR · Retriable: YesAn unexpected error occurs while voiding the payment
An unexpected error occurs while voiding the payment
INTERNAL_ERROR · Retriable: Yeslite cannot submit or process the void request
lite cannot submit or process the void request
WORKFLOW_SUBMISSION_FAILED · Retriable: YesRefund a payment
POST /api/v1/payments/:paymentId/refund
Also returned: missing merchant context, malformed request, field validation, and internal errors. Missing-payment and build-input errors match the capture operation.
lite cannot load the payment state
lite cannot load the payment state
WORKFLOW_SUBMISSION_FAILED · Retriable: YesThe payment does not exist or has not been captured
The payment does not exist or has not been captured
INVALID_REQUEST · Retriable: NoThe payment state does not contain the card brand required for the balance check
The payment state does not contain the card brand required for the balance check
INVALID_REQUEST · Retriable: NoThe payment is not in a refundable state
The payment is not in a refundable state
INVALID_STATE · Retriable: NoNo amount remains available for refund
No amount remains available for refund
INVALID_REQUEST · Retriable: NoThe refund amount is zero or negative
The refund amount is zero or negative
INVALID_REQUEST · Retriable: NoThe refund amount exceeds the remaining refundable amount
The refund amount exceeds the remaining refundable amount
INVALID_REQUEST · Retriable: Nolite cannot start the payment operation
lite cannot start the payment operation
WORKFLOW_SUBMISSION_FAILED · Retriable: YesExtend an authorization
POST /api/v1/payments/:paymentId/extend-authorization
Also returned: missing merchant context, malformed request, field validation, and internal errors. Missing-payment and build-input errors match the capture operation.
The payment is not found
The payment is not found
PAYMENT_NOT_FOUND · Retriable: Nolite cannot start the payment operation
lite cannot start the payment operation
WORKFLOW_SUBMISSION_FAILED · Retriable: YesRetrieve a payment
GET /api/v1/payments/:paymentId
GET /api/v1/payments/orders/:orderId
This endpoint can also return the shared missing-merchant and internal errors.
The payment or order is not found
The payment or order is not found
PAYMENT_NOT_FOUND · Retriable: NoList payments
GET /api/v1/payments
This endpoint can also return the shared missing-merchant and internal errors.
All query validation failures return 400 INVALID_FIELD_VALUE with retriable: false.
`page` or `pageSize` is not a positive integer
`page` or `pageSize` is not a positive integer
INVALID_FIELD_VALUE · Retriable: No`pageSize` is greater than 100
`pageSize` is greater than 100
INVALID_FIELD_VALUE · Retriable: No`status` is unsupported
`status` is unsupported
INVALID_FIELD_VALUE · Retriable: No`paymentMethod` is unsupported
`paymentMethod` is unsupported
INVALID_FIELD_VALUE · Retriable: No`fromDate` is invalid
`fromDate` is invalid
INVALID_FIELD_VALUE · Retriable: No`toDate` is invalid
`toDate` is invalid
INVALID_FIELD_VALUE · Retriable: No`fromDate` is later than `toDate`
`fromDate` is later than `toDate`
INVALID_FIELD_VALUE · Retriable: NoPOS payments
/api/v1/pos/payments
Also returned: missing authentication context, malformed request, field validation, and internal errors.
Initialize a POS payment
POST /api/v1/pos/payments/init
The merchant ID is missing
The merchant ID is missing
INVALID_REQUEST · Retriable: NoThe terminal ID is missing for a merchant-initiated payment
The terminal ID is missing for a merchant-initiated payment
INVALID_REQUEST · Retriable: NoThe amount or currency is invalid
The amount or currency is invalid
INVALID_REQUEST · Retriable: Nolite cannot start the payment operation
lite cannot start the payment operation
WORKFLOW_SUBMISSION_FAILED · Retriable: YesUpdate a POS payment
POST /api/v1/pos/payments/:paymentId/update
`provider` is missing
`provider` is missing
INVALID_REQUEST · Retriable: No`raw_receipt` is missing when `error` is not provided
`raw_receipt` is missing when `error` is not provided
INVALID_REQUEST · Retriable: NoThe provider is unsupported
The provider is unsupported
INVALID_REQUEST · Retriable: NoThe receipt does not match the expected schema
The receipt does not match the expected schema
INVALID_REQUEST · Retriable: NoThe merchant ID is missing
The merchant ID is missing
INVALID_REQUEST · Retriable: NoThe terminal ID is missing for a merchant-initiated payment
The terminal ID is missing for a merchant-initiated payment
INVALID_REQUEST · Retriable: NoThe amount or currency is invalid
The amount or currency is invalid
INVALID_REQUEST · Retriable: NoThe payment update fails with a known API error
The payment update fails with a known API error
Retriable: Varies
Message: lite returns the underlying error’s HTTP status, code, and message unchanged.
lite cannot process the payment update
lite cannot process the payment update
WORKFLOW_SUBMISSION_FAILED · Retriable: YesRetrieve the latest POS payment
GET /api/v1/pos/payments/latest
No payment exists for the terminal
No payment exists for the terminal
PAYMENT_NOT_FOUND · Retriable: NoGET /api/v1/pos/payments/operations and GET /api/v1/pos/payments/transactions return only the shared authentication-context, query-validation, and internal errors documented above.
3D Secure
3D Secure API
/api/v1/threeds
This endpoint can also return the shared malformed-request, field-validation, and internal errors. These endpoints do not use the merchant guard.
lite cannot start 3D Secure authentication
lite cannot start 3D Secure authentication
INTERNAL_ERROR · Retriable: YesThe 3D Secure record is not found
The 3D Secure record is not found
ENTITY_NOT_FOUND · Retriable: NoThe 3D Secure record is not found during confirmation
The 3D Secure record is not found during confirmation
ENTITY_NOT_FOUND · Retriable: NoThe authentication is not in challenge state
The authentication is not in challenge state
INVALID_STATE · Retriable: Nolite cannot retrieve the 3D Secure status
lite cannot retrieve the 3D Secure status
INTERNAL_ERROR · Retriable: Yeslite cannot confirm the 3D Secure challenge
lite cannot confirm the 3D Secure challenge
INTERNAL_ERROR · Retriable: YesThe 3D Secure status request returns another API error
The 3D Secure status request returns another API error
Retriable: Varies
Message: lite returns the underlying error’s HTTP status, code, and message unchanged.
Browser challenge
/v1/threeds/redirect
These are browser-facing routes. Some errors do not use the standard API envelope.
GET /challenge
The redirect token is invalid or expired
The redirect token is invalid or expired
UNAUTHORIZED · Retriable: NoThe 3D Secure record is not found
The 3D Secure record is not found
ENTITY_NOT_FOUND · Retriable: NoThe 3D Secure request is invalid
The 3D Secure request is invalid
INVALID_REQUEST · Retriable: NoThe authentication is not in the required state, or challenge data is missing
The authentication is not in the required state, or challenge data is missing
INVALID_STATE · Retriable: NoPOST /confirm
When the token is invalid, the route renders an HTML error page with HTTP 200 and errorCode: invalid_token. It does not return JSON.
GET /status
This route returns raw JSON rather than the standard error envelope:
Payment Links
Manage Payment Links
/api/v1/payment-links
Also returned: missing authentication context, field validation, and internal errors.
`POST /`: `mode` and `max_uses` are inconsistent
`POST /`: `mode` and `max_uses` are inconsistent
INVALID_REQUEST · Retriable: No`PATCH /:id`: the requested status transition is not allowed
`PATCH /:id`: the requested status transition is not allowed
INVALID_REQUEST · Retriable: No`PATCH /:id`: the link has already been used
`PATCH /:id`: the link has already been used
INVALID_REQUEST · Retriable: No`POST /`: `merchant_reference_id` already exists
`POST /`: `merchant_reference_id` already exists
DUPLICATE_REQUEST · Retriable: No`GET /:id`, `PATCH /:id`, or `GET /:id/consumptions`: the link does not exist or belongs to another merchant
`GET /:id`, `PATCH /:id`, or `GET /:id/consumptions`: the link does not exist or belongs to another merchant
ENTITY_NOT_FOUND · Retriable: NoOpen a Payment Link
GET /pay/:token
This is a customer-facing route.
When a payment-link status URL is configured, errors redirect to that page with one of these query values:
The link does not exist
The link does not exist
ENTITY_NOT_FOUND · Retriable: NoA single-use link currently has no available slot
A single-use link currently has no available slot
DUPLICATE_REQUEST · Retriable: Nolite cannot create the checkout session
lite cannot create the checkout session
PROVIDER_CONNECTION_ERROR · Retriable: YesThe link is expired, paid, disabled, or has reached its usage limit
The link is expired, paid, disabled, or has reached its usage limit
INTERNAL_ERROR · Retriable: YesThe consumption record cannot be created
The consumption record cannot be created
INTERNAL_ERROR · Retriable: YesInstruments
/api/v1/instruments
Also returned: missing authentication context, malformed request, field validation, and internal errors.
Create an instrument
POST /api/v1/instruments
Field-level validation can return several errors in one response. Missing fields use MISSING_REQUIRED_FIELD; other constraints use INVALID_FIELD_VALUE.
Field validation fails
Field validation fails
MISSING_REQUIRED_FIELD or INVALID_FIELD_VALUE · Retriable: NoThe payment method is unsupported
The payment method is unsupported
INVALID_REQUEST · Retriable: NoApple Pay `data` is not valid JSON
Apple Pay `data` is not valid JSON
INVALID_REQUEST · Retriable: NoThe payment token cannot be decrypted
The payment token cannot be decrypted
INVALID_REQUEST · Retriable: Nolite cannot process the Apple Pay data
lite cannot process the Apple Pay data
INVALID_REQUEST · Retriable: NoCard details are missing
Card details are missing
INVALID_REQUEST · Retriable: Nolite cannot tokenize or save the instrument
lite cannot tokenize or save the instrument
INTERNAL_ERROR · Retriable: Yeslite cannot create the instrument
lite cannot create the instrument
INTERNAL_ERROR · Retriable: Yesfuture_usage returns the existing instrument with HTTP 201. It is not returned as an error.
List instruments
GET /api/v1/instruments
The lookup input fails validation
The lookup input fails validation
400 MISSING_REQUIRED_FIELD or 400 INVALID_FIELD_VALUERetriable: NoField validation can return one error per invalid field:
lite cannot list instruments
lite cannot list instruments
INTERNAL_ERROR · Retriable: YesRetrieve an instrument
GET /api/v1/instruments/:id
The instrument is not found
The instrument is not found
ENTITY_NOT_FOUND · Retriable: NoThe instrument belongs to another merchant
The instrument belongs to another merchant
ENTITY_ACCESS_DENIED · Retriable: Nolite cannot retrieve the instrument
lite cannot retrieve the instrument
INTERNAL_ERROR · Retriable: YesUpdate an instrument
PUT /api/v1/instruments/action
`instrument_id` or `action_type` fails validation
`instrument_id` or `action_type` fails validation
400 MISSING_REQUIRED_FIELD or 400 INVALID_FIELD_VALUERetriable: NoField validation can return one error per invalid field:
The instrument is not found
The instrument is not found
ENTITY_NOT_FOUND · Retriable: NoThe requested action is not publicly supported
The requested action is not publicly supported
INVALID_REQUEST · Retriable: NoThe action is not allowed in the instrument's current state
The action is not allowed in the instrument's current state
INVALID_STATE · Retriable: Nolite cannot update the instrument
lite cannot update the instrument
INTERNAL_ERROR · Retriable: YesDevice payments
/api/v1/device-payment/*
merchant-mapping/*
Also returned: missing authentication context, field validation, and internal errors.
The provider name, CSR, session, or channel data is invalid
The provider name, CSR, session, or channel data is invalid
INVALID_REQUEST · Retriable: NoProvider-session authentication fails
Provider-session authentication fails
UNAUTHORIZED · Retriable: NoThe operation is forbidden
The operation is forbidden
FORBIDDEN · Retriable: NoA mapping, credential, or provider is not found
A mapping, credential, or provider is not found
ENTITY_NOT_FOUND · Retriable: NoThe mapping already exists
The mapping already exists
DUPLICATE_REQUEST · Retriable: NoAn upstream device-payment request fails
An upstream device-payment request fails
PROVIDER_CONNECTION_ERROR · Retriable: YesThe payment provider times out
The payment provider times out
GATEWAY_TIMEOUT · Retriable: YesAn internal error occurs
An internal error occurs
INTERNAL_ERROR · Retriable: Yes