Changelog

The changelog below reflects new product developments and updates.

2025-12-02

✅ Payin Status Updates

  • Added REFUND_INITIATED state to payin status flow. The payin status now transitions through REFUND_INITIATED before reaching REFUNDED state.
  • Updated Status Reference guide to reflect the new payin status flow.

✅ Refund Reason Updates

  • Introduced refund_reason field to provide specific reasons when payin refunds are initiated or completed. This field is now available in:

    • API Responses: Added in response of Fetch payin and Payin history endpoints.
    • Webhook Payloads: Payin webhook events for REFUND_INITIATED and REFUNDED states
  • Possible refund_reason values include:

    • INCORRECT_AMOUNT - The amount transferred does not match the expected amount for the payin quotation
    • PAYMENT_FROM_NON_WHITELISTED_ACCOUNT - Payment was made from an account that is not whitelisted for the customer
    • THIRD_PARTY_PAYMENT - Payment was made from a third-party account that is not associated with the customer

✅ Selfie Verification Updates

  • Introduced Update Selfie Information endpoint allowing customers to update their selfie information. This endpoint supports up to 3 updates per customer.
  • Added SELFIE_VERIFICATION_FAILED failure reason to KYC verification process. This failure reason is returned when:
    • Selfie image quality is poor or face is not clearly visible
    • Selfie does not match the photo on submitted KYC documents
  • Updated Failure Reason Reference guide to include SELFIE_VERIFICATION_FAILED failure reason.

✅ Webhooks Metadata Fields Documentation

  • Enhanced Webhooks documentation with detailed explanation of metadata fields:
    • Payin Events: failure_reason field for FAILED events and refund_reason field for REFUND_INITIATED and REFUNDED events
    • Customer Events: failure_reason field for FAILED events (including SELFIE_VERIFICATION_FAILED)
    • Bank Events: failure_reason field for FAILED events
  • Added comprehensive webhook payload examples showing metadata fields with actual failure and refund reason values.

2025-11-28

✅ Failure Reasons in Bank Account APIs

  • Introduced failure_reason field in bank account API responses. This field is populated when bank verification status is FAILED, providing specific reasons for verification failures such as:
    • INVALID_IFSC - Invalid IFSC code
    • INVALID_ACCOUNT_NUMBER - Invalid account number
    • ACCOUNT_TYPE_NRE - NRE account type not supported
    • PENNY_DROP_FAILED - Penny drop verification failed
    • NAME_MISMATCH - Account holder name mismatch
    • BANK_RISK_CHECK__FAILED - Bank risk check failed

✅ Failure Reason Reference Guide

  • Added comprehensive Failure Reason Reference guide documenting all failure reason values returned across different API endpoints, including:
    • Bank verification failure reasons
    • KYC verification failure reasons
    • Payin failure reasons

2025-11-26

✅ Error Codes

  • Introduced err_code field for all 4XX and 5XX error responses to provide clearer, machine-readable error classification.

Example:

{
  "status": false,
  "message": "Bad Request",
  "data": null,
  "err_code": "INPUT_MALFORMED",
  "errors": {
    "field_name": ["Error message"]
  }
}
  • Find all available error codes here.

✅ Customer Creation Updates

  • Customer Create endpoint response updated:
    • failure_reason – Value returned in case of status is FAILED indicating rejection reason.
    • document_type – Shows the type of document used for verification.

✅ Add KYC Updates

  • Add KYC endpoint response updated:
    • failure_reason – Value returned in case of status is FAILED indicating rejection reason.

2025-10-09

✅ Payin Quotation

  • Payin Quotation response now includes the ios_checkout_link field to support iOS UPI checkout flows.

2025-08-06

✅ Customer Creation Updates

  • Customer Create endpoint now supports two new optional fields:
    • non_residence_status – Set to true for non-resident customers.
    • residence_alpha_3_country_code – Use this to specify the country of residence for non-resident customers.

✅ KYC Add API Enhancements

  • Add KYC endpoint has been updated:
    • income_range and profession are now wrapped inside a new object: additional_info.
    • Example:
      {
        "additional_info": {
          "income_range": "<10L",
          "profession": "Software Engineer"
        }
      }
      

✅ New KYC Configuration Endpoint

  • A new endpoint KYC Configuration is now available.
  • It returns:
    • supported_document_types – A list of accepted document types for Add KYC.
    • additional_info_required – Specifies required fields (income_range, profession), with validation rules.

Example response:

{
  "status": true,
  "message": "Success",
  "data": {
    "supported_document_types": [
      "AADHAAR",
      "PASSPORT",
      "VOTER_ID",
      "DRIVING_LICENSE"
    ],
    "additional_info_required": {
      "options": ["income_range", "profession"],
      "rules": {
        "type": "allOf",
        "min_required": 2
      },
      "income_range": {
        "type": "string",
        "required": true
      },
      "profession": {
        "type": "string",
        "required": true
      }
    }
  }
}

✅ Payout / Payin Configuration Updates

🔁 Previous Structure:

{
  "data": {
    "supported_fiats": ["inr"],
    "supported_assets": ["usdt", "usdc"],
    "coin_limits": {
      "{fiat}": {
        "{asset}": {
          "imps": { "min": 30, "max": 5850 },
          "upi": { "min": 30, "max": 5850 }
        }
      }
    },
    ...
  }
}

✅ New Structure:

{
  "data": {
    "inr": {
      "supported_assets": ["usdt", "usdc"],
      "supported_networks": {
        "usdt": ["polygon", "eth", "bsc", "sepolia", "solana", "tron", "arbitrum"],
        "usdc": ["polygon", "eth", "bsc", "sepolia", "solana", "tron", "arbitrum"]
      },
      "coin_limits": {
        "usdt": {
          "imps": { "min": 28, "max": 5563 },
          "upi": { "min": 28, "max": 1113 }
        },
        "usdc": {
          "imps": { "min": 28, "max": 5563 },
          "upi": { "min": 28, "max": 1113 }
        }
      },
      ...
    }
  }
}
  • This update introduces greater granularity with nested structures under each fiat currency (e.g. inr) and detailed supported_networks per asset.

2025-07-22

✅ KYC EDD Updates

  • /kyc/add-edd-data endpoint is removed.
  • Replaced by:
  • We've also published an EDD Guide to help you understand how to integrate it.

✅ Payout Configuration

  • Payout Configuration now includes mandatory risk parameters required while generating a Payout Quotation.

✅ Payout Quotation

  • Payout Quotation now accepts risk parameters configured for your organization.

✅ Payin Quotation Improvements

  • Payin Quotation
    • selfie_url is removed and no longer required.
    • Separate examples added for UPI and Bank Transfers to clarify expected payloads.
    • New QR Generation Guide added for simplifying UPI integrations.
    • Changed payment_method from bank_transfer to imps

✅ New Limits APIs

These endpoints return:

  • daily_limit – Customer's daily FIAT limit
  • available_limit – Available FIAT limit remaining
  • full_limit_reset_timestamp – Timestamp when full daily limit resets
  • is_edd_required – Does the customer need to complete EDD for the next transaction?
  • is_limit_increase_available – Can the customer request a limit increase via EDD?

✅ Payin Order Status Updates

✅ Error Codes

  • Error code tables have been added across all relevant Endpoints pages.

✅ UTR Guide