Making a Payment (PayOut)

Webhooks are used to notify your application of changes to the status of Agreements, Payment Requests, Credits, Debits, etc as they are processed through the system.

By subscribing to our webhook events you can monitor the status of each transaction, and then trigger the appropriate next steps. While making Payments and Payment Requests, webhooks allow you to check the status of the transactions.

This article gives an overview of the webhook events you would expect to receive for the following scenarios.

Making a Payment

💡

Keep the data.ref from the original api call response as the subsequent webhook notifications will be associated with this reference in the parent_ref field. The ref will look like PB.vhjt.

via NPP

Scenario: Successful

The webhooks that are fired when you make a payment (from your primary account or the float account) are as follows:

  • payment.added
  • debit.scheduled
  • debtor_credit.scheduled
  • debit.maturing
  • debit.matured
  • debit.processing
  • debit.clearing
  • debit.cleared
  • debtor_credit.matured
  • debtor_credit.processing
  • debtor_credit.clearing
  • debtor_credit.cleared - (Funds were credited into the end customer's account)

For a successful NPP transaction, the final event that the system will fire is debtor_credit.cleared. Please note, that the above webhooks will be fired under the category payout


Scenario: Unsuccessful (with no channel switch to DE)

If you chose a standard Float account (with only NPP transactions or only DE), you would expect to receive the following webhooks:

  • payment.added
  • debit.scheduled
  • debtor_credit.scheduled
  • debit.maturing
  • debit.matured
  • debit.processing
  • debit.clearing
  • debit.cleared
  • debtor_credit.matured
  • debtor_credit.processing
  • debtor_credit.clearing
  • debtor_credit.returned - (Funds will be returned back to your account)
ℹ️

Since the debit side of the transaction was successful, the credit will be reversed back into the original bank account. The below events will then be fired, under the category payout_reversal.

  • credit.scheduled
  • credit.matured
  • credit.processing
  • credit.clearing
  • credit.cleared - (Funds have been returned to your account)
{
  "data": [
    {
      "ref": "C.2v404",
      "type": "credit",
      "amount": 103,
      "status": "cleared",
      "bank_ref": "CT.2ofh9",
      "category": "payout_reversal",
      "channels": [
        "float_account"
      ],
      "cleared_at": "2025-12-15T02:58:44Z",
      "created_at": "2025-12-15T02:58:43Z",
      "matures_at": "2025-12-15T02:58:43Z",
      "parent_ref": "PB.vhjt",
      "party_name": "Sujeet & Co.",
      "description": "Payout reversal of D.2mrc5 for Sujeet Shrestha due to Account closed",
      "party_bank_ref": "DT.61uw8",
      "party_nickname": "sujeets_au",
      "bank_account_id": "0197a14d-209f-7540-a059-22202fc8c031",
      "current_channel": "float_account",
      "party_contact_id": null,
      "reversal_details": {
        "source_debit_ref": "D.2mrc5",
        "source_credit_failure": {
          "code": "E103",
          "title": "Account Closed",
          "detail": "The target account is closed."
        },
        "source_credit_failure_reason": "account_closed"
      },
      "status_changed_at": "2025-12-15T02:58:44Z"
    }
  ],
  "event": {
    "at": "2025-12-15T02:58:44Z",
    "who": {
      "account_id": "2bdcc210-072d-4e09-b90e-757be5bd9853",
      "account_type": "Account",
      "bank_account_id": "0197a14d-209f-7540-a059-22202fc8c031",
      "bank_account_type": "BankAccount"
    },
    "type": "credit.cleared"
  }
}

So, in summary the key final state events are:

  • debtor_credit.cleared
  • debtor_credit.returned
  • credit.cleared - (category payout_reversal)


Scenario: Unsuccessful via NPP (but successfully processed via DE after channel switching)

If you chose an NPP hybrid account, failed NPP payments are retried via DE, you would expect to receive the following webhooks:

  • payment.added
  • debit.scheduled
  • debtor_credit.scheduled
  • debit.matured
  • debit.processing
  • debit.clearing
  • debit.cleared
  • debtor_credit.matured
  • debtor_credit.processing
  • debtor_credit.channel_switched - (Funds are being sent via the BECS channel)
  • debtor_credit.processing
  • debtor_credit.clearing
  • debtor_credit.cleared - (Funds have been sent to the end customer's bank and marked as cleared on the Zepto dashboard.)
⚠️

Note:

For DC transactions, the cleared webhook does not guarantee that the funds have been settled into the end customer's account. The end customer's bank can take a few hours to settle the funds in the associated bank account.

It has been previously noticed, that for a Direct Credit transaction, the banks can get back to us after a day or two, informing us that the credit to the end customer's account has failed due to various reasons (eg: bank account closed).

In this case, our system will trigger another webhook event with the category payout_reversal. The event flows are outlined in the scenario above.


via Direct Entry (Direct Credit)

Scenario: Successful

The webhooks that are fired when you make a payment (from your primary account or the float account) are as follows:

  • payment.added
  • debit.scheduled
  • debtor_credit.scheduled
  • debit.maturing
  • debit.matured
  • debit.processing
  • debit.clearing
  • debit.cleared
  • debtor_credit.matured
  • debtor_credit.processing
  • debtor_credit.clearing
  • debtor_credit.cleared - (Funds were credited into the end customer's account)

Scenario: Unsuccessful

If you chose a standard Float account, you would expect to receive the following webhooks:

  • payment.added
  • debit.scheduled
  • debtor_credit.scheduled
  • debit.maturing
  • debit.matured
  • debit.processing
  • debit.clearing
  • debit.cleared
  • debtor_credit.matured
  • debtor_credit.processing
  • debtor_credit.clearing
  • debtor_credit.cleared
  • debtor_credit.returned - (Funds will be returned back to your account)
ℹ️

Note:

Our system would mark the credit as cleared for a DC transaction based on the nearest available exchange point. The banks can get back to us within one or two business days informing us that the credit failed due to any reason. In this case, the final debtor_credit.returned event will be fired.

Since the debit side of the transaction was successful, the credit will be reversed back into the original bank account. The below events will then be fired, under the category payout_reversal.

  • credit.scheduled
  • credit.matured
  • credit.processing
  • credit.clearing
  • credit.cleared - (Funds have been returned to your account)