ISO8583 Processing Codes for Transaction Processing

Jan 19, 2021 6 min read 62,819 views
ISO8583 Processing Codes for Transaction Processing

List of ISO8583 processing codes, description and use with Video guide and example in the ISO8583 Card Payments Simulator. Video below

Wikipedia already has a very in-depth description of the ISO 8583 standard.

The world of electronic payments relies on precision and standardization. At the heart of this intricate system lies the ISO 8583 standard, defining the structure of financial transaction messages. Within these messages, a small but mighty field, the Processing Code (DE 3), acts as a crucial instruction set, guiding the transaction through the complex payment ecosystem.

 

What are ISO 8583 Processing Codes (DE 3)?

 

The Processing Code is Data Element 3 (DE 3) within an ISO 8583 message. It's typically a six-digit numeric field that explicitly defines:

  1. The Transaction Type: What kind of financial activity is being requested (e.g., purchase, cash advance, balance inquiry).

  2. The Account Type From: Which account is being debited or is the source of funds (e.g., checking, savings, credit).

  3. The Account Type To: Which account is being credited or is the destination of funds (e.g., checking, savings, credit).

Essentially, the Processing Code tells the recipient system, "Here's what I want to do, and which accounts are involved."

 

Structure of the Six-Digit Code:

 

The six digits are broken down into three pairs:

  • Digits 1-2: Transaction Type

    • 00: Purchase/Sale

    • 01: Cash Advance

    • 09: Purchase with Cashback

    • 20: Balance Inquiry

    • 30: Funds Transfer

    • 31: Utility Payment

    • 50: ATM Withdrawal

    • 51: PIN Unblock

    • And many more...

  • Digits 3-4: From Account Type

    • 10: Savings Account

    • 20: Checking Account (Current Account)

    • 30: Credit Card Account

    • 40: Universal Account

  • Digits 5-6: To Account Type

    • 00: Not specified / Not applicable (for single-account transactions like purchases or withdrawals)

    • 10: Savings Account

    • 20: Checking Account

    • 30: Credit Card Account

    • 40: Universal Account

Example:

  • 001000: A purchase (00) from a Savings Account (10), with no "To" account specified (00).

  • 502000: An ATM withdrawal (50) from a Checking Account (20), no "To" account.

  • 301020: A Funds Transfer (30) from a Savings Account (10) to a Checking Account (20).

 

 

Message Types Processing Code MTI (Request/Response)

Network Message (Sign On) 1804/1814

Cash Withdrawal 01 1200/1210

Cash Withdrawal Reversal 01 1420/1430

Balance Inquiry 31 1100/1110

Mini Statement 38 1100/1110

Fund Transfer 40 1200/1210

POS Purchase - SinglePOS (Terminal & Ecom) 00 1200/1210

POS Purchase - DualPOS 00 1100/1110

POS Cash Advance 01 1200/1210

POS Refund (Terminal & Ecom) 20 1200/1210

POS Void (Terminal & Ecom) 02 1200/1210

POS Void Reversal 02 1420/1430

POS Purchase Reversal (Single POS) (Terminal & Ecom) 00 1420/1430

POS Purchase Completion (Dual POS) 00 1120/1130

POS Purchase Cancellation (Single POS) 00 1100/1110

 

 

How ISO8583 Processing Codes are Used

 

Processing codes are instrumental in orchestrating the flow and handling of a ISO8583 transaction across various entities in the payment network:

  1. Routing Decisions:

    • Acquirer to Issuer: When a POS terminal sends a purchase request, the acquiring bank uses the processing code to understand the transaction type and identify the appropriate internal system to route it to.

    • Network (e.g., Visa, Mastercard): The card network uses the processing code to route the transaction to the correct issuing bank or to its own internal services (e.g., for specific loyalty programs).

    • Issuer: The issuing bank uses the code to determine which internal application should process the request (e.g., debit card system, credit card system, fraud engine) and which account to access.

  2. Transaction Validation and Business Logic:

    • The code dictates which business rules apply. For instance, an ATM withdrawal (50xxxx) might have daily limits, while a purchase (00xxxx) might not.

    • It helps determine if specific additional data elements are required or forbidden. A balance inquiry (20xxxx) wouldn't need a transaction amount (DE 4), but a purchase (00xxxx) would.

    • For transfers (30xxxx), it confirms that both "From" and "To" account types are valid for the given transaction.

  3. Risk and Fraud Management:

    • Specific processing codes might trigger different fraud detection rules. A large cash advance (01xxxx) might be subject to stricter scrutiny than a regular purchase.

  4. Reporting and Reconciliation:

    • Processing codes are vital for categorizing transactions for financial reporting, settlement, and reconciliation processes. They ensure that all parties correctly account for the type of activity.


 

