Radial → Gr4vy Error Mapping

Radial → Gr4vy Credit Card Error Code Mapping

This document maps Radial’s credit card response codes and fault codes to their closest equivalents in Gr4vy’s normalized error_code schema. It covers two Radial error surfaces:

  1. Auth Response Codes — returned in the <ResponseCode> element of GetPaymentAuthorizationReply
  2. Fault Response Codes — returned as exception class names in the <Code> element of a <Fault> XML envelope

Part 1: Auth Response Codes

These are the high-level outcomes Radial returns from a credit card authorization. Gr4vy uses a richer, granular error_code field on the transaction object.

Radial ResponseCodeRadial MeaningGr4vy Equivalent error_codeNotes on Difference
APPROVEDAuthorization approved(no error_code — transaction status = authorization_succeeded)Gr4vy uses status rather than a response code for success. No error_code is set on a successful transaction.
AcceptOrderWithExceptionApproved but flagged — must go through fraud review before shipment(no direct equivalent — authorization_succeeded + fraud review flow)Radial bundles AVS/CSC soft signals into this code. In Gr4vy, soft AVS/CVV mismatches surface as incorrect_billing_address or incorrect_cvv and are handled separately from transaction status.
DECLGeneric decline (no specific reason)issuer_decline or other_declineissuer_decline when the bank explicitly rejects; other_decline for unknown/unspecified reasons. Both are retriable in Gr4vy.
DECLFDeclined due to insufficient funds/creditinsufficient_fundsDirect 1:1 semantic match. Not marked retriable in Gr4vy (customer needs to resolve).
DECLRDeclined — card reported lost or stolencanceled_payment_methodBest match — covers reported-lost/stolen/frozen cards. Gr4vy also has unavailable_payment_method for frozen/blocked cards which may overlap.
AVSBilling address could not be validatedincorrect_billing_addressDirect 1:1 match. Gr4vy also has missing_billing_address (address absent entirely) and invalid_billing_address (malformed).
CSCCard security code could not be validatedincorrect_cvvDirect 1:1 match. Gr4vy also has missing_cvv for absent CVV.
AVSCSCBoth address AND security code failedincorrect_billing_address + incorrect_cvvGr4vy emits one error_code per transaction, so this combined case would surface as whichever check the downstream processor reported first. Merchants should check raw_response_code for full detail.
PaymentProcessorTimeoutProcessor did not respond (timeout)service_network_errorDirect semantic match. Gr4vy marks this retriable — align with Radial’s retry-before-accept logic.

Part 2: Fault Response Codes (Pre-Authorization Validation Exceptions)

These are thrown before the transaction even reaches the issuer — they are Radial-layer validation failures. Gr4vy handles the equivalent cases mostly as invalid_request_parameters, connector failure codes, or Embed/API validation errors.

