February 2024

We work hard to ensure everyone who uses ZWITCH gets the best experience. Every day, we take small steps towards enhancing new products and improving the performance of existing functionality. We also fix occasional bugs in the system.

Below are the improvements we made in February 2024.

📘

Note:

  • Except for breaking changes, all other changes are backward compatible.
  • Currently, we work on a daily release cycle. We push changes to the production environment as they are developed. However, we will notify you about breaking changes, new feature releases, and major enhancements via email before they are released.

:tada: Enhancements

Below is the improvement we made in February 2024 to our payments API.

UPI Collect API

Our partner banks follow the standard settlement cycle for UPI payments as T+1 days.

For instance, if the payment has been successfully approved and captured, the amount against the payment is debited from the debit account and credited to our partner bank. Initially, our partner banks held all the payments received against the ZWITCH virtual accounts for today, and the captured payment settlements will be on the next working day.

Based on this standard settlement cycle update, we have introduced two new parameters in the response object of the UPI Collect API, as listed below.

New ParameterTypeDescription
is_settledbooleanThe status of the payment settlement.

Example: true

Accepted values:
true- The settlement against the payment is successful.
false - The settlement against the payment is still on hold.
settled_atintegerUnix timestamp when ZWITCH settled the payment.

Example: 1658742486

Below is a sample request and sample response for a UPI Collect API.

{
  "remitter_vpa_handle": "anilreddy@examplebank",
  "amount": 1,
  "expiry_in_minutes": 1,
  "remark": "Lego Death Star",
  "merchant_reference_id": "1658735415",
  "metadata": {
    "key_1": "DD",
    "key_2": "XOF"
  }
}
{
  "id": "tx_ZqO63TLdwmH5VG8esTYqbf6b8",
  "object": "payment",
  "type": "collect",
  "account_id": "va_4ZEQNZdHCqT6c6M5gJ7RxIIWx",
  "amount": 1,
  "currency": "inr",
  "transacted_at": 1658741486,
  "bank_reference_number": "220601609446",
  "status": "success",
  "remitter_bank_account_number": "XXXXXX5640",
  "remitter_bank_ifsc_code": "HDFC0000123",
  "remitter_full_name": "Anil Reddy",
  "remitter_note": "Lego Death Star",
  "remitter_vpa_handle": "anilreddy@examplebank",
  "paid_mode": "upi",
  "paid_to": "zwitch1234@examplebank",
  "transaction_reference_id": "418ab972d9bc4b44834c3d5a2eb95315",
  "remark": "Lego Death Star",
  "merchant_reference_id": "1658735415",
  "expiry_in_minutes": 3,
  "mandate_id": null,
  "metadata": {
    "key_1": "DD",
    "key_2": "XOF"
  },
  "is_sandbox": false,
  "link": null,
  "created_at": 1658741486,
  "is_settled": false,
  "settled_at": null
}

As soon as ZWITCH receives the payments from our partner bank, the payments captured are instantly settled in your virtual collection account.

We send a payments.updated webhook event as soon as the payment settlement status is updated.

{
  "id": "evl_tbs3NybYGbbjP5MMzptoFyU3W",
  "object": "event",
  "name": "payments.updated",
  "is_sandbox": false,
  "data": {
    "object": {
      "id": "tx_ZqO63TLdwmH5VG8esTYqbf6b8",
      "object": "payment",
      "type": "collect",
      "account_id": "va_4ZEQNZdHCqT6c6M5gJ7RxIIWx",
      "amount": 1,
      "currency": "inr",
      "transacted_at": 1658741486,
      "bank_reference_number": "220601609446",
      "status": "success",
      "remitter_bank_account_number": "XXXXXX5640",
      "remitter_bank_ifsc_code": "HDFC0000123",
      "remitter_full_name": "Anil Reddy",
      "remitter_note": "Lego Death Star",
      "remitter_vpa_handle": "anilreddy@examplebank",
      "paid_mode": "upi",
      "paid_to": "zwitch1234@examplebank",
      "transaction_reference_id": "418ab972d9bc4b44834c3d5a2eb95315",
      "remark": "Lego Death Star",
      "merchant_reference_id": "1658735415",
      "expiry_in_minutes": 3,
      "mandate_id": null,
      "metadata": {
        "key_1": "DD",
        "key_2": "XOF"
      },
      "is_sandbox": false,
      "link": null,
      "created_at": 1658741486,
      "is_settled": false,
      "settled_at": null
    }
  }
}
{
  "id": "evl_tbs3NybYGbbjP5MMzptoFyU3W",
  "object": "event",
  "name": "payments.updated",
  "is_sandbox": false,
  "data": {
    "object": {
      "id": "tx_ZqO63TLdwmH5VG8esTYqbf6b8",
      "object": "payment",
      "type": "collect",
      "account_id": "va_4ZEQNZdHCqT6c6M5gJ7RxIIWx",
      "amount": 1,
      "currency": "inr",
      "transacted_at": 1658741496,
      "bank_reference_number": "220601609446",
      "status": "success",
      "remitter_bank_account_number": "XXXXXX5640",
      "remitter_bank_ifsc_code": "HDFC0000123",
      "remitter_full_name": "Anil Reddy",
      "remitter_note": "Lego Death Star",
      "remitter_vpa_handle": "anilreddy@examplebank",
      "paid_mode": "upi",
      "paid_to": "zwitch1234@examplebank",
      "transaction_reference_id": "418ab972d9bc4b44834c3d5a2eb95315",
      "remark": "Lego Death Star",
      "merchant_reference_id": "1658735415",
      "expiry_in_minutes": 3,
      "mandate_id": null,
      "metadata": {
        "key_1": "DD",
        "key_2": "XOF"
      },
      "is_sandbox": false,
      "link": null,
      "created_at": 1658741486,
      "is_settled": true,
      "settled_at": 1658742486
    }
  }
}

You can check the status of all the payments using our GET All Payments API.