BucksBox Developer DocsBucksBox Developer Docs
Getting Started
Merchant API
Partner API
SDK
GitHub
Getting Started
Merchant API
Partner API
SDK
GitHub
  • Overview
  • Authentication & Security
  • Endpoint Reference
  • Multi-Language Integration
  • Account

    • Profile
    • Balance
    • Merchants
    • Transactions
    • Commission
  • On behalf of merchants

    • UPI
    • AEPS
    • DMT

Commission

Manage the commission slabs your merchants earn/pay on, per payment method and transaction volume band.

This page was rewritten against the live backend

The previous version documented /api/v1/vendor/commission with fields (aggregatorId, paymentMethod, chargeType, chargeValue, …) borrowed from a different commission system — the aggregator-only cascade config described in Commission Model, reachable at /commission/aggregator/vendor etc. and gated checkRole("aggregator"), not callable by a vendor credential at all. The vendor-callable commission routes are a separate, slab-based model with a different base path and different fields entirely. What follows is read directly from paymentSystem/src/modules/vendors/routes/commission.route.js (mounted at /vendor-commission).

Base Path

/vendor-commission/:vendorId/commission

Note this is not under /vendor/* like every other page in this section — it's its own top-level prefix (app.register(commission.route.js, { prefix: "/vendor-commission" }) in server.js).

List Slabs

GET /vendor-commission/:vendorId/commission
{
  "statusCode": "00",
  "message": "Commission slabs fetched",
  "data": [
    {
      "id": "slab-uuid",
      "vendorId": "v-uuid",
      "aggregatorId": "agg-uuid",
      "paymentMethod": "DMT",
      "provider": "NSDL",
      "txnType": "TRANSFER",
      "minAmount": 0,
      "maxAmount": 1000,
      "commissionRate": 5,
      "rateType": "FIXED",
      "isDefault": true
    }
  ]
}

Create Slab

POST /vendor-commission/:vendorId/commission
Content-Type: application/json

{
  "paymentMethod": "DMT",
  "provider": "NSDL",
  "txnType": "TRANSFER",
  "minAmount": 0,
  "maxAmount": 1000,
  "commissionRate": 5,
  "rateType": "FIXED",
  "isDefault": true
}
FieldRequiredNotes
paymentMethodYese.g. DMT, AEPS
providerYese.g. NSDL
txnTypeYese.g. TRANSFER, VALIDATION, REGISTRATION
minAmount, maxAmountNoThe volume band this slab applies to
commissionRateNoAmount (for FIXED) or rate (for PERCENTAGE)
rateTypeNoFIXED or PERCENTAGE
isDefaultNotrue to make this the default slab for the paymentMethod+provider+txnType combination — creating a new default automatically unsets any existing one for that combination

vendorId isn't in the body — it's the :vendorId path param, and its aggregatorId is resolved server-side from the vendor record, not sent by you. Fails with 422 { "statusCode": "05" } if this vendor has no aggregator assigned.

{
  "statusCode": "00",
  "message": "Commission slab created successfully",
  "data": {
    "id": "slab-uuid",
    "vendorId": "v-uuid",
    "aggregatorId": "agg-uuid",
    "paymentMethod": "DMT",
    "provider": "NSDL",
    "txnType": "TRANSFER",
    "minAmount": 0,
    "maxAmount": 1000,
    "commissionRate": 5,
    "rateType": "FIXED",
    "isDefault": true
  }
}

Duplicate slab (same vendor + method + provider + txnType + amount band): 409 { "statusCode": "09", "message": "A slab with this combination already exists — adjust min/max amount or txnType" }.

Update Slab

PUT /vendor-commission/:vendorId/commission/:slabId
Content-Type: application/json

{ "commissionRate": 4, "isDefault": false }

Send only the fields you want to change — anything omitted keeps its current value.

{
  "statusCode": "00",
  "message": "Commission slab updated successfully",
  "data": { "id": "slab-uuid", "commissionRate": 4, "isDefault": false, "...": "remaining fields unchanged" }
}

Delete Slab

DELETE /vendor-commission/:vendorId/commission/:slabId
{ "statusCode": "00", "message": "Commission slab deleted successfully" }
Prev
Transactions