Radial Fault CodeRadial MeaningGr4vy Equivalent error_codeNotes on Difference
PanDoesNotPassLuhnCheckException / PanFailsLuhnCheckExceptionPAN fails Luhn algorithm checkinvalid_payment_method or unrecognised_payment_methodGr4vy’s Secure Fields / Embed validates card number client-side before submission. A Luhn failure typically never reaches the API — it’s caught in the UI. If it does reach the API, invalid_payment_method or invalid_request_parameters is returned.
UnknownPanBinRangeExceptionPAN BIN not recognized for the tender typeunrecognised_scheme or unrecognised_payment_methodGr4vy normalizes BIN-range rejection as an unrecognized scheme or payment method. unsupported_payment_method applies if the BIN is valid but not enabled for the merchant.
PanTooShortExceptionPAN is too shortinvalid_request_parametersStructural validation — Gr4vy rejects malformed payloads at the API layer before routing.
PanTooLongExceptionPAN is too longinvalid_request_parametersSame as above.
NonNumericDataExceptionPAN contains non-numeric charactersinvalid_request_parametersSame as above — caught at API validation layer.
PanNotFoundExceptionPAN/token in request is invalidunknown_payment_method or invalid_request_parametersIf a stored payment method token is invalid/expired, Gr4vy returns unknown_payment_method. If the raw PAN itself is structurally invalid, invalid_request_parameters.
TokenNotFoundExceptionToken not foundunknown_payment_methodDirect match — Gr4vy uses unknown_payment_method when a stored/vaulted payment method ID cannot be located.
InvalidCreditCardExpirationDateExceptionExpiration date is invalidincorrect_expiry_date or invalid_request_parametersincorrect_expiry_date when the expiry fails at the issuer; invalid_request_parameters when the format is structurally wrong. Gr4vy also has expired_payment_method for cards that have actually expired.
InvalidCountryCodeExceptionCountry code is incorrectunrecognised_country or invalid_request_parametersunrecognised_country for invalid ISO country codes; incorrect_country for issuer-rejected countries; unsupported_country if the service doesn’t support that country.
InvalidTenderTypeExceptionTender type is not CCinvalid_payment_method or invalid_request_parametersGr4vy uses payment method type in the request (e.g. card, paypal). Passing the wrong type maps to invalid_payment_method or a 400 bad_request API error.
TenderGatewayConfigurationExceptionStore/merchant not configured for this tender type + countryinvalid_service_configuration or insufficient_service_permissionsBoth relate to misconfigured connector settings in Gr4vy. invalid_service_configuration is the closest for incorrect merchant-side config; insufficient_service_permissions if credentials lack the required scope.

Part 3: Key Structural Differences to Be Aware Of

DimensionRadialGr4vy
Error formatXML <Fault> envelope with exception class name stringJSON error_code enum on the transaction object
Success signalResponseCode = APPROVEDstatus = authorization_succeeded (no error_code)
Soft declines (AVS/CVV)Separate response codes (AVS, CSC, AVSCSC) with retry + accept logicSeparate error_code values (incorrect_billing_address, incorrect_cvv) — transaction is authorization_declined, not a soft-accept
Combined AVS+CVVSingle AVSCSC codeNo combined code — one error_code per transaction; use raw_response_code for full detail
Pre-auth validationThrows XML fault exceptions before hitting issuerCaught at API layer (400 invalid_request_parameters) or in Secure Fields UI before submission
Fraud signalsDECLR (lost/stolen) and AcceptOrderWithException (fraud review)canceled_payment_method (lost/stolen), suspected_fraud, flow_decline (Flow rules), refused_transaction (sanctions/watchlist)
RetryabilityConfigurable max-attempts per code, handled by webstore logicRetriable? flag on each error_code in Gr4vy docs — built into the orchestration layer
Timeout handlingPaymentProcessorTimeout — retry up to N times, then accept with OMS retryservice_network_error — retriable; for digital wallets, do NOT retry (same as Radial’s Apple Pay guidance)
Configuration errorsTenderGatewayConfigurationException — store/country configinvalid_service_configuration, invalid_service_credentials, invalid_service_response — connector-level
Raw processor codesNot surfaced in the fault/response layerAvailable in raw_response_code and raw_response_description transaction fields

Part 4: Gr4vy Codes With No Radial Equivalent

These Gr4vy error_code values represent functionality that Radial either does not expose or handles differently:

Gr4vy error_codeWhy it has no Radial equivalent
flow_declineGr4vy-specific — transaction declined by a Flow orchestration rule (fraud, routing logic)
all_attempts_skippedGr4vy-specific — no Flow outcome could route the transaction
incomplete_buyer_approvalGr4vy redirect/3DS buyer abandoned the popup; Radial uses Cardinal Commerce externally
failed_buyer_approval3DS authentication failure — Radial delegates this to third-party 3DS provider
canceled_buyer_approvalBuyer explicitly canceled (e.g. closed Apple Pay sheet)
duplicate_transactionGr4vy deduplication check; Radial does not surface this as a named fault
refused_transactionSanctions / AML / watchlist block — Radial has no direct equivalent at the response-code layer
service_rate_limitConnector API rate limiting — not a Radial concept
expired_authorizationCapture attempted on a stale auth — not surfaced as a named code in Radial
refund_period_expiredRefund past the allowed window — Radial does not surface this as a named code