Implementing ISO 8583 Processing Codes

 

Implementing processing codes correctly is critical for the stability and accuracy of any payment system.

 

1. Clear Specification and Documentation:

 

  • Business Requirements: Start with precise business requirements for every transaction type your system needs to support. For example, "Support online purchase from a credit card account," "Allow ATM withdrawals from savings."

  • Technical Specification: Map these business requirements to specific ISO 8583 processing codes. Document this mapping meticulously. Define any custom or extended processing codes if your system requires them, though generally, sticking to industry-standard codes is preferred for interoperability.

 

2. Message Construction and Parsing:

 

  • Encoding/Packing: When your system sends an ISO 8583 request, it must correctly populate DE 3 based on the transaction intent. This involves converting the logical transaction type and account types into the six-digit numeric code.

  • Decoding/Unpacking: When your system receives an ISO 8583 message, it must parse DE 3 to understand the sender's intent. This means extracting the transaction type and account types to drive subsequent processing.

    • Example (Java-like pseudo-code for parsing):

      Java
       
      String processingCode = isoMessage.getDataElement(3); // e.g., "002000"
      String transactionType = processingCode.substring(0, 2); // "00"
      String fromAccountType = processingCode.substring(2, 4); // "20"
      String toAccountType = processingCode.substring(4, 6);   // "00"
      
      switch (transactionType) {
          case "00":
              // Handle Purchase logic
              break;
          case "20":
              // Handle Balance Inquiry logic
              break;
          // ...
      }
      

 

3. Routing Logic:

 

  • Your payment gateway or switch needs rules to route transactions based on DE 3. This often involves a lookup table or configurable routing engine that directs messages to the appropriate internal services or external networks.

    • Example Routing Rule: "If DE 3 starts with '01' (Cash Advance), route to the 'CashAdvanceService' for approval."

 

4. Business Logic Integration:

 

  • The transaction type and account types derived from DE 3 will directly influence the business logic applied to the transaction. This includes:

    • Account Validation: Verifying the "From" and "To" accounts exist and are valid for the requested operation.

    • Balance Checks/Updates: Performing debits/credits on the correct accounts.

    • Fee Calculation: Applying transaction-specific fees.

    • Authorization Rules: Checking against limits, fraud scores, etc.

 

5. Error Handling and Response Codes:

 

  • If a requested processing code is invalid or not supported, the system must return an appropriate ISO 8583 response code (e.g., DE 39). This informs the sender that the requested operation could not be performed.

 

6. Testing:

 

  • Crucially, extensive testing is required. This includes:

    • Positive Scenarios: Verifying that all supported processing codes work as expected.

    • Negative Scenarios: Testing with unsupported or malformed processing codes to ensure graceful error handling.

    • Edge Cases: Testing scenarios that might combine unusual account types or transaction types.

 

Conclusion

 

The ISO 8583 Processing Code (DE 3) is far more than just a number; it's a compact, powerful instruction set that defines the essence of a financial transaction. Proper understanding and meticulous implementation of processing codes are fundamental to building robust, interoperable, and efficient electronic payment systems that seamlessly handle the diverse demands of modern commerce.

 

Tags:
ISO8583 processing codes transaction field 03 reference guide
  Related

Recent Articles on Reference guide

Choose the product you need

ISO8583 Converter REST-api

Convert ISO8583 to rest-api JSON XML SQL &more

ISO8583 Interface Connector

Integrate ISO8583 card schemes and hosts

ISO20022 SWIFT MT MX Converter

Convert and integrate ISO20022 SWIFT MX with MT , ISO8583

ISO8583 Builder Parser Connector

Most simple solution to build and parse ISO8583 messages

ISO8583 Switch Router

ISO8583 or REST-api Switch Router Bin Amount

Card Payments Authorization

Pre-screen, pre-authorize and Authorize cards and ledger

POS Card Acquirer & Aggregator

Acquiring and Aggregating from POS and other devices

Cards Generator Issuing Host

Generate and export card data for cards issuing and test

ISO8583 Simulator

ISO8583 HISO98 HISO87 simulator

ISO20022 Simulator

ISO20022 & SWIFT simulator

POS Simulator

POS protocols simulator

Mobile Banking Simulator

Mobile Banking Testing Simulator

QR Payments Connector

EMV QR Payments Interface Connector

Micropayments Connector

Micropayments Acquiring Connector & Router

ISO8583 Alerts Notifications

Detect Anomalies, Alerts & Notifications

Clearing & Settlement

Generate Convert Import

Request a Quote

Get a free quote, Ask for details
Get help

Documentation

Read Documentation and Start guides

Online Tools

Online Tools Overview