Table of contents

Issuer response codes

Issuer Response Codes (F39)

The ISO 8583 Field 39 (F39) response code is the authoritative indicator of why a card transaction was approved or declined. This code comes directly from the card issuer and provides the most accurate reason for transaction outcomes, without intermediary error mapping that might obscure the actual reason.

Finding the Response Code

The issuer response code is located in the transaction_data.attempts[].extra.response_code field of the purchase response.

Example Response

JSON

{
  "client": {
    "email": "sarah.johnson@example.com",
    "phone": "+27821234567",
    "full_name": "Sarah Johnson"
  },
  "purchase": {
    "currency": "ZAR",
    "products": [
      {
        "name": "Monthly Subscription",
        "price": 29900,
        "quantity": "1.0000"
      }
    ],
    "total": 29900
  },
  "transaction_data": {
    "payment_method": "",
    "flow": "server_to_server",
    "extra": {
      "card_type": "debit",
      "card_brand": "visa",
      "card_issuer": "first national bank",
      "card_issuer_country": "ZA"
    },
    "attempts": [
      {
        "type": "execute",
        "successful": false,
        "payment_method": "visa",
        "flow": "server_to_server",
        "extra": {
          "RRN": "502847291038",
          "card_type": "debit",
          "card_brand": "visa",
          "descriptor": "ACME Corp",
          "masked_pan": "411111******1111",
          "card_issuer": "first national bank",
          "expiry_year": 27,
          "expiry_month": 9,
          "card_category": "PERSONAL",
          "response_code": "51",
          "cardholder_name": "SARAH JOHNSON",
          "commerce_indicator": "internet",
          "card_issuer_country": "ZA",
          "network_transaction_id": "0115XYZABC123"
        },
        "country": "ZA",
        "client_ip": "192.168.1.100",
        "processing_time": 1768397734,
        "processing_status": "{\"class\":\"external\",\"code\":\"INSUFFICIENT_FUND\",\"message\":\"Decline - Insufficient funds in the account.\"}",
        "error": {
          "code": "insufficient_funds",
          "message": "Insufficient funds"
        }
      }
    ]
  },
  "status": "error",
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Key Fields

Field PathDescription
transaction_data.attempts[].extra.response_codeThe F39 issuer response code
transaction_data.attempts[].extra.masked_panMasked card number
transaction_data.attempts[].extra.card_issuerIssuing bank name
transaction_data.attempts[].processing_statusDetailed processing status with mapped error
transaction_data.attempts[].errorSimplified error object

Soft Decline Codes

Soft declines are temporary failures that may succeed if retried.

Response CodeDefinition
01Invalid Card length
01VSDC STIP Default Response Code
01CVV2 STIP Default Response Code
04CVV2 STIP Default Response Code
05Missing Expiration Date
05VSDC STIP Default Response Code
05Decline Key Entered transactions in STIP
05RTD Decline in STIP
05Decline in STIP transactions acquired in a Risky Country
05Issuer Default STIP Response Code (Transaction Type and/or MCG)
05OCT Rules Engine Decline
05CAM not performed due to missing data
05CAM not eligible for CHIP txn
05AA score greater than AA STIP
05TTL expired, auth/fin txns only
10Partial Approval
14No Issuer for Account Number
21PCAS Reversal cannot find Original Activity
54Invalid PAN length
54Expired Card
54VSDC STIP Default Response Code
55VSDC STIP Default Response Code
55International transaction — PIN Not Present
55Domestic PIN Not Present
57Invalid Check Digit
57International ATM transaction not permitted for this Service Code
57Account Range Blocked
61Activity Amount Limit Exceeded
62Restricted Country
65Activity Count Limit Exceeded
75VSDC STIP Default Response Code
82Incorrect CVV
86PIN Present but Not Verified
91STIP default response code from Country-to-Country Exclusion Table
91Decline Generic EMV transactions in STIP
91Decline in STIP Non-domestic Key Entered transactions
91Decline in STIP Card Not Present transactions
91Decline in STIP PIN-present transactions
91Decline in STIP PIN-not-present transactions
91Decline in STIP transactions above USD 100,000
91Decline in International transactions
N7CVV2 STIP Default Response Code
R0Decline in STIP — Stop Payment Order
R1Decline in STIP — Revocation Of One Authorization Order
R3Decline in STIP — Revocation Of All Authorization Order

Hard Decline Codes

Hard declines are permanent failures that will not succeed on retry. These require customer intervention.

Response CodeDefinition
00Processed in STIP / Generic Send to STIP with no Error
01CVV Default Response Code — Refer to Issuer
02Refer to Issuer — Special Condition
04CVV Default Response Code — Pick Up Card
05CVV Default Response Code — Decline
05CAVV validation failed
05WLM Scoring Request Decline
05Targeted Acceptance Decline
05CAVCS transaction decline
05CAM failed (CAM — All respond)
05MIT Timeline failure
12Invalid transaction
12Bill Payment not supported for this country, MCC, or Network
12Token auth/prov environ mismatch
13Currency Conversion overflow / amount invalid
14Invalid PAN length
14Invalid Check Digit
15No Issuer for Account Number
19Merchant fraud risk assessment
21Delayed Settlement
51Insufficient Funds
54Expired Card
55Incorrect PIN
55PIN Missing
57Invalid Service Code
57Transaction Type and/or MCG blocked for issuer
57Issuer Blocked
57Acquirer Blocked
57Sanction Bin Blocking - decline
58Transaction not allowed in acquirer terminal
59RTD Decline
61Money Transfer Amount Limit exceeded
62Restricted Country for card usage
62MIT Timeline failure
64Transaction does not fulfill AML requirement
65Money Transfer Amount Limit exceeded
75"PIN Incorrect" activity threshold exceeded
76Unsolicited Reversal
81PIN decryption error
82Incorrect CVV or iCVV
83Unable to verify PIN
85Account Verification — No Reason to Decline
86Could not Verify PIN
91Destination unavailable
93Transaction could not be completed — Violation Of Law
94Duplicate transmission
96I/O Error retrieving CDB record
N5Not eligible for resubmission
N7CVV2 Failed
N8Transaction amount in Completion exceeds that in Pre-Auth
R0Stop Payment Order
R1Revocation of Authorization Order
R3Revocation of all Auth Order

Common Response Codes Quick Reference

CodeCategoryMeaningRecommended Action
00ApprovedTransaction approvedNone required
01SoftRefer to issuerRetry or contact issuer
05HardDo not honorUse different card
12HardInvalid transactionCheck transaction data
14HardInvalid card numberVerify card details
51HardInsufficient fundsCustomer to add funds or use different card
54HardExpired cardUse valid card
55HardIncorrect PINRe-enter PIN
57HardTransaction not permittedUse different card/method
61SoftExceeds withdrawal limitRetry with lower amount or later
65SoftActivity limit exceededRetry later
91SoftIssuer unavailableRetry later

Retry Logic Recommendations

Soft Declines

  • Wait and retry: Allow 15-30 minutes before retrying
  • Maximum attempts: Limit to 3 retry attempts per 24-hour period
  • Exponential backoff: Increase wait time between retries

Hard Declines

  • Do not retry automatically: These require customer action
  • Notify customer: Provide clear instructions on next steps
  • Request alternative payment: Prompt for a different payment method

Special Cases

CodeHandling
51 (Insufficient Funds)Allow customer-initiated retry after they've added funds
54 (Expired Card)Request updated card details
91 (Issuer Unavailable)Implement automatic retry with exponential backoff
65 (Activity Limit)Wait until the next calendar day to retry

Integration Notes

  1. Always log the F39 code: Store the response_code for all transactions for debugging and analytics
  2. Don't rely solely on mapped errors: The processing_status and error fields contain mapped values that may lose specificity
  3. Build response code handling: Implement specific handling based on F39 codes rather than generic error categories
  4. Monitor trends: Track response code frequency to identify issues with specific card types or issuers