# Zero balance anti-fraud and validations integration This guide details the call the Pismo platform makes to a Zero balance issuer during step 5 in the [Full and zero balance transaction workflows](https://developers.pismo.io/pismo-docs/docs/full-and-zero-balance-workflows). Zero balance issuers need to do their own account and limit checks as well as anti-fraud checks. Zero balance issuers need to register a webhook URL for this process during setup. This webhook enables you to send an authorization response to the request that is detailed in the [Zero balance anti-fraud and validations request](https://developers.pismo.io/pismo-docs/docs/client-webhooks#zero-balance-validations-webhook) webhook specification. > 📘 Basic card validations failure > > Note that this webhook is not called if an authorization fails the card checks that Pismo does. In that case, Pismo just responds to the network. 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.
Sample payload ```Text Sample payload { "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: ```Text JSON { "is_approved":true, "response_code":"00" } ``` The expected response from the card issuer for the declined transaction: ```Text JSON { "is_approved":false, "response_code":"57", "limit_amount":null } ``` # Balance inquiry for Zero balance clients Zero balance customers have the option to check a customer's current available credit limit. If a Zero balance webhook request is made with [processing code](https://developers.pismo.io/pismo-docs/docs/processing-codes-and-transaction-types) 30 (balance inquiry), then the response should include an `available_credit_limit` object: ```json { "is_approved": true, "response_code": "00", "available_credit_limit": { "amount": 10.0, "currency_code": 986 } } ``` # Visa partial authorization Partial authorization addresses insufficient fund declines at the point-of-sale. It provides an alternative to a declined transaction when the available Visa card or account balance is not sufficient to approve a transaction in full. Instead of a decline, the transaction is approved for a portion of the original amount requested. The remainder of the transaction amount may then be paid by other means using split tender functionality, where applicable. ## Partial authorization response Set the following fields in the `partial_approval_info` object in the authorization response: * **`local_amount`** - Amount that was partially approved in the transaction's local currency. * **`settlement_amount`**- Amount that was partially approved in the reconciliation currency. * **`cardholder_amount`**- Amount that was partially approved in the cardholder's currency. **Example response** ```Text JSON { "is_approved": true, "response_code": "10", "limit_amount": null, "partial_approval_info": { "local_amount": 10.00, "settlement_amount": 2.00, "cardholder_amount": 8.50 } } ``` > 🚧 Decimal place precision > > The number of decimal places is according to ISO 3166-1 and ISO 4217. For example, both the Brazilian real and United States dollar need to be precise to two decimal places. This applies only to the partial authorization response. A **`response_code`** = "10" means that the transaction was partially approved, and the issuer needs to return the approved amounts fields. When these fields aren't returned or the amounts are negative, Pismo returns the `ZBD` custom field and **`response_code`** = 96.