Direct Payment Errors

Error codes returned by Direct with Embedded Tokenization.

Codes in the 1xxx range are specific to this integration method.

Check the CODE field on every response. 0000 means the transaction was approved. Any other value indicates a validation error, a setup issue, a network problem, or a card decline. The TEXT field contains a human-readable message.

For card declines from the card network, see Credit Card Declines. For authentication errors (1001, 9128), see Authentication.

Request Validation

CodeMessageDescription
1000FORMAT ERRORThe transaction message is malformed, required fields are missing, or a value is out of bounds.
1003DECLINED (CV)Card verification check failed.
1011MISSING AMT / ILLEGAL AMTAMT is missing or has an invalid value.
1028INVALID OPERIDOPERID is malformed.
1031MISSING REF / INVALID REF LEN / BAD CHAR IN REFREF is missing, too long, or contains invalid characters.
1032Card data errorThe card data (number, expiry, CVV) failed validation. The TEXT field contains the specific validation message.
1034INVALID OVERRIDE TIDTerminal override was rejected.
1036INVALID INV LENInvoice number is the wrong length.
1040ONLY PLATFEE OR PLATCHRG / TRAN TYPE CANNOT SPLITBoth PLATFEE and PLATCHRG were sent, or a Split was attempted on a transaction type that doesn't support it (SPLIT is only allowed on Sale, Completion, Refund, and Force Post).

Authorization and Capture

CodeMessageDescription
1016COMP NO MATCHCompletion (TYPE=C) was attempted but doesn't match a prior Pre-Authorization.
1017NOT VOIDABLE TYPE / VOID NO MATCHVoid (TYPE=V) or Refund Void (TYPE=M) was attempted against a transaction that doesn't exist or can't be voided.
1029MISSING AUTH / ILLEGAL AUTH / INVALID AUTHForce Post (TYPE=F) requires an AUTH number from a prior Auth Only.
1035DUPLICATE REFA transaction with this REF already exists on this terminal. This is the gateway's built-in duplicate protection.

Important: 1035 means your request was received before, and the original transaction's outcome is the authoritative answer. Don't re-submit with a new REF to work around it — query the original transaction via Transaction Query to get the result.

CustomerPay and Platform Billing

CodeMessageDescription
1037USERFEE NOT ALLOWED / USERFEE TOO SMALLThe merchant is not enrolled in CustomerPay, or the USERFEE is below the required minimum for the transaction amount.
1038PLATFEE NOT ALLOWEDThe terminal does not have ENABLE PLAT FEE set, or this transaction type does not support Platform Fees.
1039PLATCHRG NOT ALLOWEDThe terminal does not have ENABLE PLAT CHRG set, or this transaction type does not support Platform Charges.

Settlement

CodeMessageDescription
1033NOTHING TO SETTLESettlement (TYPE=D) was called but the batch contains no transactions.

Embedded Tokenization

CodeMessageDescription
8601INVALID APIKEYThe API key passed to Interpay.tokenize() is invalid or expired. Request a fresh one from GetAPIKey.
8602Card data validation errorCard data submitted to the tokenization endpoint failed validation. The TEXT field contains the specific message.

Network and Host

CodeMessageDescription
1098INVALID RESPONSE FROM HOSTThe processing host returned an unexpected response. Retry on the alternate gateway server.
9102TRAN TIMEOUT / GATEWAY CONFIG ERRORThe transaction timed out before the host responded, or the terminal is misconfigured. Retry; if it recurs, contact [email protected].

Gateway Errors

CodeMessageDescription
9100DATA UPDATE ERRORInternal gateway error while recording the transaction. Retry the call.
9900SYSTEM ERRORUnexpected gateway exception. Retry on the alternate gateway server.

How to Handle

  • 1035 Duplicate Reference — critical for idempotent retry logic. Never re-submit with a new REF. Query the original transaction instead.
  • Validation errors (1000, 1011, 1028, 1031, 1032, 1034, 1036, 1040, 1041) — bugs in your integration. Fix the request format.
  • 1032 Card data error — user-facing. Show the customer a "please check your card details" message.
  • Authorization flow errors (1016, 1017, 1029) — logic issues. You're submitting a capture, void, or refund against a transaction that doesn't match the expected state. Verify your state-tracking.
  • Fee-not-allowed errors (1037, 1038, 1039) — either the terminal isn't configured for this fee type (contact [email protected]) or the transaction type doesn't support fees (see [Transaction Types]).
  • Embedded Tokenization (8601, 8602) — request a fresh API key via GetAPIKey and prompt the customer to re-enter card details.
  • Network errors (1098, 9102, 9100, 9900) — retryable. Use exponential backoff and fall over to the alternate gateway server after a timeout.

Related