Zero balance integration

Review zero balance integration workflow for card validation and network message validation.

Zero balance integration offers a fast, simple, and efficient management system for network card transactions by providing card management and authorization integration to a card issuer, such as Visa and Mastercard. With this solution, you can manage your customer's balances, credit limits, and lifecycle without having to go through the extensive integration and certification process yourself.

Zero balance integration provides the full range of services:

  • Card creation and management.
  • Online authorization interface (authorization/base I).
  • Authorization clearing (clearing/base II).
  • Dispute integration.

Zero balance integration workflow

The basic steps of zero balance integration workflow are:

10301030
  1. The user provides a merchant with the card information through any of multiple entry modes, such as contactless, chip, magstripe, or typing the card information in an online transaction gateway.
  2. The merchant's point-of-sale (POS) device or payment gateway formats a message with an authorization request to the acquirer.

πŸ“˜

Most POS devices are owned by the acquirer.

  1. The acquirer sends a message to the card network.
  2. The card network sends a message to the processor, the Pismo platform.
  3. The Pismo platform performs a set of validations on the message:
    • stateless (message integrity and consistency, such as PIN, CVV, entry mode, and so on)
    • stateful (card status, expiration date, password tries, and so on)

πŸ“˜

Some validations can be customized by the issuer, including:

  • Allow local currency to be used in international purchases
  • Allow transaction using card magnetic stripe
  • Check terminal capabilities (entry mode vs terminal capability)
  • Must verify cryptogram for contactless or chip transactions
  • Allow no-CVV and PIN validation for the card not present transactions
  • Disable Card Verification Method (CVM)
  • Validate chip signature
  • PIN max error attempts
  • Application Transaction Counter (ATC) range validation
  1. If the message is not valid, the Pismo platform replies to the card network declining the transaction.
    If the message is valid, the Pismo platform converts the message to a JSON format and sends it to the card issuer for the issuer to authorize or reject the transaction.
  2. The Pismo platform receives the authorization response from the card issuer.

🚧

The Pismo platform sets a time-out limit of 2 seconds for the issuer's authorization response. If Pismo cannot contact the issuer, or the request takes longer than the time-out limit, the transaction is declined. In this case, Pismo sends a callback message to a persistence delivery system (queue) for the card issuer to be aware of it and to take any necessary actions as needed.

  1. The Pismo platform sends back the authorization response to the card network in the pertinent protocol.
  2. The card network sends back the response to the acquirer.
  3. The acquirer sends the message to the merchant.

Simulate an authorization

To simulate a network transaction authorization, see Simulate authorizations. For zero balance integration, you can simulate all scenarios on this page, except clearing/base II.

Card issuer authorization

When utilizing zero balance integration, you need to register your own card issuer endpoint during setup. This endpoint enables you to then send an authorization request that adheres to the standards in the provided API reference. This reference shows the standardized message that the Pismo platform sends to the card issuer.

Below is the sample payload that the Pismo platform sends to the card issuer. The example contains some simulated information in the fields. The missing values depend on the type of authorization request the Pismo platform receives from the card network.

{
    "id": "99999999-aaaa-aaaa-1111-1234567abcde",
    "entity": "transaction",
    "fields": {
        "mti": "0100",
        "card_id": 1,
        "account_id": 1,
        "amount_transaction": 10.10,
        "amount_local": 10.10,
        "amount_settlement": 2.05,
        "transaction_timestamp": "2021-11-05T16:00:00",
        "processing_code": "000000",
        "payment_card_brand": "Mastercard",
        "currency": "986",
        "merchant_id_code": "599999000009999",
        "merchant_name": "MERCHANT NAME  ",
        "merchant_city": "MERCHANT CITY     ",
        "merchant_state_or_country_code": "USA",
        "merchant_terminal_id": "",
        "atc_chip": "",
        "atc_database": "",
        "cvv_data": "",
        "entry_mode": "10",
        "mcc": "5942",
        "card_type": "PLASTIC",
        "country_code": "",
        "chip_validation": true,
        "postal_code": "99999999",
        "chip_cryptogram_information_data": "",
        "chip_transaction_date": "",
        "chip_transaction_type": "",
        "chip_amount_authorized": "",
        "chip_transaction_currency_code": "",
        "chip_application_interchange_profile": "",
        "chip_terminal_country_code": "",
        "chip_cardholder_verification_method": "",
        "chip_terminal_capabilities": "",
        "chip_amount_other": "",
        "chip_application_transaction_counter": "",
        "cardholder_postal_code": "",
        "transaction_type": "00",
        "nsu": "999999",
        "retrieval_reference_number": "999919319999",
        "authorization_code": "ABC123",
        "response_code": "00",
        "terminal_capability": "2",
        "tvr": "",
        "cvr": "",
        "number_of_installments": 1,
        "network_score": 0,
        "pos_postal_code": "99999999",
        "acquirer_code": "016205",
        "denial_code": "",
        "financial_network_code": "MRW",
        "banknet_reference_number": "ZZZ999",
        "network_transaction_data": "",
        "original_network_data": {}, 
        "cvv_presence": false,
        "password_present": false,
        "account_type": "00",
        "validation_results": [{}]
    }
}

The expected response from the card issuer for the approved transaction:

{
  "is_approved":true,
  "response_code":"00",
  "limit_amount":null
}

The expected response from the card issuer for the declined transaction:

{
  "is_approved":false,
  "response_code":"57",
  "limit_amount":null
}

Related pages

Guide / Card network authorization overview
Guide / Simulate authorizations
API reference / Issuer authorization


Did this page help you?