In a perfect world every payment initiated will be processed successfully as planned. Unfortunately there are more than a few reasons why a payment may fail along the way.
Below we discuss the transactional failure states along with its reasons.
Debit and a Credit:
One of Zepto's unique features is our granular reporting covering both sides of a transaction. To support this feature, each payment initiated in our system creates both a debit and a credit. Both transactions need to be successful for a payment to complete its lifecycle.
e.g. A merchant wants to get paid and sends a Payment Request to their customer. Zepto will create a debit of the customer’s account as well as schedule a credit to the merchant’s account.
In the above scenario, the credit and debit will both have their own lifecycle and transition between different states. Should either the debit or the credit fail, then the whole transaction will fail.
Failed Debit status:
When a debit to a bank account fails, Zepto will report with one of the following states:
returned: Typically due to insufficient funds and has dishonoured.
prefailed : The bank account failed the available funds pre-check.
voided : The payment initiator has purposefully voided the transaction before it has matured.
Failed Credit status:
When a credit to a bank account fails, Zepto will report with one of the following states:
returned : Typically due to the bank account not existing.
prefailed : The credit couldn't be initiated due to the associated debit failing the available funds pre-check.
The payment initiator purposefully voided the transaction before maturation.
The associated debit failed therefore Zepto will automatically void the scheduled credit.
With each failure status, a failure reason is also made available. A list of these reasons can be found at the following link: https://docs.zepto.money/#failure-reasons