BridgPay Docs

Beneficiaries

Create, list, update, archive, and reactivate payout targets for bank and UPI rails.

Beneficiaries are tenant-scoped payout targets. A beneficiary may route by bank account + IFSC, or by UPI VPA.

Add Beneficiary

POST /v1/beneficiaries

Add a beneficiary by providing the beneficiary's name, phone number, and payment details. Only active beneficiaries can receive payouts.

If the beneficiary already exists under the same business, the API returns 409 with the existing beneficiary's beneficiaryId -- no duplicate is created. Bank beneficiaries dedupe on accountNumber + ifsc; UPI beneficiaries dedupe on vpa.

Request body

FieldTypeRequiredDescription
namestringyesBeneficiary name. Max 100 characters.
emailstringnoValid email address.
phoneNumberstringyesValid Indian mobile number.
accountNumberstringbank onlyBank account number, 9-18 digits. Required with ifsc; do not send with vpa.
ifscstringbank onlyBank IFSC code, 11 characters in AAAA0XXXXXX format. Required with accountNumber; do not send with vpa.
vpastringUPI onlyUPI VPA such as vendor@okhdfcbank. Do not send with bank fields.

Send exactly one of:

  • Bank target: accountNumber + ifsc
  • UPI target: vpa

Sample bank request body

{
  "name": "Ravi Traders Pvt Ltd",
  "email": "ravi@merchant.com",
  "phoneNumber": "9876543210",
  "accountNumber": "0002053000010425",
  "ifsc": "UTIB0000123"
}

Sample UPI request body

{
  "name": "Ravi Traders Pvt Ltd",
  "email": "ravi@merchant.com",
  "phoneNumber": "9876543210",
  "vpa": "ravi.traders@okhdfcbank"
}

Responses

201 Beneficiary created successfully

{
  "status": 200,
  "data": {
    "beneficiaryId": "123e4567-e89b-12d3-a456-426614174000",
    "beneficiaryCode": "BMBN2026032500001"
  },
  "message": "Beneficiary created successfully",
  "meta": null
}

409 Beneficiary already exists

{
  "status": 409,
  "data": {
    "beneficiaryId": "50a97363-71bb-47b1-af7f-a55444684a58",
    "name": "Test User",
    "email": "test@example.com",
    "phoneNumber": "9876543210",
    "accountNumber": "123456789012",
    "ifsc": "HDFC0001234",
    "vpa": null
  },
  "message": "Beneficiary already exists",
  "meta": null
}

400 Validation error or invalid data · 401 Missing headers / expired timestamp / invalid signature · 500 Internal error — all in the error codes reference.


List Beneficiaries

GET /v1/beneficiaries

Returns beneficiaries for the authenticated business.

This endpoint uses query parameters, so sign it with HMAC v2. Keep the URL as /v1/beneficiaries; do not call /v2/beneficiaries. See API Keys and IP Whitelist.

Query parameters

NameTypeDefaultDescription
limitnumber50Page size, clamped from 1 to 200.
offsetnumber0Zero-based offset.
sinceISO datetimenoneInclude beneficiaries created at or after this time.
untilISO datetimenoneInclude beneficiaries created before this time.
searchstringnoneSearches code, name, email, phone, account number, IFSC, and VPA.
statusstringactiveactive, inactive, or all.

Sample response

{
  "status": 200,
  "data": [
    {
      "beneficiaryId": "123e4567-e89b-12d3-a456-426614174000",
      "beneficiaryCode": "BMBN2026032500001",
      "name": "Ravi Traders Pvt Ltd",
      "email": "ravi@merchant.com",
      "phoneNumber": "9876543210",
      "accountNumber": "0002053000010425",
      "ifsc": "UTIB0000123",
      "vpa": null,
      "status": "active",
      "createdAt": "2026-03-25T10:30:00.000Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "offset": 0,
    "total": 1
  },
  "message": null,
  "meta": null
}

Update Beneficiary

PATCH /v1/beneficiaries/:beneficiaryId

Updates beneficiary profile or payment details. At least one field is required.

Request body

FieldTypeRequiredDescription
namestringnoBeneficiary name.
emailstring, empty string, or nullnoValid email, blank, or null. Blank is stored as null.
phoneNumberstringno10-15 digits.
accountNumberstringnoBank account number.
ifscstringnoIFSC. Normalized to uppercase.
vpastringnoUPI VPA.

Changing payment details can conflict with another beneficiary. In that case the API returns 409.

Sample request

{
  "name": "Ravi Traders",
  "phoneNumber": "9876543210"
}

Sample response

{
  "status": 200,
  "data": {
    "beneficiaryId": "123e4567-e89b-12d3-a456-426614174000",
    "beneficiaryCode": "BMBN2026032500001",
    "name": "Ravi Traders",
    "email": "ravi@merchant.com",
    "phoneNumber": "9876543210",
    "accountNumber": "0002053000010425",
    "ifsc": "UTIB0000123",
    "vpa": null,
    "status": "active",
    "createdAt": "2026-03-25T10:30:00.000Z"
  },
  "message": "Beneficiary updated successfully",
  "meta": null
}

Reactivate Beneficiary

POST /v1/beneficiaries/:beneficiaryId/reactivate

Reactivates an archived beneficiary so it can receive payouts again.

Request body

{
  "reason": "merchant reactivation"
}

reason is optional and may be omitted.


Archive Beneficiary

DELETE /v1/beneficiaries/:beneficiaryId

Archives the beneficiary by setting status to Inactive (0). Inactive beneficiaries cannot receive new payouts, but historical payout records still reference them.

Path parameters

NameTypeRequiredDescription
beneficiaryIdUUIDyesThe beneficiary to deactivate.

Responses

200 Beneficiary archived

{
  "status": 200,
  "data": {
    "beneficiaryId": "123e4567-e89b-12d3-a456-426614174000",
    "status": 0
  },
  "message": "Beneficiary archived successfully",
  "meta": null
}

404 Beneficiary not found — already archived, or not owned by the authenticated business.

On this page