diff --git a/api-references/payments/billpay/api-integration.json b/api-references/payments/billpay/api-integration.json
index 4c6e7682..739df9b4 100644
--- a/api-references/payments/billpay/api-integration.json
+++ b/api-references/payments/billpay/api-integration.json
@@ -2,206 +2,56 @@
"openapi": "3.0.1",
"info": {
"title": "Setu BBPS BillPay",
- "description": "Enable easy BBPS bill payments in your App",
- "version": "0.1.0-alpha"
+ "version": "v2",
+ "description": "Enable easy BBPS bill payments in your App"
},
"servers": [
{
- "url": "https://sandbox-coudc.setu.co/api/v1",
- "description": "Sandbox"
+ "url": "https://coudc.setu.co",
+ "description": "Production server"
},
{
- "url": "https://coudc.setu.co/api/v1",
- "description": "Production"
+ "url": "https://sandbox-coudc.setu.co",
+ "description": "Sandbox server"
+ },
+ {
+ "url": "https://qa-coudc.setu.co",
+ "description": "QA server"
}
],
"paths": {
- "/bbps/billers": {
- "get": {
+ "/v1/auth/token": {
+ "post": {
"tags": [
- "Take bulk actions"
+ "Token API"
],
- "summary": "List billers for category",
- "operationId": "getBillers",
- "parameters": [
- {
- "name": "X-PARTNER-ID",
- "in": "header",
- "description": "Partner ID",
- "required": true,
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "categoryName",
- "in": "query",
- "description": "Category of the biller",
- "style": "form",
- "explode": true,
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- {
- "name": "ids",
- "in": "query",
- "description": "Billers to search",
- "style": "form",
- "explode": false,
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "Limit",
- "schema": {
- "maximum": 1000,
- "minimum": 1,
- "type": "integer",
- "default": 250
- }
- },
- {
- "name": "after",
- "in": "query",
- "description": "Billers are sorted via the Biller ID. Providing a biller Id fetches billers right after this biller in a paginated way.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "search",
- "in": "query",
- "description": "Searches the provided text over Biller name and Biller Alias",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pincode",
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "coverage",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "example": "IND-TEL-Hyderabad",
- "description": "Fetches billers in the provided coverage area"
- },
- {
- "name": "country",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "example": "IND",
- "description": "Fetches billers in the provided country"
- },
- {
- "name": "state",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "example": "TEL",
- "description": "Fetches billers in the provided state"
- },
- {
- "name": "city",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "example": "Hyderabad",
- "description": "Fetches billers in the provided city"
- },
- {
- "name": "tags",
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "paymentChannel",
- "in": "query",
- "style": "form",
- "explode": false,
- "schema": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "INT",
- "INTB",
- "MOB",
- "BNKBRNCH",
- "BSC",
- "AGT",
- "KIOSK",
- "ATM",
- "MOBB",
- "POS",
- "MPOS"
- ]
- }
- }
- },
- {
- "name": "paymentMode",
- "in": "query",
- "style": "form",
- "explode": false,
- "schema": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "Internet Banking",
- "Debit Card",
- "Credit Card",
- "Prepaid Card",
- "IMPS",
- "Cash",
- "UPI",
- "Wallet",
- "NEFT",
- "AEPS",
- "Account Transfer",
- "Bharat QR",
- "USSD"
- ]
+ "description": "Fetch token to be used to authorize all Setu APIs",
+ "operationId": "fetchToken",
+ "requestBody": {
+ "description": "The API key pair",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "clientID": {
+ "type": "string",
+ "description": "clientID from the API key pair"
+ },
+ "secret": {
+ "type": "string",
+ "description": "secret from the API key pair"
+ }
+ },
+ "description": "Fetch Token API payload"
}
}
},
- {
- "name": "updatedSince",
- "in": "query",
- "schema": {
- "type": "string",
- "format": "date-time"
- },
- "example": "2020-12-12T13:12:00+05:30",
- "description": "Fetches billers updated on or after the provided timestamp"
- }
- ],
+ "required": true
+ },
"responses": {
"200": {
- "description": "List of billers",
+ "description": "Auth token response",
"headers": {
"X-Frame-Options": {
"description": "X Frame options",
@@ -249,7 +99,42 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/billerListResponse"
+ "allOf": [
+ {
+ "required": [
+ "expiresIn",
+ "token"
+ ],
+ "type": "object",
+ "properties": {
+ "expiresIn": {
+ "type": "integer",
+ "description": "Token expiry duration in seconds"
+ },
+ "token": {
+ "type": "string",
+ "description": "Token to be used in subsequent requests"
+ }
+ }
+ },
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ ]
}
}
}
@@ -259,38 +144,54 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
- }
- }
- }
- },
- "500": {
- "description": "Bad request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
}
},
- "security": [
- {
- "bbps": [
- "bbps:partner"
- ]
- }
- ]
+ "x-codegen-request-body-name": "fetchTokenPayload"
}
},
- "/bbps/bills/complaint/request": {
+ "/v1/bbps/bills/fetch/request": {
"post": {
"tags": [
- "Manage Dispute"
+ "Fetch"
],
- "summary": "Raise dispute",
- "operationId": "DisputeRequest",
+ "description": "Bill fetch request API",
+ "operationId": "FetchRequest",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -306,7 +207,174 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/couAgentDisputeRequest"
+ "allOf": [
+ {
+ "required": [
+ "agent",
+ "biller"
+ ],
+ "type": "object",
+ "properties": {
+ "biller": {
+ "required": [
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ }
+ },
+ "x-go-gen-location": "models",
+ "x-go-name": "BillerDetails"
+ },
+ "agent": {
+ "required": [
+ "channel",
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "ipv4",
+ "example": "124.170.23.24"
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "os": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "iOS",
+ "enum": [
+ "iOS",
+ "Android"
+ ]
+ },
+ "postalCode": {
+ "pattern": "^[1-9][0-9]{5}$",
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "600001"
+ },
+ "id": {
+ "type": "string",
+ "description": "The ID of the agent initiating the BBPS transaction.",
+ "example": "AX01AI06512391457204"
+ },
+ "ifsc": {
+ "type": "string",
+ "description": "Mandatory if channel is `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "ICIC0000152"
+ },
+ "imei": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "123456789012345"
+ },
+ "mac": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "mac",
+ "example": "48-4D-7E-CB-DB-6F"
+ },
+ "terminalId": {
+ "type": "string",
+ "description": "Mandatory if channel is `ATM`, `AGT`, `KIOSK` and `BSC` . Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "6000011234"
+ },
+ "app": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "SmartPay"
+ },
+ "channel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "geocode": {
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "19.0139,72.8254"
+ }
+ }
+ }
+ },
+ "x-omitempty": true
+ },
+ {
+ "required": [
+ "customer"
+ ],
+ "type": "object",
+ "properties": {
+ "customer": {
+ "required": [
+ "billParameters",
+ "mobile"
+ ],
+ "type": "object",
+ "properties": {
+ "billParameters": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentBillFetchRequest"
}
}
},
@@ -362,7 +430,49 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericRefIdResponse"
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
}
}
}
@@ -372,7 +482,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -382,7 +524,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -390,21 +564,31 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
],
- "x-codegen-request-body-name": "CouAgentDisputeRequest"
+ "x-codegen-request-body-name": "CouAgentBillFetchRequest"
}
},
- "/bbps/bills/complaint/response": {
+ "/v1/bbps/bills/fetch/response": {
"post": {
"tags": [
- "Manage Dispute"
+ "Fetch"
],
- "summary": "Check dispute status",
- "operationId": "DisputeResponse",
+ "description": "Bill fetch response API",
+ "operationId": "FetchResponse",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -420,13 +604,66 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/refIdBasedRequest"
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
+ }
+ },
+ "x-go-name": "RefIdBasedRequest",
+ "x-omitempty": true
}
}
},
"required": true
},
"responses": {
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
"200": {
"description": "OK",
"headers": {
@@ -476,7 +713,424 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/couAgentDisputeResponse"
+ "allOf": [
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ },
+ {
+ "required": [
+ "data"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "allOf": [
+ {
+ "required": [
+ "refId",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Failure"
+ ]
+ },
+ "additionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "example": "Line item 1"
+ },
+ "value": {
+ "type": "string",
+ "example": "Value 1"
+ }
+ }
+ },
+ "x-go-name": "BillAdditionalInfo"
+ },
+ "billerRefId": {
+ "type": "string",
+ "example": "7f16a032e514"
+ },
+ "billerResponseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "failureReason": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "FUND_TRANSFER",
+ "BBPS",
+ "APP"
+ ]
+ },
+ "code": {
+ "type": "string",
+ "example": "ERR004"
+ },
+ "message": {
+ "type": "string",
+ "example": "customer not found"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "billerSelectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "bills": {
+ "type": "array",
+ "description": "Multiple bills in case of response from B2B biller",
+ "items": {
+ "required": [
+ "billDate",
+ "billNumber",
+ "billPeriod",
+ "customerName",
+ "dueDate"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "Bill payment amount should be multiple of this value in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-01-02"
+ },
+ "dueDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-09-24"
+ },
+ "maxAmount": {
+ "type": "integer",
+ "description": "Maximum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "1232332"
+ },
+ "billPeriod": {
+ "type": "string",
+ "example": "ONETIME|DAILY|WEEKLY|BIMONTHLY|MONTHLY|QUARTERLY|HALFYEARLY|YEARLY|ASPRESENTED"
+ },
+ "customerName": {
+ "type": "string",
+ "example": "Manoj Chekuri"
+ },
+ "label": {
+ "type": "string",
+ "nullable": true,
+ "example": "Advance EMI",
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "description": "Minimum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "paymentOptions": {
+ "type": "array",
+ "nullable": true,
+ "items": {
+ "required": [
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "maxAmount": {
+ "type": "integer",
+ "description": "The maximum amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The display name of the option.",
+ "example": "2 Months EMI Amount"
+ },
+ "amount": {
+ "type": "integer",
+ "description": "The amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "The payment amount should be a multiple of this value in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "PaymentOption"
+ },
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "BillData"
+ },
+ "x-omitempty": true
+ },
+ "isCached": {
+ "type": "boolean",
+ "nullable": true,
+ "example": false
+ },
+ "lastPaidDate": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2020-12-12T13:12:00+05:30"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "bill": {
+ "required": [
+ "billDate",
+ "billNumber",
+ "billPeriod",
+ "customerName",
+ "dueDate"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "Bill payment amount should be multiple of this value in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-01-02"
+ },
+ "dueDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-09-24"
+ },
+ "maxAmount": {
+ "type": "integer",
+ "description": "Maximum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "1232332"
+ },
+ "billPeriod": {
+ "type": "string",
+ "example": "ONETIME|DAILY|WEEKLY|BIMONTHLY|MONTHLY|QUARTERLY|HALFYEARLY|YEARLY|ASPRESENTED"
+ },
+ "customerName": {
+ "type": "string",
+ "example": "Manoj Chekuri"
+ },
+ "label": {
+ "type": "string",
+ "nullable": true,
+ "example": "Advance EMI",
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "description": "Minimum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "paymentOptions": {
+ "type": "array",
+ "nullable": true,
+ "items": {
+ "required": [
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "maxAmount": {
+ "type": "integer",
+ "description": "The maximum amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The display name of the option.",
+ "example": "2 Months EMI Amount"
+ },
+ "amount": {
+ "type": "integer",
+ "description": "The amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "The payment amount should be a multiple of this value in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "PaymentOption"
+ },
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "BillData"
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "paymentLimits": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ },
+ "x-omitempty": true
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentBillFetchResponse"
}
}
}
@@ -486,17 +1140,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
- }
- }
- }
- },
- "500": {
- "description": "Bad request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -504,7 +1180,17 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
@@ -512,13 +1198,13 @@
"x-codegen-request-body-name": "CouAgentAsyncRequest"
}
},
- "/bbps/bills/fetch/request": {
+ "/v1/bbps/bills/payment/request": {
"post": {
"tags": [
- "Fetch bill"
+ "Pay"
],
- "summary": "Fetch bill",
- "operationId": "FetchRequest",
+ "description": "Bill payment request API",
+ "operationId": "PaymentRequest",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -534,7 +1220,284 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/couAgentBillFetchRequest"
+ "allOf": [
+ {
+ "required": [
+ "paymentDetails"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "agent": {
+ "required": [
+ "channel",
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "ipv4",
+ "example": "124.170.23.24"
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "os": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "iOS",
+ "enum": [
+ "iOS",
+ "Android"
+ ]
+ },
+ "postalCode": {
+ "pattern": "^[1-9][0-9]{5}$",
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "600001"
+ },
+ "id": {
+ "type": "string",
+ "description": "The ID of the agent initiating the BBPS transaction.",
+ "example": "AX01AI06512391457204"
+ },
+ "ifsc": {
+ "type": "string",
+ "description": "Mandatory if channel is `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "ICIC0000152"
+ },
+ "imei": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "123456789012345"
+ },
+ "mac": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "mac",
+ "example": "48-4D-7E-CB-DB-6F"
+ },
+ "terminalId": {
+ "type": "string",
+ "description": "Mandatory if channel is `ATM`, `AGT`, `KIOSK` and `BSC` . Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "6000011234"
+ },
+ "app": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "SmartPay"
+ },
+ "channel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "geocode": {
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "19.0139,72.8254"
+ }
+ }
+ },
+ "biller": {
+ "required": [
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ }
+ },
+ "x-go-gen-location": "models",
+ "x-go-name": "BillerDetails"
+ },
+ "bills": {
+ "uniqueItems": true,
+ "type": "array",
+ "nullable": true,
+ "example": "Selection on bills in case of list billers",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ },
+ "x-omitempty": true
+ },
+ "paymentDetails": {
+ "required": [
+ "amount",
+ "mode",
+ "paymentRefId",
+ "timestamp"
+ ],
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "COUcustConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "currency": {
+ "type": "integer",
+ "nullable": true
+ },
+ "custConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "mode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "paymentRefId": {
+ "maxLength": 35,
+ "minLength": 6,
+ "type": "string",
+ "example": "BD019181220291"
+ },
+ "selectedPaymentOptions": {
+ "type": "array",
+ "description": "List of selected payment options",
+ "nullable": true,
+ "items": {
+ "required": [
+ "amount",
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "The amount to be paid for the selected payment option."
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the payment option as returned in bill fetch response.",
+ "example": "Early Payment Amount"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-nullable": true
+ }
+ }
+ }
+ },
+ "x-omitempty": true
+ },
+ {
+ "type": "object",
+ "properties": {
+ "customer": {
+ "required": [
+ "billParameters",
+ "mobile"
+ ],
+ "type": "object",
+ "properties": {
+ "billParameters": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentBillPaymentRequestV1"
}
}
},
@@ -590,7 +1553,49 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericRefIdResponse"
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
}
}
}
@@ -600,68 +1605,50 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
},
- "500": {
- "description": "Bad request",
- "content": {
- "application/json": {
+ "409": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
- }
- }
- }
- }
- },
- "security": [
- {
- "bbps": [
- "bbps:partner"
- ]
- }
- ],
- "x-codegen-request-body-name": "CouAgentBillFetchRequest"
- }
- },
- "/bbps/bills/fetch/response": {
- "post": {
- "tags": [
- "Fetch bill"
- ],
- "summary": "Get fetched bill",
- "operationId": "FetchResponse",
- "parameters": [
- {
- "name": "X-PARTNER-ID",
- "in": "header",
- "description": "Partner ID",
- "required": true,
- "schema": {
- "type": "integer"
- }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/refIdBasedRequest"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "OK",
- "headers": {
- "X-Frame-Options": {
- "description": "X Frame options",
- "schema": {
- "type": "string"
+ "type": "string"
}
},
"Strict-Transport-Security": {
@@ -704,17 +1691,49 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/couAgentBillFetchResponse"
- }
- }
- }
- },
- "400": {
- "description": "Bad request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
}
}
}
@@ -724,7 +1743,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -732,21 +1783,30 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
],
- "x-codegen-request-body-name": "CouAgentAsyncRequest"
+ "x-codegen-request-body-name": "CouAgentBillPaymentRequestV1"
}
},
- "/bbps/bills/payment/request": {
+ "/v1/bbps/bills/payment/response": {
"post": {
"tags": [
- "Pay bill"
+ "Pay"
],
- "summary": "Post payment details",
- "operationId": "PaymentRequest",
+ "description": "Bill payment response API",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -762,7 +1822,18 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/couAgentBillPaymentRequest"
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
+ }
+ },
+ "x-go-name": "RefIdBasedRequest",
+ "x-omitempty": true
}
}
},
@@ -818,7 +1889,221 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericRefIdResponse"
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "billerRefId": {
+ "type": "string",
+ "example": "ZA6291A177"
+ },
+ "failureReason": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "FUND_TRANSFER",
+ "BBPS",
+ "APP"
+ ]
+ },
+ "code": {
+ "type": "string",
+ "example": "ERR004"
+ },
+ "message": {
+ "type": "string",
+ "example": "customer not found"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Failure"
+ ]
+ },
+ "additionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "example": "Line item 1"
+ },
+ "value": {
+ "type": "string",
+ "example": "Value 1"
+ }
+ }
+ },
+ "x-go-name": "BillAdditionalInfo"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "paymentDetails": {
+ "required": [
+ "amount",
+ "mode",
+ "paymentRefId",
+ "timestamp"
+ ],
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "COUcustConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "currency": {
+ "type": "integer",
+ "nullable": true
+ },
+ "custConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "mode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "paymentRefId": {
+ "maxLength": 35,
+ "minLength": 6,
+ "type": "string",
+ "example": "BD019181220291"
+ },
+ "selectedPaymentOptions": {
+ "type": "array",
+ "description": "List of selected payment options",
+ "nullable": true,
+ "items": {
+ "required": [
+ "amount",
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "The amount to be paid for the selected payment option."
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the payment option as returned in bill fetch response.",
+ "example": "Early Payment Amount"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-nullable": true
+ }
+ }
+ },
+ "transactionId": {
+ "type": "string",
+ "example": "AX30910192192192192"
+ },
+ "bills": {
+ "uniqueItems": true,
+ "type": "array",
+ "nullable": true,
+ "example": "The bills paid in case of list billers",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ },
+ "x-omitempty": true
+ },
+ "lastPaidDate": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2020-12-12T13:12:00+05:30"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ },
+ "x-omitempty": true,
+ "x-go-name": "CouAgentBillPaymentResponse"
}
}
}
@@ -828,7 +2113,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -838,7 +2155,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -846,21 +2195,31 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
],
- "x-codegen-request-body-name": "CouAgentBillPaymentRequest"
+ "x-codegen-request-body-name": "CouAgentAsyncRequest"
}
},
- "/bbps/bills/payment/response": {
+ "/v1/bbps/bills/complaint/request": {
"post": {
"tags": [
- "Pay bill"
+ "Dispute"
],
- "summary": "Check payment status",
- "operationId": "PaymentResponse",
+ "description": "Raise dispute request API",
+ "operationId": "DisputeRequest",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -876,7 +2235,48 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/refIdBasedRequest"
+ "allOf": [
+ {
+ "required": [
+ "description",
+ "disputeType"
+ ],
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string",
+ "example": "Test Transaction Based Complaint"
+ },
+ "disputeType": {
+ "type": "string",
+ "description": "The type of NPCI dispute",
+ "example": "account-not-updated",
+ "enum": [
+ "account-not-updated",
+ "double-payment",
+ "paid-to-wrong-account",
+ "others",
+ "amount-deducted-biller-credited-no-transaction-id",
+ "amount-deducted-biller-not-credited-no-transaction-id",
+ "amount-deducted-multiple-times"
+ ]
+ }
+ }
+ },
+ {
+ "required": [
+ "txnReferenceId"
+ ],
+ "type": "object",
+ "properties": {
+ "txnReferenceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentDisputeRequest"
}
}
},
@@ -932,7 +2332,49 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/couAgentBillPaymentResponse"
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
}
}
}
@@ -942,7 +2384,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -952,7 +2426,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -960,21 +2466,30 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
],
- "x-codegen-request-body-name": "CouAgentAsyncRequest"
+ "x-codegen-request-body-name": "CouAgentDisputeRequest"
}
},
- "/bbps/categories": {
- "get": {
+ "/v1/bbps/bills/complaint/response": {
+ "post": {
"tags": [
- "Take bulk actions"
+ "Dispute"
],
- "summary": "List all categories",
- "operationId": "getCategories",
+ "description": "Raise dispute response API",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -986,9 +2501,30 @@
}
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
+ }
+ },
+ "x-go-name": "RefIdBasedRequest",
+ "x-omitempty": true
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
- "description": "List of categories",
+ "description": "OK",
"headers": {
"X-Frame-Options": {
"description": "X Frame options",
@@ -1036,7 +2572,68 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/categoriesListResponse"
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ },
+ "data": {
+ "required": [
+ "assignedTo",
+ "disputeId",
+ "refId",
+ "remarks",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "remarks": {
+ "type": "string",
+ "example": "Resolved in favour of Biller"
+ },
+ "status": {
+ "type": "string",
+ "description": "BBPS Complaint status",
+ "example": "ASSIGNED",
+ "enum": [
+ "INITIALIZED",
+ "ASSIGNED",
+ "RE_ASSIGNED",
+ "ASSIGNED_TO_BOU",
+ "ASSIGNED_TO_COU",
+ "ASSIGNED_TO_OU",
+ "ESCALATED",
+ "RESOLVED",
+ "UNRESOLVED"
+ ]
+ },
+ "assignedTo": {
+ "type": "string",
+ "example": "ICICI BOU"
+ },
+ "disputeId": {
+ "type": "string",
+ "example": "OP0121046567755"
+ }
+ },
+ "x-go-name": "DisputeResponseData"
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ }
+ },
+ "x-go-name": "CouAgentDisputeResponse",
+ "x-omitempty": true
}
}
}
@@ -1046,7 +2643,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -1056,7 +2685,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -1064,20 +2725,31 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
- ]
+ ],
+ "x-codegen-request-body-name": "CouAgentAsyncRequest"
}
},
- "/bbps/disputes": {
+ "/v1/bbps/transactions": {
"get": {
"tags": [
- "Take bulk actions"
+ "List"
],
- "summary": "List disputes",
- "operationId": "getDisputes",
+ "description": "Returns the list of transactions.",
+ "operationId": "getTxns",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -1089,61 +2761,49 @@
}
},
{
- "name": "status",
+ "name": "limit",
"in": "query",
- "style": "form",
- "explode": false,
"schema": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "INITIALIZED",
- "ASSIGNED",
- "RE_ASSIGNED",
- "ASSIGNED_TO_BOU",
- "ASSIGNED_TO_COU",
- "ASSIGNED_TO_OU",
- "ESCALATED",
- "RESOLVED",
- "UNRESOLVED"
- ]
- }
+ "type": "integer"
}
},
{
- "name": "limit",
+ "name": "after",
"in": "query",
- "description": "Limit",
"schema": {
- "maximum": 1000,
- "minimum": 1,
- "type": "integer",
- "default": 250
+ "type": "string"
}
},
{
- "name": "after",
+ "name": "startDate",
"in": "query",
+ "description": "start date of the timestamp provided by the partner while making the request.",
"schema": {
- "type": "string"
+ "type": "string",
+ "format": "date"
}
},
{
- "name": "mobile",
+ "name": "endDate",
"in": "query",
- "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "description": "end date of the timestamp provided by the partner while making the request.",
+ "schema": {
+ "type": "string",
+ "format": "date"
+ }
+ },
+ {
+ "name": "billerId",
+ "in": "query",
+ "description": "Transaction BillerId",
"schema": {
- "maxLength": 20,
- "minLength": 6,
- "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
"type": "string"
}
},
{
- "name": "transactionIds",
+ "name": "ids",
"in": "query",
- "description": "Transaction IDs",
+ "description": "Transaction Reference Ids",
"style": "form",
"explode": false,
"schema": {
@@ -1154,9 +2814,9 @@
}
},
{
- "name": "partnerRefIds",
+ "name": "categories",
"in": "query",
- "description": "Partner provided transaction Ids",
+ "description": "Biller Category",
"style": "form",
"explode": false,
"schema": {
@@ -1167,20 +2827,54 @@
}
},
{
- "name": "billerIds",
+ "name": "billerFetchApiType",
"in": "query",
- "description": "The biller ID on BBPS",
+ "description": "Biller Fetch Api Type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ }
+ },
+ {
+ "name": "months",
+ "in": "query",
+ "description": "Month ranges. A full-date notation as defined by 'RFC 3339, section 5.6' has to be provided but only month and year will be considered.",
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
- "type": "string"
+ "type": "string",
+ "format": "date",
+ "example": "2022-07-19"
+ }
+ }
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "description": "Transaction Status",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Error"
+ ]
}
}
},
{
- "name": "customerMobileNumber",
+ "name": "mobile",
"in": "query",
"description": "Mobile number with 6, 10 and 20 digits are valid.",
"schema": {
@@ -1189,11 +2883,82 @@
"pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
"type": "string"
}
+ },
+ {
+ "name": "expand",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "BILLER",
+ "enum": [
+ "BILLER"
+ ]
+ }
+ }
+ },
+ {
+ "name": "refundStatus",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "Required",
+ "Requested",
+ "Processed"
+ ]
+ }
}
],
"responses": {
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
"200": {
- "description": "List of disputes",
+ "description": "List of Txns",
"headers": {
"X-Frame-Options": {
"description": "X Frame options",
@@ -1241,7 +3006,595 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/disputeListResponse"
+ "allOf": [
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "nextPage": {
+ "type": "string",
+ "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
+ },
+ "transactions": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "bills": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp provided by partner while making payment request.",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "transactionId": {
+ "type": "string",
+ "description": "Setu BillPay Transaction ID.",
+ "example": "AX30910192192192192"
+ },
+ "amount": {
+ "type": "integer"
+ },
+ "biller": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "plans": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "categoryType",
+ "description",
+ "id",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Plan ID",
+ "example": "1.0"
+ },
+ "categorySubType": {
+ "type": "object",
+ "properties": {},
+ "description": "Plan sub category as defined by the Biller.",
+ "example": {
+ "subType": "1 Month"
+ },
+ "x-omitempty": true
+ },
+ "categoryType": {
+ "type": "string",
+ "description": "Plan category as defined by the Biller.",
+ "example": "VIP"
+ },
+ "description": {
+ "type": "string",
+ "description": "Plan description as defined by the Biller.",
+ "example": "Unlimited Live Sports"
+ },
+ "effectiveFrom": {
+ "type": "string",
+ "description": "Effective from date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2017-07-21",
+ "x-omitempty": false
+ },
+ "additionalInfo": {
+ "minItems": 1,
+ "type": "array",
+ "description": "Plan Additional information details provided by the Biller.",
+ "example": [
+ {
+ "paramName": "Mobile Number",
+ "paramValue": "Text"
+ }
+ ],
+ "items": {
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Plan Additional information parameter name."
+ },
+ "paramValue": {
+ "type": "string",
+ "example": "Plan Additional information parameter value."
+ }
+ },
+ "example": {
+ "paramValue": "Text",
+ "paramName": "Mobile Number"
+ },
+ "x-go-name": "PlanAdditionalInfoItem"
+ },
+ "x-omitempty": true
+ },
+ "amount": {
+ "type": "string",
+ "example": "22.0"
+ },
+ "effectiveTo": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2020-08-21",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "example": "ACTIVE",
+ "enum": [
+ "ACTIVE",
+ "DEACTIVATED"
+ ]
+ }
+ }
+ }
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "customerParams": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Error"
+ ]
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "partnerRefId": {
+ "type": "string",
+ "description": "Agent's payment reference ID"
+ },
+ "refundStatus": {
+ "type": "string",
+ "example": "Required",
+ "enum": [
+ "Required",
+ "Requested",
+ "Processed"
+ ]
+ },
+ "customerMobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
}
}
}
@@ -1251,17 +3604,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
- }
- }
- }
- },
- "500": {
- "description": "Bad request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -1269,20 +3644,30 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
]
}
},
- "/bbps/transactions": {
+ "/v1/bbps/disputes": {
"get": {
"tags": [
- "Take bulk actions"
+ "List"
],
- "summary": "List paid bills",
- "operationId": "getTxns",
+ "description": "Returns the list of disputes.",
+ "operationId": "getDisputes",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -1294,54 +3679,93 @@
}
},
{
- "name": "limit",
+ "name": "status",
"in": "query",
+ "style": "form",
+ "explode": false,
"schema": {
- "type": "integer"
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "INITIALIZED",
+ "ASSIGNED",
+ "RE_ASSIGNED",
+ "ASSIGNED_TO_BOU",
+ "ASSIGNED_TO_COU",
+ "ASSIGNED_TO_OU",
+ "ESCALATED",
+ "RESOLVED",
+ "UNRESOLVED"
+ ]
+ }
}
},
{
- "name": "after",
+ "name": "limit",
"in": "query",
+ "description": "Limit",
"schema": {
- "type": "string"
+ "maximum": 1000.0,
+ "minimum": 1.0,
+ "type": "integer"
}
},
{
- "name": "startDate",
+ "name": "categories",
"in": "query",
- "description": "start date of the timestamp provided by the partner while making the request. Full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21",
+ "description": "Biller Category",
+ "style": "form",
+ "explode": false,
"schema": {
- "type": "string",
- "format": "date"
- },
- "example": "2022-07-19"
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
},
{
- "name": "endDate",
+ "name": "months",
"in": "query",
- "description": "full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21",
+ "description": "Month ranges. A full-date notation as defined by 'RFC 3339, section 5.6' has to be provided but only month and year will be considered.",
+ "style": "form",
+ "explode": false,
"schema": {
- "type": "string",
- "format": "date"
- },
- "example": "2022-07-19"
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "date",
+ "example": "2022-07-19"
+ }
+ }
},
{
- "name": "billerId",
+ "name": "after",
"in": "query",
- "description": "Transaction BillerId",
"schema": {
"type": "string"
}
},
{
- "name": "ids",
+ "name": "mobile",
"in": "query",
- "description": "Transaction Reference Ids",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "schema": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string"
+ }
+ },
+ {
+ "name": "transactionIds",
+ "in": "query",
+ "description": "Transaction IDs",
"style": "form",
"explode": false,
"schema": {
+ "uniqueItems": true,
"type": "array",
"items": {
"type": "string"
@@ -1349,34 +3773,55 @@
}
},
{
- "name": "status",
+ "name": "partnerRefIds",
"in": "query",
- "description": "Transaction Status",
+ "description": "Partner provided transaction Ids",
+ "style": "form",
+ "explode": false,
"schema": {
- "type": "string",
- "enum": [
- "Processing",
- "Success",
- "Error",
- "Refunded"
- ]
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
}
},
{
- "name": "mobile",
+ "name": "billerIds",
"in": "query",
- "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "description": "The biller ID on BBPS",
+ "style": "form",
+ "explode": false,
"schema": {
- "maxLength": 20,
- "minLength": 6,
- "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
- "type": "string"
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "expand",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "BILLER",
+ "enum": [
+ "BILLER",
+ "TRANSACTION"
+ ]
+ }
}
}
],
"responses": {
"200": {
- "description": "List of Txns",
+ "description": "List of disputes",
"headers": {
"X-Frame-Options": {
"description": "X Frame options",
@@ -1424,7 +3869,1127 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/transactionsResponse"
+ "allOf": [
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer"
+ },
+ "disputes": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "createdAt": {
+ "type": "string",
+ "description": "Dispute's creation timestamp",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "refId": {
+ "type": "string",
+ "example": "Loan Repayment"
+ },
+ "responseCode": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "transactionId": {
+ "type": "string",
+ "description": "Setu BillPay Transaction ID.",
+ "example": "AX30910192192192192"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "complaintStatus": {
+ "type": "string",
+ "description": "BBPS Complaint status",
+ "example": "ASSIGNED",
+ "enum": [
+ "INITIALIZED",
+ "ASSIGNED",
+ "RE_ASSIGNED",
+ "ASSIGNED_TO_BOU",
+ "ASSIGNED_TO_COU",
+ "ASSIGNED_TO_OU",
+ "ESCALATED",
+ "RESOLVED",
+ "UNRESOLVED"
+ ]
+ },
+ "complaintId": {
+ "type": "string",
+ "example": "Loan Repayment"
+ },
+ "lastModifiedAt": {
+ "type": "string",
+ "description": "Dispute's last modified timestamp",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "remarks": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "responseReason": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "assigned": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "biller": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "plans": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "categoryType",
+ "description",
+ "id",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Plan ID",
+ "example": "1.0"
+ },
+ "categorySubType": {
+ "type": "object",
+ "properties": {},
+ "description": "Plan sub category as defined by the Biller.",
+ "example": {
+ "subType": "1 Month"
+ },
+ "x-omitempty": true
+ },
+ "categoryType": {
+ "type": "string",
+ "description": "Plan category as defined by the Biller.",
+ "example": "VIP"
+ },
+ "description": {
+ "type": "string",
+ "description": "Plan description as defined by the Biller.",
+ "example": "Unlimited Live Sports"
+ },
+ "effectiveFrom": {
+ "type": "string",
+ "description": "Effective from date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2017-07-21",
+ "x-omitempty": false
+ },
+ "additionalInfo": {
+ "minItems": 1,
+ "type": "array",
+ "description": "Plan Additional information details provided by the Biller.",
+ "example": [
+ {
+ "paramName": "Mobile Number",
+ "paramValue": "Text"
+ }
+ ],
+ "items": {
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Plan Additional information parameter name."
+ },
+ "paramValue": {
+ "type": "string",
+ "example": "Plan Additional information parameter value."
+ }
+ },
+ "example": {
+ "paramValue": "Text",
+ "paramName": "Mobile Number"
+ },
+ "x-go-name": "PlanAdditionalInfoItem"
+ },
+ "x-omitempty": true
+ },
+ "amount": {
+ "type": "string",
+ "example": "22.0"
+ },
+ "effectiveTo": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2020-08-21",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "example": "ACTIVE",
+ "enum": [
+ "ACTIVE",
+ "DEACTIVATED"
+ ]
+ }
+ }
+ }
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "customerMobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "partnerRefId": {
+ "type": "string",
+ "description": "Agent's payment reference ID"
+ },
+ "transaction": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "bills": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp provided by partner while making payment request.",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "transactionId": {
+ "type": "string",
+ "description": "Setu BillPay Transaction ID.",
+ "example": "AX30910192192192192"
+ },
+ "amount": {
+ "type": "integer"
+ },
+ "biller": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "plans": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "categoryType",
+ "description",
+ "id",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Plan ID",
+ "example": "1.0"
+ },
+ "categorySubType": {
+ "type": "object",
+ "properties": {},
+ "description": "Plan sub category as defined by the Biller.",
+ "example": {
+ "subType": "1 Month"
+ },
+ "x-omitempty": true
+ },
+ "categoryType": {
+ "type": "string",
+ "description": "Plan category as defined by the Biller.",
+ "example": "VIP"
+ },
+ "description": {
+ "type": "string",
+ "description": "Plan description as defined by the Biller.",
+ "example": "Unlimited Live Sports"
+ },
+ "effectiveFrom": {
+ "type": "string",
+ "description": "Effective from date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2017-07-21",
+ "x-omitempty": false
+ },
+ "additionalInfo": {
+ "minItems": 1,
+ "type": "array",
+ "description": "Plan Additional information details provided by the Biller.",
+ "example": [
+ {
+ "paramName": "Mobile Number",
+ "paramValue": "Text"
+ }
+ ],
+ "items": {
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Plan Additional information parameter name."
+ },
+ "paramValue": {
+ "type": "string",
+ "example": "Plan Additional information parameter value."
+ }
+ },
+ "example": {
+ "paramValue": "Text",
+ "paramName": "Mobile Number"
+ },
+ "x-go-name": "PlanAdditionalInfoItem"
+ },
+ "x-omitempty": true
+ },
+ "amount": {
+ "type": "string",
+ "example": "22.0"
+ },
+ "effectiveTo": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2020-08-21",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "example": "ACTIVE",
+ "enum": [
+ "ACTIVE",
+ "DEACTIVATED"
+ ]
+ }
+ }
+ }
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "customerParams": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Error"
+ ]
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "partnerRefId": {
+ "type": "string",
+ "description": "Agent's payment reference ID"
+ },
+ "refundStatus": {
+ "type": "string",
+ "example": "Required",
+ "enum": [
+ "Required",
+ "Requested",
+ "Processed"
+ ]
+ },
+ "customerMobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ },
+ "nextPage": {
+ "type": "string",
+ "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
+ }
+ }
+ }
+ }
+ }
+ ]
}
}
}
@@ -1434,7 +4999,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -1444,7 +5041,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -1452,1597 +5081,1011 @@
},
"security": [
{
- "bbps": [
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
"bbps:partner"
]
}
]
}
},
- "/health": {
+ "/v1/bbps/categories": {
"get": {
"tags": [
- "Health"
+ "List"
+ ],
+ "description": "Returns the list of categories.",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
],
- "summary": "Check health",
- "operationId": "getHealth",
"responses": {
"200": {
- "description": "Ok",
+ "description": "List of categories",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/healthResponseParam"
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ },
+ "data": {
+ "required": [
+ "categories"
+ ],
+ "type": "object",
+ "properties": {
+ "categories": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "billerCount": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string",
+ "example": "Loan Repayment"
+ }
+ }
+ }
+ }
+ }
+ },
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ }
+ }
}
}
}
- }
- }
- }
- }
- },
- "components": {
- "schemas": {
- "additionalInfoLineItem": {
- "required": [
- "name",
- "value"
- ],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "example": "Line item 1"
- },
- "value": {
- "type": "string",
- "example": "Value 1"
- }
- }
- },
- "agentDetails": {
- "required": [
- "channel",
- "id"
- ],
- "type": "object",
- "properties": {
- "app": {
- "type": "string",
- "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
- "example": "SmartPay"
- },
- "channel": {
- "$ref": "#/components/schemas/paymentChannel"
- },
- "geocode": {
- "type": "string",
- "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "19.0139,72.8254"
- },
- "id": {
- "type": "string",
- "description": "The ID of the agent initiating the BBPS transaction.",
- "example": "AX01AI06512391457204"
- },
- "ifsc": {
- "type": "string",
- "description": "Mandatory if channel is `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "ICIC0000152"
- },
- "imei": {
- "type": "string",
- "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
- "example": "123456789012345"
- },
- "ip": {
- "type": "string",
- "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
- "format": "ipv4",
- "example": "124.170.23.24"
- },
- "mac": {
- "pattern": "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$",
- "type": "string",
- "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
- "example": "48-4D-7E-CB-DB-6F"
- },
- "mobile": {
- "$ref": "#/components/schemas/mobile"
- },
- "os": {
- "type": "string",
- "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
- "example": "iOS",
- "enum": [
- "iOS",
- "Android"
- ]
},
- "postalCode": {
- "pattern": "^[1-9][0-9]{5}$",
- "type": "string",
- "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "600001"
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
},
- "terminalId": {
- "type": "string",
- "description": "Mandatory if channel is `ATM`, `AGT`, `KIOSK` and `BSC` . Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "6000011234"
- }
- }
- },
- "bbpsFailureReason": {
- "required": [
- "code",
- "message"
- ],
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "BBPS Error code",
- "example": "ERR004"
- },
- "message": {
- "type": "string",
- "description": "BBPS Failure message",
- "example": "customer not found"
- },
- "type": {
- "type": "string",
- "enum": [
- "FUND_TRANSFER",
- "BBPS",
- "APP"
- ]
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
}
- }
- },
- "billAdditionalInfo": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/additionalInfoLineItem"
},
- "x-go-name": "BillAdditionalInfo"
- },
- "bill": {
- "type": "object",
- "required": [
- "billNumber",
- "amount"
- ],
- "properties": {
- "billNumber": {
- "type": "string",
- "example": "B123456",
- "description": "Unique identifier for the bill"
- },
- "amount": {
- "type": "integer",
- "example": 450000,
- "minimum": 1,
- "description": "Amount to be paid for the bill in paise"
- }
- }
- },
- "billData": {
- "required": [
- "billDate",
- "billNumber",
- "billPeriod",
- "customerName",
- "dueDate"
- ],
- "type": "object",
- "properties": {
- "amount": {
- "type": "integer",
- "example": 1000
- },
- "billDate": {
- "type": "string",
- "format": "date",
- "example": "2021-01-02"
- },
- "billNumber": {
- "type": "string",
- "example": "1232332"
- },
- "billPeriod": {
- "type": "string",
- "enum": [
- "ONETIME",
- "DAILY",
- "WEEKLY",
- "BIMONTHLY",
- "MONTHLY",
- "QUARTERLY",
- "HALFYEARLY",
- "YEARLY",
- "ASPRESENTED",
- "NA"
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
]
},
- "customerName": {
- "type": "string",
- "example": "Manoj Chekuri"
- },
- "dueDate": {
- "type": "string",
- "format": "date",
- "example": "2021-09-24"
- },
- "label": {
- "type": "string",
- "example": "Advance EMI",
- "description": "Label for the bill"
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
},
- "minAmount": {
- "type": "integer",
- "example": 1,
- "description": "Minimum amount that can be paid for this bill in paise"
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ]
+ }
+ },
+ "/v1/bbps/billers": {
+ "get": {
+ "tags": [
+ "List"
+ ],
+ "description": "Returns the list of billers.",
+ "operationId": "getBillers",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
},
- "maxAmount": {
- "type": "integer",
- "example": 10000,
- "description": "Maximum amount that can be paid for this bill in paise"
+ {
+ "name": "categoryName",
+ "in": "query",
+ "style": "form",
+ "explode": true,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
},
- "amountMultiple": {
- "type": "integer",
- "example": 100,
- "description": "Bill payment amount should be multiple of this value in paise"
+ {
+ "name": "ids",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
},
- "paymentOptions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentOptionItem"
+ {
+ "name": "limit",
+ "in": "query",
+ "description": "Limit",
+ "schema": {
+ "maximum": 1000.0,
+ "minimum": 1.0,
+ "type": "integer"
}
- }
- },
- "x-go-name": "BillData"
- },
- "billFetchResponseData": {
- "required": [
- "refId",
- "status"
- ],
- "type": "object",
- "properties": {
- "additionalInfo": {
- "$ref": "#/components/schemas/billAdditionalInfo"
- },
- "bill": {
- "$ref": "#/components/schemas/billData"
- },
- "billerRefId": {
- "type": "string",
- "example": "7f16a032e514"
- },
- "exactness": {
- "type": "string",
- "enum": ["Exact", "Exact and above", "Exact and below", "Any", "RANGE"],
- "example": "Exact",
- "description": "Specifies the range of payment amounts allowed by the biller"
- },
- "failureReason": {
- "$ref": "#/components/schemas/bbpsFailureReason"
- },
- "paymentLimits": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentModeSpec"
- },
- "x-omitempty": true
},
- "refId": {
- "type": "string",
- "description": "BBPS Reference ID",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ {
+ "name": "after",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "status": {
- "$ref": "#/components/schemas/status"
+ {
+ "name": "search",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "billerResponseType": {
- "$ref": "#/components/schemas/billerResponseType"
+ {
+ "name": "pincode",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "billerSelectionType": {
- "$ref": "#/components/schemas/billerSelectionType"
- }
- }
- },
- "billParameterItem": {
- "required": [
- "name",
- "value"
- ],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "The display name of the parameter. This has to match what is sent in fields.",
- "example": "Loan Number"
- },
- "value": {
- "type": "string",
- "description": "The value of the customer parameter",
- "example": "1895159"
- }
- }
- },
- "billParameters": {
- "type": "array",
- "description": "The bill params for fetching the bill",
- "items": {
- "$ref": "#/components/schemas/billParameterItem"
- }
- },
- "billPaymentResponseData": {
- "required": [
- "refId",
- "status"
- ],
- "type": "object",
- "properties": {
- "billerId": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- },
- "bills": {
- "type": "array",
- "example": [
- {
- "billNumber": "4705299027986032967",
- "amount": 3000
- },
- {
- "billNumber": "3056665275489131002",
- "amount": 7000
- }
- ],
- "description": "Details of bills(for LIST billers) for which payment was made.",
- "items": {
- "$ref": "#/components/schemas/bill"
- },
- "uniqueItems": true,
- "nullable": true
+ {
+ "name": "city",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "billerRefId": {
- "type": "string",
- "example": "ZA6291A177"
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "failureReason": {
- "$ref": "#/components/schemas/bbpsFailureReason"
+ {
+ "name": "country",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "paymentDetails": {
- "$ref": "#/components/schemas/paymentDetails"
+ {
+ "name": "coverage",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ {
+ "name": "tags",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
},
- "refundDetails": {
- "type": "object",
- "properties": {
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "status": {
- "$ref": "#/components/schemas/status"
- },
- "transactionId": {
+ {
+ "name": "paymentChannel",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
"type": "string",
- "example": "AX30910192192192192"
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
}
- },
- "nullable": true
- },
- "status": {
- "$ref": "#/components/schemas/status"
- },
- "transactionId": {
- "type": "string",
- "example": "AX30910192192192192"
- }
- }
- },
- "billerDetails": {
- "required": [
- "categoryName",
- "customerParams",
- "exactness",
- "fetchApiType",
- "id",
- "name",
- "payWithoutFetchAllowed",
- "paymentChannels",
- "paymentModes",
- "responseType",
- "selectionType",
- "supportsPendingStatus"
- ],
- "type": "object",
- "properties": {
- "bbpsUpdateTimestamp": {
- "type": "string",
- "format": "date-time",
- "example": "2020-12-12T13:12:00+05:30",
- "description": "The timestamp when the biller was last updated accurate to the nearest day"
- },
- "categoryName": {
- "type": "string",
- "example": "loan-repayment"
- },
- "city": {
- "type": "string",
- "example": "Hyderabad"
- },
- "country": {
- "type": "string",
- "example": "IND"
- },
- "coverage": {
- "type": "string",
- "example": "IND-TEL-Hyderabad"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time",
- "nullable": true,
- "example": "2020-12-12T13:12:00+05:30",
- "x-omitempty": false
- },
- "customerParams": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/customerParamSpec"
- }
- },
- "customerParamsGroups": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/customerParamsGroupItem"
- }
- },
- "enforcesSameDayFetchPay": {
- "type": "boolean",
- "example": true,
- "description": "Denotes whether the biller requires biller payment to be made on the same calendar day as the bill fetch."
- },
- "exactness": {
- "type": "string",
- "enum": ["Exact", "Exact and above", "Exact and below", "Any", "RANGE"],
- "example": "Exact",
- "description": "Specifies the range of payment amounts allowed by the biller"
- },
- "fetchApiType": {
- "type": "string",
- "description": "Denotes whether the biller accepts Fetch, Validate or Direct payment.",
- "enum": [
- "BILL_FETCH",
- "BILL_VALIDATE",
- "BILL_DIRECT"
- ]
- },
- "id": {
- "type": "string",
- "example": "ADIT00000NAT0T"
- },
- "logo": {
- "type": "string",
- "example": "logo"
- },
- "modifiedAt": {
- "type": "string",
- "format": "date-time",
- "nullable": true,
- "example": "2020-12-12T13:12:00+05:30",
- "x-omitempty": false
- },
- "name": {
- "type": "string",
- "example": "Aditya Birla Sun Life Insurance"
- },
- "payWithoutFetchAllowed": {
- "type": "boolean",
- "example": true
- },
- "paymentChannels": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentChannelSpec"
}
},
- "paymentModes": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentModeSpec"
+ {
+ "name": "paymentMode",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ }
}
},
- "pincode": {
- "type": "string",
- "example": "pincode"
- },
- "plans": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/planItem"
+ {
+ "name": "updatedSince",
+ "in": "query",
+ "description": "Used to fetch billers updated since the given date-time in IST",
+ "schema": {
+ "type": "string",
+ "format": "date-time"
}
- },
- "responseType": {
- "$ref": "#/components/schemas/billerResponseType"
- },
- "state": {
- "type": "string",
- "example": "TEL"
- },
- "selectionType": {
- "$ref": "#/components/schemas/billerSelectionType"
- },
- "supportsPendingStatus": {
- "type": "boolean",
- "example": false
- },
- "tags": {
- "type": "string",
- "example": "tags"
}
- },
- "x-go-name": "CouBillerDetails"
- },
- "billerResponseType": {
- "type": "string",
- "enum": ["SINGLE", "LIST", "SELECTIVE"],
- "example": "LIST",
- "description": "Specifies whether a biller returns a single bill or a list of bills during bill fetch",
- "nullable": true
- },
- "billerSelectionType": {
- "type": "string",
- "enum": ["SINGLE", "MULTIPLE", "ALL"],
- "example": "SINGLE",
- "description": "In case of LIST billers, specifies the number of bills a biller allows to be paid at once",
- "nullable": true
- },
- "billerListResponse": {
- "required": [
- "success",
- "traceId"
],
- "type": "object",
- "properties": {
- "data": {
- "required": [
- "billers"
- ],
- "type": "object",
- "properties": {
- "billers": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/billerDetails"
- }
- },
- "nextPage": {
- "type": "string",
- "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
+ "responses": {
+ "200": {
+ "description": "List of billers",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
},
- "total": {
- "type": "integer",
- "example": 3000
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "billers"
+ ],
+ "type": "object",
+ "properties": {
+ "billers": {
+ "type": "array",
+ "items": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ }
+ },
+ "nextPage": {
+ "type": "string",
+ "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
+ },
+ "total": {
+ "type": "integer"
+ }
+ }
+ },
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
}
}
},
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- }
- },
- "categoriesListResponse": {
- "required": [
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "data": {
- "required": [
- "categories"
- ],
- "type": "object",
- "properties": {
- "categories": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/categoryListItem"
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
},
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- }
- },
- "categoryListItem": {
- "type": "object",
- "properties": {
- "billerCount": {
- "type": "integer",
- "example": 10
- },
- "name": {
- "type": "string",
- "example": "Loan Repayment"
- }
- }
- },
- "autofetchSubscriptionBiller": {
- "required": [
- "id"
- ],
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- }
- },
- "x-go-gen-location": "models",
- "x-go-name": "BillerDetails"
- },
- "autofetchBillerCustomerParamsBiller": {
- "required": [
- "id"
- ],
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- }
- },
- "x-go-gen-location": "models",
- "x-go-name": "BillerDetails"
- },
- "complaintStatus": {
- "type": "string",
- "description": "BBPS Complaint status",
- "example": "ASSIGNED",
- "enum": [
- "INITIALIZED",
- "ASSIGNED",
- "RE_ASSIGNED",
- "ASSIGNED_TO_BOU",
- "ASSIGNED_TO_COU",
- "ASSIGNED_TO_OU",
- "ESCALATED",
- "RESOLVED",
- "UNRESOLVED"
- ]
- },
- "couAgentBillFetchRequest": {
- "required": [
- "agent",
- "biller",
- "customer"
- ],
- "type": "object",
- "properties": {
- "agent": {
- "$ref": "#/components/schemas/agentDetails"
- },
- "biller": {
- "$ref": "#/components/schemas/autofetchSubscriptionBiller"
- },
- "customer": {
- "$ref": "#/components/schemas/customerDetails"
- }
- },
- "x-go-name": "CouAgentBillFetchRequest",
- "x-omitempty": true
- },
- "couAgentBillFetchResponse": {
- "required": [
- "data",
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/billFetchResponseData"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "CouAgentBillFetchResponse"
- },
- "couAgentBillPaymentRequest": {
- "required": [
- "paymentDetails"
- ],
- "type": "object",
- "properties": {
- "agent": {
- "$ref": "#/components/schemas/agentDetails"
- },
- "biller": {
- "$ref": "#/components/schemas/autofetchSubscriptionBiller"
- },
- "customer": {
- "$ref": "#/components/schemas/customerDetails"
- },
- "bills": {
- "type": "array",
- "example": [
- {
- "billNumber": "4705299027986032967",
- "amount": 3000
- },
- {
- "billNumber": "3056665275489131002",
- "amount": 7000
- }
- ],
- "description": "Array of bills to be paid when making payments for LIST billers. Optional for SINGLE billers.",
- "items": {
- "$ref": "#/components/schemas/bill"
- },
- "uniqueItems": true,
- "nullable": true
- },
- "paymentDetails": {
- "$ref": "#/components/schemas/paymentDetails"
- },
- "refId": {
- "type": "string",
- "description": "BBPS Reference ID",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- }
- },
- "x-go-name": "CouAgentBillPaymentRequest",
- "x-omitempty": true
- },
- "couAgentBillPaymentResponse": {
- "required": [
- "data",
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/billPaymentResponseData"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
}
},
- "x-go-name": "CouAgentBillPaymentResponse",
- "x-omitempty": true
- },
- "couAgentDisputeRequest": {
- "required": [
- "description",
- "disputeType",
- "txnReferenceId"
- ],
- "type": "object",
- "properties": {
- "description": {
- "type": "string",
- "example": "Amount deducted multiple times."
- },
- "disputeType": {
- "type": "string",
- "enum": [
- "account-not-updated",
- "double-payment",
- "paid-to-wrong-account",
- "others",
- "amount-deducted-biller-credited-no-transaction-id",
- "amount-deducted-biller-not-credited-no-transaction-id",
- "amount-deducted-multiple-times"
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
]
},
- "txnReferenceId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- }
- },
- "x-go-name": "CouAgentDisputeRequest",
- "x-omitempty": true
- },
- "couAgentDisputeResponse": {
- "required": [
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/disputeResponseData"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "CouAgentDisputeResponse",
- "x-omitempty": true
- },
- "customerDetails": {
- "required": [
- "billParameters",
- "mobile"
- ],
- "type": "object",
- "properties": {
- "billParameters": {
- "$ref": "#/components/schemas/billParameters"
- },
- "mobile": {
- "$ref": "#/components/schemas/mobile"
- }
- }
- },
- "customerParamSpec": {
- "required": [
- "dataType",
- "maxLength",
- "minLength",
- "optional",
- "paramName",
- "regex",
- "values",
- "visibility"
- ],
- "type": "object",
- "properties": {
- "dataType": {
- "type": "string",
- "example": "ALPHANUMERIC"
- },
- "maxLength": {
- "type": "integer",
- "example": 15
- },
- "minLength": {
- "type": "integer",
- "example": 7
- },
- "optional": {
- "type": "boolean",
- "example": false
- },
- "paramName": {
- "type": "string",
- "example": "Loan Account Number"
- },
- "regex": {
- "type": "string",
- "example": "^[a-zA-Z0-9]{7,15}"
- },
- "values": {
- "type": "string"
- },
- "visibility": {
- "type": "boolean",
- "example": true
- }
- }
- },
- "customerParamsGroupItem": {
- "type": "array",
- "items": {
- "type": "string",
- "example": "Param 1"
- }
- },
- "disputeListItem": {
- "type": "object",
- "properties": {
- "assigned": {
- "type": "string",
- "description": "BBPOU to which the complaint is assigned",
- "example": "OU Four"
- },
- "billerId": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- },
- "complaintId": {
- "type": "string",
- "description": "Complaint ID",
- "example": "OP0121046567755"
- },
- "complaintStatus": {
- "$ref": "#/components/schemas/complaintStatus"
- },
- "customerMobileNumber": {
- "$ref": "#/components/schemas/mobile"
- },
- "partnerRefId": {
- "type": "string",
- "example": "AX30910192192192192"
- },
- "refId": {
- "type": "string",
- "description": "Reference ID",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
- },
- "remarks": {
- "type": "string",
- "description": "BBPS Complaint remarks",
- "example": "Payment Pending"
- },
- "responseCode": {
- "type": "string",
- "description": "Carries the response code indicating success or failure of the transaction",
- "example": "0"
- },
- "responseReason": {
- "type": "string",
- "example": "SUCCESS"
- },
- "transactionId": {
- "type": "string",
- "description": "Setu BillPay Transaction ID.",
- "example": "AX30910192192192192"
- }
- }
- },
- "disputeListResponse": {
- "required": [
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "data": {
- "required": [
- "disputes"
- ],
- "type": "object",
- "properties": {
- "disputes": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/disputeListItem"
- }
- },
- "nextPage": {
- "type": "string",
- "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
- },
- "total": {
- "type": "integer",
- "example": 3000
- }
- }
- },
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": true
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
},
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- }
- },
- "disputeResponseData": {
- "required": [
- "assignedTo",
- "disputeId",
- "refId",
- "remarks",
- "status"
- ],
- "type": "object",
- "properties": {
- "assignedTo": {
- "type": "string",
- "example": "ICICI BOU"
- },
- "disputeId": {
- "type": "string",
- "example": "OP0121046567755"
- },
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- },
- "remarks": {
- "type": "string",
- "example": "Resolved in favour of Biller"
- },
- "status": {
- "$ref": "#/components/schemas/complaintStatus"
- }
- },
- "x-go-name": "DisputeResponseData"
- },
- "errorMessage": {
- "required": [
- "code",
- "message"
- ],
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "example": "validation-error"
- },
- "message": {
- "type": "string",
- "example": "Input is invalid"
- }
- }
- },
- "genericErrorResponse": {
- "required": [
- "error",
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": false
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- }
- },
- "genericRefIdResponse": {
- "required": [
- "data",
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/wrappedRefId"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
- }
- }
- },
- "healthResponseParam": {
- "required": [
- "environment",
- "server",
- "version"
- ],
- "type": "object",
- "properties": {
- "environment": {
- "type": "string",
- "example": "PROD"
- },
- "server": {
- "type": "string",
- "example": "mistborn"
- },
- "version": {
- "type": "string",
- "example": "db42717a829da9d3061e4f409f3c0ee9935b72a5"
- }
- },
- "x-go-name": "HealthResponseParam",
- "x-omitempty": true
- },
- "mobile": {
- "maxLength": 20,
- "minLength": 6,
- "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
- "type": "string",
- "description": "Mobile number with 6, 10 and 20 digits are valid.",
- "example": "9481773053"
- },
- "paymentChannel": {
- "type": "string",
- "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
- "example": "INT",
- "enum": [
- "INT",
- "INTB",
- "MOB",
- "BNKBRNCH",
- "BSC",
- "AGT",
- "KIOSK",
- "ATM",
- "MOBB",
- "POS",
- "MPOS"
- ]
- },
- "paymentChannelSpec": {
- "required": [
- "maxLimit",
- "minLimit",
- "paymentChannel",
- "supportsPendingStatus"
- ],
- "type": "object",
- "properties": {
- "maxLimit": {
- "type": "integer",
- "example": 500000000
- },
- "minLimit": {
- "type": "integer",
- "example": 10100
- },
- "paymentChannel": {
- "$ref": "#/components/schemas/paymentChannel"
- },
- "supportsPendingStatus": {
- "type": "boolean",
- "example": false
- }
- }
- },
- "paymentDetails": {
- "required": [
- "amount",
- "mode",
- "paymentRefId",
- "timestamp"
- ],
- "type": "object",
- "properties": {
- "amount": {
- "minimum": 1,
- "type": "integer",
- "description": "Amount in Paise",
- "example": 10000
- },
- "mode": {
- "$ref": "#/components/schemas/paymentMode"
- },
- "selectedPaymentOptions": {
- "$ref": "#/components/schemas/selectedPaymentOptions"
- },
- "paymentRefId": {
- "maxLength": 35,
- "minLength": 6,
- "type": "string",
- "example": "BD019181220291"
- },
- "timestamp": {
- "type": "string",
- "format": "date-time",
- "example": "2020-12-12T13:12:00+05:30"
- }
- }
- },
- "paymentMode": {
- "type": "string",
- "example": "Internet Banking",
- "enum": [
- "Internet Banking",
- "Debit Card",
- "Credit Card",
- "Prepaid Card",
- "IMPS",
- "Cash",
- "UPI",
- "Wallet",
- "NEFT",
- "AEPS",
- "Account Transfer",
- "Bharat QR",
- "USSD"
- ]
- },
- "paymentModeSpec": {
- "required": [
- "maxLimit",
- "minLimit",
- "paymentMode",
- "supportsPendingStatus"
- ],
- "type": "object",
- "properties": {
- "maxLimit": {
- "type": "integer",
- "example": 500000000
- },
- "minLimit": {
- "type": "integer",
- "example": 10100
- },
- "paymentMode": {
- "$ref": "#/components/schemas/paymentMode"
- },
- "supportsPendingStatus": {
- "type": "boolean",
- "example": false
- }
- }
- },
- "selectedPaymentOptionItem": {
- "required": [
- "name",
- "amount"
- ],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "The display name of the selected payment option from fetch response.",
- "example": "Early Payment Amount"
- },
- "amount": {
- "type": "integer",
- "description": "The amount being paid for the selected payment option in paise.",
- "example": 10000
- }
- }
- },
- "selectedPaymentOptions": {
- "type": "array",
- "description": "List of selected payment options",
- "items": {
- "$ref": "#/components/schemas/selectedPaymentOptionItem"
- }
- },
- "paymentOptionItem": {
- "x-go-name": "PaymentOption",
- "type": "object",
- "required": [
- "name"
- ],
- "properties": {
- "name": {
- "type": "string",
- "example": "2 Months EMI Amount",
- "description": "The display name of the option."
- },
- "amount": {
- "type": "integer",
- "example": 2000,
- "description": "The amount that can be paid for this option in paise."
- },
- "minAmount": {
- "type": "integer",
- "example": 200,
- "description": "The minimum amount that can be paid for this option in paise."
- },
- "maxAmount": {
- "type": "integer",
- "example": 20000,
- "description": "The maximum amount that can be paid for this option in paise."
- },
- "amountMultiple": {
- "type": "integer",
- "example": 100,
- "description": "The payment amount should be a multiple of this value in paise."
- }
- }
- },
- "planItem": {
- "required": [
- "amount",
- "categoryType",
- "description",
- "id",
- "status"
- ],
- "type": "object",
- "properties": {
- "additionalInfo": {
- "minItems": 1,
- "type": "array",
- "description": "Plan Additional information details provided by the Biller.",
- "example": [
- {
- "paramName": "Mobile Number",
- "paramValue": "Text"
- }
- ],
- "items": {
- "type": "object",
- "properties": {
- "paramName": {
- "type": "string",
- "example": "Plan Additional information parameter name."
- },
- "paramValue": {
- "type": "string",
- "example": "Plan Additional information parameter value."
- }
- },
- "example": {
- "paramName": "Mobile Number",
- "paramValue": "Text"
- },
- "x-go-name": "PlanAdditionalInfoItem"
- },
- "x-omitempty": true
- },
- "amount": {
- "type": "string",
- "example": "22"
- },
- "categorySubType": {
- "type": "object",
- "properties": {},
- "description": "Plan sub category as defined by the Biller.",
- "example": {
- "subType": "1 Month"
- },
- "x-omitempty": true
- },
- "categoryType": {
- "type": "string",
- "description": "Plan category as defined by the Biller.",
- "example": "VIP"
- },
- "description": {
- "type": "string",
- "description": "Plan description as defined by the Biller.",
- "example": "Unlimited Live Sports"
- },
- "effectiveFrom": {
- "type": "string",
- "description": "Effective from date of corresponding Plan.",
- "format": "date",
- "nullable": true,
- "example": "2017-07-21",
- "x-omitempty": false
- },
- "effectiveTo": {
- "type": "string",
- "description": "Effective to date of corresponding Plan.",
- "format": "date",
- "nullable": true,
- "example": "2020-08-21",
- "x-omitempty": false
- },
- "id": {
- "type": "string",
- "description": "Plan ID",
- "example": "1"
- },
- "status": {
- "type": "string",
- "description": "Effective to date of corresponding Plan.",
- "example": "ACTIVE",
- "enum": [
- "ACTIVE",
- "DEACTIVATED"
+ {
+ "QA": [
+ "bbps:partner"
]
}
- }
- },
- "refIdBasedRequest": {
- "required": [
- "refId"
- ],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
- }
- },
- "x-go-name": "RefIdBasedRequest",
- "x-omitempty": true
- },
- "status": {
- "type": "string",
- "example": "Success",
- "enum": [
- "Processing",
- "Success",
- "Failure"
]
- },
- "successAndTracerDetails": {
- "required": [
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- }
- },
- "transactionsResponse": {
- "required": [
- "data",
- "success",
- "traceId"
- ],
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/txnResponseData"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "TransactionsResponse",
- "x-omitempty": true
- },
- "txnLineItem": {
- "type": "object",
- "properties": {
- "amount": {
- "type": "integer",
- "example": 120000
- },
- "bills": {
- "type": "array",
- "example": [
- {
- "billNumber": "4705299027986032967",
- "amount": 3000
- },
- {
- "billNumber": "3056665275489131002",
- "amount": 7000
- }
- ],
- "description": "Details of bills for which payment was made.",
- "items": {
- "$ref": "#/components/schemas/bill"
- },
- "uniqueItems": true,
- "nullable": true
- },
- "billerId": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- },
- "customerMobileNumber": {
- "$ref": "#/components/schemas/mobile"
- },
- "partnerRefId": {
- "type": "string",
- "example": "AX30910192192192192"
- },
- "refId": {
- "type": "string",
- "description": "BBPS Reference ID",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- },
- "status": {
- "$ref": "#/components/schemas/txnStatus"
- },
- "timestamp": {
- "type": "string",
- "description": "Timestamp provided by partner while making payment request.",
- "format": "date-time",
- "example": "2020-12-12T13:12:00+05:30"
- },
- "transactionId": {
- "type": "string",
- "description": "Setu BillPay Transaction ID.",
- "example": "AX30910192192192192"
+ }
+ }
+ },
+ "components": {
+ "schemas": {},
+ "securitySchemes": {
+ "Production": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "bbps:partner": "Required scope"
+ }
}
}
},
- "txnResponseData": {
- "type": "object",
- "properties": {
- "nextPage": {
- "type": "string",
- "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
- },
- "transactions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/txnLineItem"
+ "Sandbox": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://sandbox-coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "bbps:partner": "Required scope"
}
}
}
},
- "txnStatus": {
- "type": "string",
- "example": "Success",
- "enum": [
- "Processing",
- "Success",
- "Error",
- "Refunded"
- ]
- },
- "wrappedRefId": {
- "required": [
- "refId"
- ],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- }
- }
- }
- },
- "securitySchemes": {
- "bbps": {
+ "QA": {
"type": "oauth2",
"flows": {
"clientCredentials": {
- "tokenUrl": "https://sandbox-coudc.setu.co/api/v1/auth/token",
+ "tokenUrl": "https://qa-coudc.setu.co/api/v1/auth/token",
"scopes": {
- "bbps:partner": "Grant access to agent APIs"
+ "bbps:partner": "Required scope"
}
}
}
}
}
- }
-}
\ No newline at end of file
+ },
+ "x-original-swagger-version": "2.0"
+}
diff --git a/api-references/payments/billpay/pre-built-screens.json b/api-references/payments/billpay/pre-built-screens.json
index c88f9ece..4a839735 100644
--- a/api-references/payments/billpay/pre-built-screens.json
+++ b/api-references/payments/billpay/pre-built-screens.json
@@ -1,30 +1,196 @@
{
"openapi": "3.0.1",
"info": {
- "title": "Setu Billpay - White label solution",
- "description": "Enable easy BBPS bill payments in your App",
- "version": "0.5.0",
- "x-logo": {
- "url": "https://setu-customer-success.s3.ap-south-1.amazonaws.com/icons/setu-logo-dp-on-tp.svg",
- "altText": "Setu logo"
- }
+ "title": "Setu API Server - Ethereal V2",
+ "version": "1.0.0"
},
"servers": [
{
- "url": "https://qa-coudc.setu.co/api/v1",
- "description": "UAT"
+ "url": "https://coudc.setu.co",
+ "description": "Production server"
+ },
+ {
+ "url": "https://sandbox-coudc.setu.co",
+ "description": "Sandbox server"
},
{
- "url": "https://coudc.setu.co/api/v1",
- "description": "Production"
+ "url": "https://qa-coudc.setu.co",
+ "description": "QA server"
}
],
"paths": {
- "/ethereal/link": {
+ "/v2/auth/token": {
"post": {
- "tags": ["Link Generation"],
- "description": "WL link create request API",
- "operationId": "EtherealLinkRequest",
+ "tags": [
+ "Token API"
+ ],
+ "description": "Fetch token to be used to authorize all Setu APIs",
+ "operationId": "fetchToken",
+ "requestBody": {
+ "description": "The API key pair",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "clientID": {
+ "type": "string",
+ "description": "clientID from the API key pair"
+ },
+ "secret": {
+ "type": "string",
+ "description": "secret from the API key pair"
+ }
+ },
+ "description": "Fetch Token API payload"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "Auth token response",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "expiresIn",
+ "token"
+ ],
+ "type": "object",
+ "properties": {
+ "expiresIn": {
+ "type": "integer",
+ "description": "Token expiry duration in seconds"
+ },
+ "token": {
+ "type": "string",
+ "description": "Token to be used in subsequent requests"
+ }
+ }
+ },
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-codegen-request-body-name": "fetchTokenPayload"
+ }
+ },
+ "/v2/webhooks/payment-event": {
+ "post": {
+ "tags": [
+ "Custom Payment Webhook"
+ ],
+ "description": "Custom payment webhook API",
+ "operationId": "CouCustomPaymentWebhook",
"parameters": [
{
"name": "X-PARTNER-ID",
@@ -32,16 +198,7 @@
"description": "Partner ID",
"required": true,
"schema": {
- "type": "string"
- }
- },
- {
- "name": "Authorization",
- "in": "header",
- "description": "Authorization Bearer token",
- "required": true,
- "schema": {
- "type": "string"
+ "type": "integer"
}
}
],
@@ -49,7 +206,43 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/etherealLinkCreateRequest"
+ "required": [
+ "amount",
+ "orderId",
+ "paymentDateTime",
+ "paymentMode",
+ "paymentStatus",
+ "transactionId"
+ ],
+ "type": "object",
+ "properties": {
+ "orderId": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "paymentDateTime": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "paymentStatus": {
+ "type": "string",
+ "example": "SUCCESS"
+ },
+ "transactionId": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "amount": {
+ "type": "string",
+ "example": "SUCCESS"
+ }
+ },
+ "x-go-name": "CouCustomPaymentWebhook",
+ "x-omitempty": true
}
}
},
@@ -105,7 +298,18 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/etherealLinkCreateResponse"
+ "required": [
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "example": "acknowledged"
+ }
+ },
+ "x-go-name": "CouCustomPaymentWebhookResponse",
+ "x-omitempty": true
}
}
}
@@ -115,7 +319,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -125,25 +361,136 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
}
},
- "x-codegen-request-body-name": "EtherealLinkCreateRequest"
+ "x-codegen-request-body-name": "CouCustomPaymentWebhook"
}
},
- "/auth/token": {
+ "/v2/ethereal/link": {
"post": {
- "tags": ["Token API"],
- "description": "Get Token API",
- "operationId": "GetToken",
+ "tags": [
+ "Link Generation"
+ ],
+ "description": "Ethereal link create request API",
+ "operationId": "EtherealLinkRequest",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
"requestBody": {
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/TokenAPIRequest"
+ "required": [
+ "orgId"
+ ],
+ "type": "object",
+ "properties": {
+ "custID": {
+ "type": "string",
+ "example": "12345"
+ },
+ "mobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "orgId": {
+ "type": "string",
+ "example": "1.22337203685477E14"
+ },
+ "redirectTo": {
+ "type": "string",
+ "example": "transactions",
+ "enum": [
+ "transactions",
+ "disputes"
+ ]
+ },
+ "additionalInfo": {
+ "type": "object",
+ "properties": {},
+ "description": "Additional Session information"
+ },
+ "billParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "billerId": {
+ "type": "string",
+ "example": "MAHI0000001"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "Water"
+ }
+ },
+ "x-go-name": "EtherealLinkCreateRequest",
+ "x-omitempty": true
}
}
},
@@ -152,10 +499,78 @@
"responses": {
"200": {
"description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/getTokenResponse"
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "link": {
+ "type": "string",
+ "example": "link"
+ },
+ "sessionId": {
+ "type": "string",
+ "example": "sessionId"
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ },
+ "x-go-name": "EtherealLinkCreateResponse",
+ "x-omitempty": true
}
}
}
@@ -165,7 +580,39 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
@@ -175,155 +622,110 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/genericErrorResponse"
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
}
}
}
}
},
- "x-codegen-request-body-name": "TokenAPIRequest"
+ "security": [],
+ "x-codegen-request-body-name": "EtherealLinkCreateRequest"
}
}
},
"components": {
"schemas": {
- "billerResponseType": {
- "type": "string",
- "enum": ["SINGLE", "LIST", "SELECTIVE"],
- "example": "LIST",
- "description": "Specifies whether a biller returns a single bill or a list of bills during bill fetch",
- "nullable": true
- },
- "billerSelectionType": {
- "type": "string",
- "enum": ["SINGLE", "MULTIPLE", "ALL"],
- "example": "SINGLE",
- "description": "In case of LIST billers, specifies the number of bills a biller allows to be paid at once",
- "nullable": true
- },
- "billerAdditionalInfoItem": {
- "required": ["dataType", "optional", "paramName"],
+ "fetchTokenRequest": {
"type": "object",
"properties": {
- "dataType": {
- "type": "string",
- "example": "ALPHANUMERIC",
- "enum": ["ALPHANUMERIC", "NUMERIC"]
- },
- "optional": {
- "type": "boolean",
- "example": false
- },
- "paramName": {
- "type": "string",
- "example": "Package Duration"
- }
- }
- },
- "etherealLoginValidateRequest": {
- "required": ["mobileNumber", "orgId", "otp", "refId", "sessionId"],
- "type": "object",
- "properties": {
- "mobileNumber": {
- "type": "string",
- "example": "mobileNumber"
- },
- "orgId": {
- "type": "string",
- "example": "orgId"
- },
- "otp": {
- "type": "string",
- "example": "otp"
- },
- "refId": {
+ "clientID": {
"type": "string",
- "example": "refId"
+ "description": "clientID from the API key pair"
},
- "sessionId": {
+ "secret": {
"type": "string",
- "example": "sessionId"
+ "description": "secret from the API key pair"
}
},
- "x-go-name": "EtherealLoginValidateRequest",
- "x-omitempty": true
+ "description": "Fetch Token API payload"
},
- "etherealSessionValidateResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "mobileNumber": {
- "type": "string",
- "example": "mobileNumber"
- },
- "orgConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/etherealOrgConfigurationItem"
- }
- },
- "partnerId": {
- "type": "string",
- "example": "partnerId"
- },
- "secret": {
- "type": "string",
- "example": "secret"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- },
- "isAnonymous": {
- "type": "boolean",
- "example": false
- },
- "orgId": {
- "type": "string",
- "example": "orgId"
- },
- "redirectTo": {
+ "fetchTokenResponse": {
+ "allOf": [
+ {
+ "required": [
+ "expiresIn",
+ "token"
+ ],
"type": "object",
"properties": {
- "billParams": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/billParameterItem"
- }
- },
- "billerId": {
- "type": "string",
- "example": "9082718673"
+ "expiresIn": {
+ "type": "integer",
+ "description": "Token expiry duration in seconds"
},
- "categoryName": {
+ "token": {
"type": "string",
- "example": "9082718673"
+ "description": "Token to be used in subsequent requests"
+ }
+ }
+ },
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
},
- "redirectTo": {
+ "traceId": {
"type": "string",
- "example": "9082718673"
+ "example": "C3SFG0O6N88R6UI7EQ"
}
}
}
- },
- "x-go-name": "EtherealSessionValidateResponse",
- "x-omitempty": true
+ ]
},
- "getTokenResponse": {
+ "successAndTracerDetails": {
+ "required": [
+ "success",
+ "traceId"
+ ],
"type": "object",
"properties": {
- "expiresIn": {
- "type": "integer",
- "example": 300
- },
- "token": {
- "type": "string",
- "example": "eyJhbGciOiJSUzI1NiIs....."
- },
"success": {
"type": "boolean",
"example": true
@@ -333,2606 +735,41 @@
"example": "C3SFG0O6N88R6UI7EQ"
}
}
- },
- "genericErrorResponse": {
- "required": ["error", "success", "traceId"],
- "type": "object",
- "properties": {
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": false
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- }
- },
- "status": {
- "type": "string",
- "example": "Success",
- "enum": ["Processing", "Success", "Failure"]
- },
- "wrappedRefId": {
- "required": ["refId"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- }
- }
- },
- "genericRefIdResponse": {
- "required": ["data", "success", "traceId"],
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/wrappedRefId"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
- }
- }
- },
- "billParameters": {
- "type": "array",
- "description": "The bill params for fetching the bill",
- "items": {
- "$ref": "#/components/schemas/billParameterItem"
- }
- },
- "complaintStatus": {
- "type": "string",
- "description": "BBPS Complaint status",
- "example": "ASSIGNED",
- "enum": [
- "INITIALIZED",
- "ASSIGNED",
- "RE_ASSIGNED",
- "ASSIGNED_TO_BOU",
- "ASSIGNED_TO_COU",
- "ASSIGNED_TO_OU",
- "ESCALATED",
- "RESOLVED",
- "UNRESOLVED"
- ]
- },
- "couCustomOrderCreateRequest": {
- "required": [
- "agentMobileNumber",
- "amount",
- "isDirectBill",
- "mobileNumber",
- "orgId",
- "postPaymentUrl",
- "sessionId"
- ],
- "type": "object",
- "properties": {
- "allowedPaymentMethods": {
- "type": "string",
- "example": "collect123"
- },
- "amount": {
- "type": "string",
- "example": "100"
- },
- "mobileNumber": {
- "type": "string",
- "example": "collect123"
- },
- "orgId": {
- "type": "string",
- "example": "000"
- },
- "sessionId": {
- "type": "string",
- "example": "000"
- },
- "agentMobileNumber": {
- "type": "string",
- "example": "collect123"
- },
- "billRefId": {
- "type": "string",
- "example": "1196687215019689511"
- },
- "isDirectBill": {
- "type": "boolean",
- "example": false
- },
- "postPaymentUrl": {
- "type": "string",
- "example": "collect123"
- }
- },
- "x-go-name": "CouCustomOrderCreateRequest",
- "x-omitempty": true
- },
- "couRZPOrderStatusRequest": {
- "required": ["refId"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "CouRZPOrderStatusRequest",
- "x-omitempty": true
- },
- "couRZPPaymentWebhook": {
- "required": ["account_id", "event", "payload"],
- "type": "object",
- "properties": {
- "data": {
- "type": "string",
- "example": "000"
- },
- "event": {
- "type": "string",
- "example": "merchant123@axisbank"
- },
- "payload": {
- "required": ["payment"],
- "type": "object",
- "properties": {
- "payment": {
- "required": ["entity"],
- "type": "object",
- "properties": {
- "entity": {
- "required": ["amount", "id", "orderId", "status"],
- "type": "object",
- "properties": {
- "orderId": {
- "type": "string",
- "example": "000"
- },
- "status": {
- "type": "string",
- "example": "000"
- },
- "amount": {
- "type": "integer",
- "example": 100
- },
- "id": {
- "type": "string",
- "example": "000"
- },
- "method": {
- "type": "string",
- "example": "000"
- },
- "notes": {
- "required": ["address"],
- "type": "object",
- "properties": {
- "address": {
- "type": "string",
- "example": "000"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "account_id": {
- "type": "string",
- "example": "SUCCESS"
- }
- },
- "x-go-name": "CouRZPPaymentWebhook",
- "x-omitempty": true
- },
- "etherealConfigurationGetResponse": {
- "required": ["configs", "traceId"],
- "type": "object",
- "properties": {
- "configs": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/etherealOrgConfigurationItem"
- }
- },
- "error": {
- "type": "string",
- "example": "000"
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "EtherealConfigurationGetResponse",
- "x-omitempty": true
- },
- "etherealSessionValidateRequest": {
- "required": ["sessionId"],
- "type": "object",
- "properties": {
- "sessionId": {
- "type": "string",
- "example": "sessionId"
- }
- },
- "x-go-name": "EtherealSessionValidateRequest",
- "x-omitempty": true
- },
- "couUPIOrderStatusRequest": {
- "required": ["merchChannelId", "merchId", "mobileNumber", "refId"],
- "type": "object",
- "properties": {
- "merchChannelId": {
- "type": "string",
- "example": "SUCCESS"
- },
- "merchId": {
- "type": "string",
- "example": "000"
- },
- "mobileNumber": {
- "type": "string",
- "example": "ORDID12345"
- },
- "refId": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "CouUPIOrderStatusRequest",
- "x-omitempty": true
- },
- "etherealConfigurationCreateResponse": {
- "required": ["result", "traceId"],
- "type": "object",
- "properties": {
- "error": {
- "type": "string",
- "example": "000"
- },
- "result": {
- "type": "array",
- "items": {
- "required": ["configId"],
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean",
- "example": true
- },
- "configId": {
- "type": "string",
- "example": "000"
- }
- }
- }
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "EtherealConfigurationCreateResponse",
- "x-omitempty": true
- },
- "additionalInfoLineItem": {
- "required": ["name", "value"],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "example": "Line item 1"
- },
- "value": {
- "type": "string",
- "example": "Value 1"
- }
- }
- },
- "bbpsFailureReason": {
- "required": ["code", "message"],
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "example": "ERR004"
- },
- "message": {
- "type": "string",
- "example": "customer not found"
- },
- "type": {
- "type": "string",
- "enum": ["FUND_TRANSFER", "BBPS", "APP"]
- }
- }
- },
- "billParameterItem": {
- "required": ["name", "value"],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "The display name of the parameter. This has to match what is sent in fields.",
- "example": "Loan Number"
- },
- "value": {
- "type": "string",
- "description": "The value of the customer parameter",
- "example": "1895159"
- }
- }
- },
- "couRZPOrderCreateResponse": {
- "required": ["key", "orderId", "refId", "status"],
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "example": "SUCCESS"
- },
- "orderId": {
- "type": "string",
- "example": "000"
- },
- "refId": {
- "type": "string",
- "example": "000"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- }
- },
- "x-omitempty": true,
- "x-go-name": "CouRZPOrderCreateResponse"
- },
- "selectedPaymentOptions": {
- "type": "array",
- "description": "Payment details of the selected payment option from bill fetch response",
- "items": {
- "$ref": "#/components/schemas/selectedPaymentOptionItem"
- }
- },
- "txnLineItem": {
- "type": "object",
- "properties": {
- "amount": {
- "type": "integer",
- "example": 120000
- },
- "bills": {
- "type": "array",
- "example": [
- {
- "billNumber": "4705299027986032967",
- "amount": 3000
- },
- {
- "billNumber": "3056665275489131002",
- "amount": 7000
- }
- ],
- "description": "Details of bills for which payment was made.",
- "items": {
- "$ref": "#/components/schemas/bill"
- },
- "uniqueItems": true,
- "nullable": true
- },
- "biller": {
- "$ref": "#/components/schemas/billerDetails"
- },
- "billerId": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- },
- "customerParams": {
- "$ref": "#/components/schemas/billParameters"
- },
- "partnerRefId": {
- "type": "string",
- "example": "AX30910192192192192"
- },
- "refundStatus": {
- "$ref": "#/components/schemas/txnRefundStatus"
- },
- "transactionId": {
- "type": "string",
- "description": "Setu BillPay Transaction ID.",
- "example": "AX30910192192192192"
- },
- "customerMobileNumber": {
- "$ref": "#/components/schemas/mobile"
- },
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- },
- "status": {
- "$ref": "#/components/schemas/txnStatus"
- },
- "timestamp": {
- "type": "string",
- "description": "Timestamp provided by partner while making payment request.",
- "format": "date-time",
- "example": "2020-12-12T13:12:00+05:30"
- }
- }
- },
- "billPaymentResponseData": {
- "required": ["refId", "status"],
- "type": "object",
- "properties": {
- "additionalInfo": {
- "$ref": "#/components/schemas/billAdditionalInfo"
- },
- "billerId": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- },
- "bills": {
- "type": "array",
- "example": [
- {
- "billNumber": "4705299027986032967",
- "amount": 3000
- },
- {
- "billNumber": "3056665275489131002",
- "amount": 7000
- }
- ],
- "description": "Details of bills(for LIST billers) for which payment was made.",
- "items": {
- "$ref": "#/components/schemas/bill"
- },
- "uniqueItems": true,
- "nullable": true
- },
- "paymentDetails": {
- "$ref": "#/components/schemas/paymentDetails"
- },
- "transactionId": {
- "type": "string",
- "example": "AX30910192192192192"
- },
- "billerRefId": {
- "type": "string",
- "example": "ZA6291A177"
- },
- "failureReason": {
- "$ref": "#/components/schemas/bbpsFailureReason"
- },
- "lastPaidDate": {
- "type": "string",
- "format": "date-time",
- "nullable": true,
- "example": "2020-12-12T13:12:00+05:30"
- },
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- },
- "refundStatus": {
- "$ref": "#/components/schemas/txnRefundStatus"
- },
- "status": {
- "$ref": "#/components/schemas/status"
- }
- }
- },
- "couCustomRefundCreateRequest": {
- "required": ["amount", "refId"],
- "type": "object",
- "properties": {
- "amount": {
- "type": "string",
- "example": "ORDID12345"
- },
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- }
- },
- "x-go-name": "CouCustomRefundCreateRequest",
- "x-omitempty": true
- },
- "txnRefundStatus": {
- "type": "string",
- "example": "Required",
- "enum": ["Required", "Requested", "Processed"]
- },
- "etherealOrganisationCreateRequest": {
- "required": ["name"],
- "type": "object",
- "properties": {
- "agentInsitutionId": {
- "type": "string",
- "example": "12345"
- },
- "name": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "EtherealOrganisationCreateRequest",
- "x-omitempty": true
- },
- "billFetchResponseData": {
- "required": ["refId", "status"],
- "type": "object",
- "properties": {
- "bill": {
- "$ref": "#/components/schemas/billData"
- },
- "bills": {
- "type": "array",
- "description": "Multiple bills returned by LIST billers",
- "items": {
- "$ref": "#/components/schemas/billData"
- },
- "x-omitempty": true
- },
- "exactness": {
- "type": "string",
- "enum": ["Exact", "Exact and above", "Exact and below", "Any", "RANGE"],
- "example": "Exact",
- "description": "Specifies the range of payment amounts allowed by the biller"
- },
- "failureReason": {
- "$ref": "#/components/schemas/bbpsFailureReason"
- },
- "isCached": {
- "type": "boolean",
- "nullable": true,
- "example": false
- },
- "paymentLimits": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentModeSpec"
- },
- "x-omitempty": true
- },
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- },
- "additionalInfo": {
- "$ref": "#/components/schemas/billAdditionalInfo"
- },
- "billerRefId": {
- "type": "string",
- "example": "7f16a032e514"
- },
- "lastPaidDate": {
- "type": "string",
- "format": "date-time",
- "nullable": true,
- "example": "2020-12-12T13:12:00+05:30"
- },
- "status": {
- "$ref": "#/components/schemas/status"
- }
- }
- },
- "billerApiType": {
- "type": "string",
- "example": "BILL_FETCH",
- "enum": ["BILL_FETCH", "BILL_VALIDATE", "BILL_DIRECT"]
- },
- "billerListResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- },
- "data": {
- "required": ["billers"],
- "type": "object",
- "properties": {
- "billers": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/billerDetails"
- }
- },
- "nextPage": {
- "type": "string",
- "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
- },
- "total": {
- "type": "integer",
- "example": 3000
- }
- }
- },
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": true
- }
- }
- },
- "couAgentBillFetchResponse": {
- "required": ["data", "success", "traceId"],
- "type": "object",
- "properties": {
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- },
- "data": {
- "$ref": "#/components/schemas/billFetchResponseData"
- },
- "success": {
- "type": "boolean",
- "example": true
- }
- },
- "x-go-name": "CouAgentBillFetchResponse"
- },
- "couAgentBillPaymentRequest": {
- "required": ["paymentDetails"],
- "type": "object",
- "properties": {
- "do-ift-status-check": {
- "type": "boolean",
- "description": "When debug is enabled, do-ift-status-check will do status check of internal fund transfer.",
- "example": false
- },
- "dummyMsgId": {
- "type": "string",
- "description": "On debug, this is msgId NEGATIVE 10",
- "nullable": true
- },
- "headTimestamp": {
- "type": "string",
- "description": "On debug, this value is used as head timestamp NEGATIVE 5",
- "nullable": true
- },
- "invalidCustomerTagValue": {
- "type": "boolean",
- "description": "On debug, pass invalid customer tag value NEGATIVE 15",
- "nullable": true
- },
- "skipFetch": {
- "type": "boolean",
- "description": "On debug, skip fetch request before payment, NEGATIVE - 27,",
- "nullable": true
- },
- "agent": {
- "$ref": "#/components/schemas/agentDetails"
- },
- "bills": {
- "type": "array",
- "example": [
- {
- "billNumber": "4705299027986032967",
- "amount": 3000
- },
- {
- "billNumber": "3056665275489131002",
- "amount": 7000
- }
- ],
- "description": "Array of bills to be paid when making payments for LIST billers. Optional for SINGLE billers.",
- "items": {
- "$ref": "#/components/schemas/bill"
- },
- "uniqueItems": true,
- "nullable": true
- },
- "dummyTransactionRefId": {
- "type": "string",
- "description": "When debug is enabled, this dummy-transaction-id is used as the transaction id. This allows us to test arbitrary length refId test cases.",
- "example": "dummy-transaction-id"
- },
- "transactionProvider": {
- "type": "string",
- "description": "On debug, this is the transaction provider NEGATIVE 14",
- "nullable": true
- },
- "dummyBillerId": {
- "type": "string",
- "description": "On debug, this is the billerId NEGATIVE 13",
- "nullable": true
- },
- "biller": {
- "$ref": "#/components/schemas/autofetchBillerCustomerParamsBiller"
- },
- "dummy-npci-pool-branch-id": {
- "type": "string",
- "description": "When debug is enabled, replaces npci pool branch id",
- "example": ""
- },
- "dummyAgentId": {
- "type": "string",
- "description": "On debug, this is the agent id NEGATIVE 12",
- "nullable": true
- },
- "invalidPaymentInformation": {
- "type": "string",
- "description": "On debug, this value is sent in payment information NEGATIVE - 4",
- "nullable": true
- },
- "skipPaymentResponseAck": {
- "type": "boolean",
- "description": "When debug is enabled, skip the final acknowledgement. This allows us to test \"Elimination of Reversal\". The details on which case to skip ack is sent via \"eliminationOfReversalDetails\"",
- "example": false
- },
- "dummy-npci-pool-bank-id": {
- "type": "string",
- "description": "When debug is enabled, replaces npci pool bank id",
- "example": ""
- },
- "fail-fund-transfer-count": {
- "type": "integer",
- "description": "When debug is enabled, this fails fund transfer for count times",
- "example": 0
- },
- "invalidCustomerTagKey": {
- "type": "boolean",
- "description": "On debug, invalid customer params will be sent NEGATIVE 7",
- "nullable": true
- },
- "timeout-npci-request": {
- "type": "boolean",
- "description": "When debug is enabled, this timeouts the npci request",
- "example": false
- },
- "timeout-npci-request-delay": {
- "type": "integer",
- "description": "When debug is enabled, this timesout the NPCI request. This actually hits the NPCI request in a delayed approach. The delay time in seconds."
- },
- "debug": {
- "type": "boolean",
- "description": "When a non-direct payment is being made, refId of fetch/validate is used to populate customer and biller data. When `debug` field is set to `true`, passed customer, biller or agent details will be replace the fetch/validate data. This allows us to run test cases that require diff details from initial fetch/validate request.",
- "example": false
- },
- "dummyAmount": {
- "type": "integer",
- "description": "On debug, this is the final amount NEGATIVE 11, 22",
- "nullable": true
- },
- "skip-npci-heartbeat": {
- "type": "boolean",
- "description": "When debug is enabled, skips the npci heartbeat check before issuing payment request",
- "example": false
- },
- "skip-npci-response": {
- "type": "boolean",
- "description": "When debug is enabled, skip-npci-response won't process NPCI response.",
- "example": false
- },
- "skipBillerResponse": {
- "type": "boolean",
- "description": "On debug, don't send biller response on fetch req NEGATIVE 21",
- "nullable": true
- },
- "headVersion": {
- "type": "string",
- "description": "On debug, this head version is used. NEGATIVE - 1",
- "nullable": true
- },
- "ouid": {
- "type": "string",
- "description": "On debug, this is payment ouid NEGATIVE 6",
- "nullable": true
- },
- "customer": {
- "$ref": "#/components/schemas/customerDetails"
- },
- "dummy-npci-pool-account-number": {
- "type": "string",
- "description": "When debug is enabled, replaces npci pool account number",
- "example": ""
- },
- "passBlankPaymentInformation": {
- "type": "boolean",
- "description": "On debug, pass blank payment information NEGATIVE - 26",
- "nullable": true
- },
- "paymentDetails": {
- "$ref": "#/components/schemas/paymentDetails"
- },
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- }
- },
- "x-go-name": "CouAgentBillPaymentRequest",
- "x-omitempty": true
- },
- "couCustomRefundCreateResponse": {
- "required": ["status"],
- "type": "object",
- "properties": {
- "status": {
- "type": "string",
- "example": "SUCCESS"
- }
- },
- "x-go-name": "CouCustomRefundCreateResponse",
- "x-omitempty": true
- },
- "etherealLoginCreateResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "refId"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "EtherealLoginCreateResponse",
- "x-omitempty": true
- },
- "paymentMode": {
- "type": "string",
- "example": "Internet Banking",
- "enum": [
- "Internet Banking",
- "Debit Card",
- "Credit Card",
- "Prepaid Card",
- "IMPS",
- "Cash",
- "UPI",
- "Wallet",
- "NEFT",
- "AEPS",
- "Account Transfer",
- "Bharat QR",
- "USSD"
- ]
- },
- "bill": {
- "type": "object",
- "required": [
- "billNumber",
- "amount"
- ],
- "properties": {
- "billNumber": {
- "type": "string",
- "example": "B123456",
- "description": "Unique identifier for the bill"
- },
- "amount": {
- "type": "integer",
- "example": 450000,
- "minimum": 1,
- "description": "Amount to be paid in paise for the specified bill number"
- }
- }
- },
- "billAdditionalInfo": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/additionalInfoLineItem"
- },
- "x-go-name": "BillAdditionalInfo"
- },
- "couUPIPaymentWebhook": {
- "required": ["data"],
- "type": "object",
- "properties": {
- "data": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "CouUPIPaymentWebhook",
- "x-omitempty": true
- },
- "etherealConfigurationItem": {
- "required": ["name", "value"],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "The display name of the configuration",
- "example": "Loan Number"
- },
- "value": {
- "type": "string",
- "description": "The value of the configuration",
- "example": "1895159"
- }
- }
- },
- "etherealLoginValidateResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "EtherealLoginValidateResponse",
- "x-omitempty": true
- },
- "paymentChannel": {
- "type": "string",
- "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
- "example": "INT",
- "enum": [
- "INT",
- "INTB",
- "MOB",
- "BNKBRNCH",
- "BSC",
- "AGT",
- "KIOSK",
- "ATM",
- "MOBB",
- "POS",
- "MPOS"
- ]
- },
- "billerDetails": {
- "required": [
- "categoryName",
- "customerParams",
- "exactness",
- "fetchApiType",
- "id",
- "name",
- "payWithoutFetchAllowed",
- "paymentChannels",
- "paymentModes",
- "responseType",
- "selectionType",
- "supportsPendingStatus"
- ],
- "type": "object",
- "properties": {
- "paymentChannels": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentChannelSpec"
- }
- },
- "supportsPendingStatus": {
- "type": "boolean",
- "example": false
- },
- "billerAdditionalInfo": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/billerAdditionalInfoItem"
- }
- },
- "categoryName": {
- "type": "string",
- "example": "loan-repayment"
- },
- "logo": {
- "type": "string",
- "example": "logo"
- },
- "name": {
- "type": "string",
- "example": "Aditya Birla Sun Life Insurance"
- },
- "tags": {
- "type": "string",
- "example": "tags"
- },
- "city": {
- "type": "string",
- "example": "city"
- },
- "coverage": {
- "type": "string",
- "example": "IND"
- },
- "modifiedAt": {
- "type": "string",
- "format": "date-time",
- "nullable": true,
- "example": "2021-11-12T13:37:04.572+05:30",
- "x-omitempty": false
- },
- "plans": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/planItem"
- }
- },
- "responseType": {
- "$ref": "#/components/schemas/billerResponseType"
- },
- "state": {
- "type": "string",
- "example": "state"
- },
- "selectionType": {
- "$ref": "#/components/schemas/billerSelectionType"
- },
- "subCategoryName": {
- "type": "string",
- "example": "DAIRY"
- },
- "customerParams": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/customerParamSpec"
- }
- },
- "exactness": {
- "type": "string",
- "enum": ["Exact", "Exact and above", "Exact and below", "Any", "RANGE"],
- "example": "Exact",
- "description": "Specifies the range of payment amounts allowed by the biller"
- },
- "pincode": {
- "type": "string",
- "example": "pincode"
- },
- "fetchApiType": {
- "$ref": "#/components/schemas/billerApiType"
- },
- "id": {
- "type": "string",
- "example": "ADIT00000NAT0T"
- },
- "payWithoutFetchAllowed": {
- "type": "boolean",
- "example": true
- },
- "paymentModes": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentModeSpec"
- }
- },
- "billerAdditionalInfoPayment": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/billerAdditionalInfoItem"
- }
- },
- "createdAt": {
- "type": "string",
- "format": "date-time",
- "nullable": true,
- "example": "2021-11-12T13:37:04.572+05:30",
- "x-omitempty": false
- },
- "customerParamsGroups": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/customerParamsGroupItem"
- }
- }
- },
- "x-go-name": "CouBillerDetails"
- },
- "couCustomOrderCreateResponse": {
- "required": ["link", "refId", "status"],
- "type": "object",
- "properties": {
- "link": {
- "type": "string",
- "example": "ORDID12345"
- },
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- }
- },
- "x-go-name": "CouCustomOrderCreateResponse",
- "x-omitempty": true
- },
- "couRZPOrderCreateRequest": {
- "required": ["amount", "isDirectBill", "orgId", "sessionId"],
- "type": "object",
- "properties": {
- "amount": {
- "type": "string",
- "example": "100"
- },
- "billRefId": {
- "type": "string",
- "example": "1196687215019689511"
- },
- "isDirectBill": {
- "type": "boolean",
- "example": false
- },
- "orgId": {
- "type": "string",
- "example": "000"
- },
- "sessionId": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "CouRZPOrderCreateRequest",
- "x-omitempty": true
- },
- "couUPIOrderCreateRequest": {
- "required": [
- "amount",
- "creditVpa",
- "isDirectBill",
- "merchChanId",
- "orgId",
- "sessionId"
- ],
- "type": "object",
- "properties": {
- "isDirectBill": {
- "type": "boolean",
- "example": false
- },
- "merchChanId": {
- "type": "string",
- "example": "collect123"
- },
- "orgId": {
- "type": "string",
- "example": "000"
- },
- "sessionId": {
- "type": "string",
- "example": "000"
- },
- "amount": {
- "type": "string",
- "example": "100"
- },
- "billRefId": {
- "type": "string",
- "example": "1196687215019689511"
- },
- "creditVpa": {
- "type": "string",
- "example": "merchant123@axisbank"
- }
- },
- "x-go-name": "CouUPIOrderCreateRequest",
- "x-omitempty": true
- },
- "disputeResponseData": {
- "required": ["assignedTo", "disputeId", "refId", "remarks", "status"],
- "type": "object",
- "properties": {
- "assignedTo": {
- "type": "string",
- "example": "ICICI BOU"
- },
- "disputeId": {
- "type": "string",
- "example": "OP0121046567755"
- },
- "refId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- },
- "remarks": {
- "type": "string",
- "example": "Resolved in favour of Biller"
- },
- "status": {
- "$ref": "#/components/schemas/complaintStatus"
- }
- },
- "x-go-name": "DisputeResponseData"
- },
- "etherealOrganisationCreateResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "example": "name"
- },
- "orgId": {
- "type": "string",
- "example": "123456"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-omitempty": true,
- "x-go-name": "EtherealOrganisationCreateResponse"
- },
- "etherealUserCreateResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "password": {
- "type": "string",
- "example": "password"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- },
- "userId": {
- "type": "string",
- "example": "12345"
- }
- },
- "x-omitempty": true,
- "x-go-name": "EtherealUserCreateResponse"
- },
- "paymentModeSpec": {
- "required": [
- "maxLimit",
- "minLimit",
- "paymentMode",
- "supportsPendingStatus"
- ],
- "type": "object",
- "properties": {
- "maxLimit": {
- "type": "integer",
- "example": 500000000
- },
- "minLimit": {
- "type": "integer",
- "example": 10100
- },
- "paymentMode": {
- "$ref": "#/components/schemas/paymentMode"
- },
- "supportsPendingStatus": {
- "type": "boolean",
- "example": false
- }
- }
- },
- "selectedPaymentOptionItem": {
- "required": ["name", "value"],
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "The display name of the selected payment option from fetch response.",
- "example": "Early Payment Amount"
- },
- "amount": {
- "type": "integer",
- "description": "The amount being paid for the selected payment option in paise.",
- "example": 10000
- }
- }
- },
- "transactionsResponse": {
- "required": ["data", "success", "traceId"],
- "type": "object",
- "properties": {
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- },
- "data": {
- "$ref": "#/components/schemas/txnResponseData"
- },
- "success": {
- "type": "boolean",
- "example": true
- }
- },
- "x-go-name": "TransactionsResponse",
- "x-omitempty": true
- },
- "couCustomOrderStatusResponse": {
- "required": [
- "amount",
- "datetime",
- "paymentMode",
- "refId",
- "status",
- "transactionId"
- ],
- "type": "object",
- "properties": {
- "amount": {
- "type": "string",
- "example": "SUCCESS"
- },
- "datetime": {
- "type": "string",
- "example": "ORDID12345"
- },
- "paymentMode": {
- "type": "string",
- "example": "ORDID12345"
- },
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- },
- "transactionId": {
- "type": "string",
- "example": "ORDID12345"
- }
- },
- "x-go-name": "CouCustomOrderStatusResponse",
- "x-omitempty": true
- },
- "couUPIRefundCreateRequest": {
- "required": [
- "merchChanId",
- "merchId",
- "mobileNumber",
- "reason",
- "refId",
- "sId"
- ],
- "type": "object",
- "properties": {
- "merchChanId": {
- "type": "string",
- "example": "SUCCESS"
- },
- "merchId": {
- "type": "string",
- "example": "000"
- },
- "mobileNumber": {
- "type": "string",
- "example": "ORDID12345"
- },
- "reason": {
- "type": "string",
- "example": "ORDID12345"
- },
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- },
- "sId": {
- "type": "string",
- "example": "ORDID12345"
- }
- },
- "x-go-name": "CouUPIRefundCreateRequest",
- "x-omitempty": true
- },
- "couUPIRefundStatusResponse": {
- "required": ["refId", "responseCode", "status"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- },
- "responseCode": {
- "type": "string",
- "example": "000"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- }
- },
- "x-go-name": "CouUPIRefundStatusResponse",
- "x-omitempty": true
- },
- "paymentOptionItem": {
- "x-go-name": "PaymentOption",
- "type": "object",
- "required": [
- "name"
- ],
- "properties": {
- "name": {
- "type": "string",
- "example": "2 Months EMI Amount",
- "description": "The display name of the option."
- },
- "amount": {
- "type": "integer",
- "example": 2000,
- "description": "The amount that can be paid for this option in paise."
- },
- "minAmount": {
- "type": "integer",
- "example": 200,
- "description": "The minimum amount that can be paid for this option in paise."
- },
- "maxAmount": {
- "type": "integer",
- "example": 20000,
- "description": "The maximum amount that can be paid for this option in paise."
- },
- "amountMultiple": {
- "type": "integer",
- "example": 100,
- "description": "The payment amount should be a multiple of this value in paise."
- }
- }
- },
- "planItem": {
- "required": ["amount", "categoryType", "description", "id", "status"],
- "type": "object",
- "properties": {
- "categorySubType": {
- "type": "object",
- "properties": {},
- "description": "Plan sub category as defined by the Biller.",
- "example": {
- "subType": "1 Month"
- },
- "x-omitempty": true
- },
- "effectiveFrom": {
- "type": "string",
- "description": "Effective from date of corresponding Plan.",
- "format": "date",
- "nullable": true,
- "example": "2017-07-21",
- "x-omitempty": false
- },
- "status": {
- "type": "string",
- "description": "Effective to date of corresponding Plan.",
- "example": "ACTIVE",
- "enum": ["ACTIVE", "DEACTIVATED"]
- },
- "additionalInfo": {
- "minItems": 1,
- "type": "array",
- "description": "Plan Additional information details provided by the Biller.",
- "example": [
- {
- "paramName": "Mobile Number",
- "paramValue": "Text"
- }
- ],
- "items": {
- "type": "object",
- "properties": {
- "paramName": {
- "type": "string",
- "example": "Plan Additional information parameter name."
- },
- "paramValue": {
- "type": "string",
- "example": "Plan Additional information parameter value."
- }
- },
- "example": {
- "paramName": "Mobile Number",
- "paramValue": "Text"
- },
- "x-go-name": "PlanAdditionalInfoItem"
- },
- "x-omitempty": true
- },
- "amount": {
- "type": "string",
- "description": "Plan amount in rupees as defined by the Biller.",
- "example": "22"
- },
- "categoryType": {
- "type": "string",
- "description": "Plan category as defined by the Biller.",
- "example": "VIP"
- },
- "description": {
- "type": "string",
- "description": "Plan description as defined by the Biller.",
- "example": "Unlimited Live Sports"
- },
- "effectiveTo": {
- "type": "string",
- "description": "Effective to date of corresponding Plan.",
- "format": "date",
- "nullable": true,
- "example": "2020-08-21",
- "x-omitempty": false
- },
- "id": {
- "type": "string",
- "description": "Plan ID",
- "example": "1"
- }
- }
- },
- "txnStatus": {
- "type": "string",
- "example": "Success",
- "enum": ["Processing", "Success", "Error"]
- },
- "etherealUserCreateRequest": {
- "required": ["orgId"],
- "type": "object",
- "properties": {
- "orgId": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "EtherealUserCreateRequest",
- "x-omitempty": true
- },
- "autofetchBillerCustomerParamsBiller": {
- "required": ["id"],
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- }
- },
- "x-go-gen-location": "models",
- "x-go-name": "BillerDetails"
- },
- "couAgentBillFetchRequest": {
- "required": ["agent", "biller", "customer"],
- "type": "object",
- "properties": {
- "patch-due-date": {
- "type": "string",
- "description": "On debug, use this as the bill fetch due date.",
- "format": "date",
- "nullable": true
- },
- "agent": {
- "$ref": "#/components/schemas/agentDetails"
- },
- "allowFetchForAdhocBillers": {
- "type": "boolean",
- "description": "On debug, make fetch for payment only billers NEGATIVE 20",
- "nullable": true
- },
- "customer": {
- "$ref": "#/components/schemas/customerDetails"
- },
- "forceFetch": {
- "type": "boolean",
- "example": true
- },
- "biller": {
- "$ref": "#/components/schemas/autofetchBillerCustomerParamsBiller"
- },
- "debug": {
- "type": "boolean",
- "description": "When `true`, param validation is disabled",
- "example": false
- },
- "patch-bill-date": {
- "type": "string",
- "description": "On debug, use this as the bill fetch bill date.",
- "format": "date",
- "nullable": true
- }
- },
- "x-go-name": "CouAgentBillFetchRequest",
- "x-omitempty": true
- },
- "couAgentDisputeResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/disputeResponseData"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "CouAgentDisputeResponse",
- "x-omitempty": true
- },
- "couCustomOrderStatusRequest": {
- "required": ["refId"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "CouCustomOrderStatusRequest",
- "x-omitempty": true
- },
- "couUPIRefundCreateResponse": {
- "required": ["refId", "responseCode", "status"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- },
- "responseCode": {
- "type": "string",
- "example": "000"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- }
- },
- "x-go-name": "CouUPIRefundCreateResponse",
- "x-omitempty": true
- },
- "customerDetails": {
- "required": ["billParameters", "mobile"],
- "type": "object",
- "properties": {
- "billParameters": {
- "$ref": "#/components/schemas/billParameters"
- },
- "mobile": {
- "$ref": "#/components/schemas/mobile"
- }
- }
- },
- "paymentChannelSpec": {
- "required": [
- "maxLimit",
- "minLimit",
- "paymentChannel",
- "supportsPendingStatus"
- ],
- "type": "object",
- "properties": {
- "supportsPendingStatus": {
- "type": "boolean",
- "example": false
- },
- "maxLimit": {
- "type": "integer",
- "example": 500000000
- },
- "minLimit": {
- "type": "integer",
- "example": 10100
- },
- "paymentChannel": {
- "$ref": "#/components/schemas/paymentChannel"
- }
- }
- },
- "paymentDetails": {
- "required": ["amount", "mode", "paymentRefId", "timestamp"],
- "type": "object",
- "properties": {
- "paymentRefId": {
- "maxLength": 35,
- "minLength": 6,
- "type": "string",
- "example": "BD019181220291"
- },
- "timestamp": {
- "type": "string",
- "format": "date-time",
- "example": "2020-12-12T13:12:00+05:30"
- },
- "COUcustConvFee": {
- "type": "integer",
- "nullable": true,
- "example": 10
- },
- "amount": {
- "minimum": 1,
- "type": "integer",
- "description": "Amount in Paise",
- "example": 10000
- },
- "currency": {
- "type": "integer",
- "nullable": true,
- "example": 356
- },
- "custConvFee": {
- "type": "integer",
- "nullable": true,
- "example": 59
- },
- "mode": {
- "$ref": "#/components/schemas/paymentMode"
- },
- "selectedPaymentOptions": {
- "$ref": "#/components/schemas/selectedPaymentOptions"
- }
- }
- },
- "refIdBasedRequest": {
- "required": ["refId"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
- }
- },
- "x-go-name": "RefIdBasedRequest",
- "x-omitempty": true
- },
- "disputeListResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "data": {
- "required": ["disputes"],
- "type": "object",
- "properties": {
- "disputes": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/disputeListItem"
- }
- },
- "nextPage": {
- "type": "string",
- "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
- },
- "total": {
- "type": "integer",
- "example": 3000
- }
- }
- },
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- }
- },
- "TokenAPIRequest": {
- "required": ["clientID", "secret"],
- "type": "object",
- "properties": {
- "clientID": {
- "type": "string",
- "description": "client_id obtained from bridge",
- "example": "client_id"
- },
- "secret": {
- "type": "string",
- "description": "client secret obtained from bridge",
- "example": "client_secret"
- }
- },
- "x-go-name": "TokenAPIRequest",
- "x-omitempty": true
- },
- "etherealLinkCreateRequest": {
- "required": ["orgId"],
- "type": "object",
- "properties": {
- "orgId": {
- "type": "string",
- "description": "ID assigned to your organisation as provided by Setu.",
- "example": "122337203685477"
- },
- "mobileNumber": {
- "type": "string",
- "description": "Mobile number of the user for which the link is generated. If no value is sent, there is a mobile number and OTP flow invoked to validate the user. All transactions and complaints are listed for a given mobile number.",
- "example": "9082718673"
- },
- "redirectTo": {
- "type": "string",
- "description": "Specific page user needs to be redirected to. If left blank, link opens to the homepage.",
- "example": "transactions",
- "enum": ["transactions", "disputes"]
- },
- "billerId": {
- "type": "string",
- "description": "If redirected to a particular bill - pass this value.",
- "example": "BESCOM000KAR01"
- },
- "categoryName": {
- "type": "string",
- "description": "The category of the biller passed in the billerId field.",
- "example": "Electricity",
- "enum": [
- "Electricity",
- "Piped Gas",
- "Water",
- "LPG",
- "Mobile postpaid",
- "Landline postpaid",
- "Broadband postpaid",
- "DTH",
- "FASTag Recharge",
- "Loan Repayment",
- "Recurring Deposits",
- "Credit Card",
- "Mutual Fund",
- "Insurance",
- "Cable",
- "Housing Society",
- "Education",
- "Hospital & Pathology",
- "Clubs & Associations",
- "Rental",
- "Subscriptions",
- "Municipal Taxes"
- ]
- },
- "billParams": {
- "type": "array",
- "description": "To be used if the Agent wishes to redirect the user to a specific bill page.",
- "items": {
- "$ref": "#/components/schemas/billParameterItem"
- }
- }
- },
- "x-go-name": "EtherealLinkCreateRequest",
- "x-omitempty": true
- },
- "etherealLoginCreateRequest": {
- "required": ["mobileNumber", "orgId", "sessionId"],
- "type": "object",
- "properties": {
- "mobileNumber": {
- "type": "string",
- "example": "mobileNumber"
- },
- "orgId": {
- "type": "string",
- "example": "orgId"
- },
- "refId": {
- "type": "string",
- "example": "refId"
- },
- "sessionId": {
- "type": "string",
- "example": "sessionId"
- }
- },
- "x-go-name": "EtherealLoginCreateRequest",
- "x-omitempty": true
- },
- "couUPIOrderCreateResponse": {
- "required": ["refId", "responseCode", "status", "upiLink"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- },
- "responseCode": {
- "type": "string",
- "example": "000"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- },
- "upiLink": {
- "type": "string",
- "example": "ORDID12345"
- }
- },
- "x-go-name": "CouUPIOrderCreateResponse",
- "x-omitempty": true
- },
- "customerParamsGroupItem": {
- "type": "array",
- "items": {
- "type": "string",
- "example": "Param 1"
- }
- },
- "etherealOrgConfigurationItem": {
- "required": ["configId", "name", "value"],
- "type": "object",
- "properties": {
- "value": {
- "type": "string",
- "example": "#ffa80h"
- },
- "configId": {
- "type": "string",
- "example": "000"
- },
- "name": {
- "type": "string",
- "example": "PRIMARY_COLOUR"
- }
- },
- "x-go-name": "EtherealOrgConfigurationItem",
- "x-omitempty": true
- },
- "mobile": {
- "maxLength": 20,
- "minLength": 6,
- "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
- "type": "string",
- "description": "Mobile number with 6, 10 and 20 digits are valid.",
- "example": "9481773053"
- },
- "txnResponseData": {
- "type": "object",
- "properties": {
- "transactions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/txnLineItem"
- }
- },
- "nextPage": {
- "type": "string",
- "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
- }
- }
- },
- "etherealBulkCreateResponse": {
- "required": ["data", "success", "traceId"],
- "type": "object",
- "properties": {
- "data": {
- "type": "object",
- "properties": {
- "link": {
- "type": "string",
- "x-omitempty": true
- },
- "status": {
- "$ref": "#/components/schemas/status"
- }
- }
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "EtherealBulkCreateResponse",
- "x-omitempty": true
- },
- "agentDetails": {
- "required": ["channel", "id"],
- "type": "object",
- "properties": {
- "mac": {
- "type": "string",
- "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
- "format": "mac",
- "example": "48-4D-7E-CB-DB-6F"
- },
- "terminalId": {
- "type": "string",
- "description": "Mandatory if channel is `ATM`, `AGT`, `KIOSK` and `BSC` . Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "6000011234"
- },
- "geocode": {
- "type": "string",
- "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "19.0139,72.8254"
- },
- "id": {
- "type": "string",
- "description": "The ID of the agent initiating the BBPS transaction.",
- "example": "AX01AI06512391457204"
- },
- "ifsc": {
- "type": "string",
- "description": "Mandatory if channel is `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "ICIC0000152"
- },
- "imei": {
- "type": "string",
- "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
- "example": "123456789012345"
- },
- "ip": {
- "type": "string",
- "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
- "format": "ipv4",
- "example": "124.170.23.24"
- },
- "mobile": {
- "$ref": "#/components/schemas/mobile"
- },
- "app": {
- "type": "string",
- "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
- "example": "SmartPay"
- },
- "channel": {
- "$ref": "#/components/schemas/paymentChannel"
- },
- "os": {
- "type": "string",
- "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
- "example": "iOS",
- "enum": ["iOS", "Android"]
- },
- "postalCode": {
- "pattern": "^[1-9][0-9]{5}$",
- "type": "string",
- "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
- "example": "600001"
- }
- }
- },
- "billData": {
- "required": [
- "billDate",
- "billNumber",
- "billPeriod",
- "customerName",
- "dueDate"
- ],
- "type": "object",
- "properties": {
- "amount": {
- "type": "integer",
- "example": 1000
- },
- "billDate": {
- "type": "string",
- "format": "date",
- "example": "2021-01-02"
- },
- "billNumber": {
- "type": "string",
- "example": "1232332"
- },
- "billPeriod": {
- "type": "string",
- "enum": [
- "ONETIME",
- "DAILY",
- "WEEKLY",
- "BIMONTHLY",
- "MONTHLY",
- "QUARTERLY",
- "HALFYEARLY",
- "YEARLY",
- "ASPRESENTED"
- ]
- },
- "customerName": {
- "type": "string",
- "example": "Manoj Chekuri"
- },
- "dueDate": {
- "type": "string",
- "format": "date",
- "example": "2021-09-24"
- },
- "label": {
- "type": "string",
- "example": "Advance EMI",
- "description": "Label for the bill"
- },
- "minAmount": {
- "type": "integer",
- "example": 1,
- "description": "Minimum amount that can be paid for this bill in paise"
- },
- "maxAmount": {
- "type": "integer",
- "example": 10000,
- "description": "Maximum amount that can be paid for this bill in paise"
- },
- "amountMultiple": {
- "type": "integer",
- "example": 100,
- "description": "Bill payment amount should be multiple of this value in paise"
- },
- "paymentOptions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/paymentOptionItem"
+ }
+ },
+ "securitySchemes": {
+ "Production": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://coudc.setu.co/api/v2/auth/token",
+ "scopes": {
+ "cou:wl_partner": "Required scope"
}
}
- },
- "x-go-name": "BillData"
- },
- "categoryListItem": {
- "type": "object",
- "properties": {
- "billerCount": {
- "type": "integer",
- "example": 10
- },
- "name": {
- "type": "string",
- "example": "Loan Repayment"
- }
- }
- },
- "couRZPRefundCreateResponse": {
- "required": ["refId", "status"],
- "type": "object",
- "properties": {
- "refId": {
- "type": "string",
- "example": "000"
- },
- "status": {
- "type": "string",
- "example": "ORDID12345"
- }
- },
- "x-go-name": "CouRZPRefundCreateResponse",
- "x-omitempty": true
- },
- "couUPIOrderStatusResponse": {
- "required": ["refId", "status"],
- "type": "object",
- "properties": {
- "amount": {
- "type": "string",
- "example": "merchant123@axisbank"
- },
- "refId": {
- "type": "string",
- "example": "000"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- },
- "txnId": {
- "type": "string",
- "example": "ORDID12345"
- }
- },
- "x-go-name": "CouUPIOrderStatusResponse",
- "x-omitempty": true
- },
- "disputeListItem": {
- "type": "object",
- "properties": {
- "biller": {
- "$ref": "#/components/schemas/billerDetails"
- },
- "billerId": {
- "type": "string",
- "description": "The biller ID on BBPS",
- "example": "MAHI00000NATIC"
- },
- "responseCode": {
- "type": "string",
- "example": "ADIT00000NATRA"
- },
- "customerMobileNumber": {
- "$ref": "#/components/schemas/mobile"
- },
- "remarks": {
- "type": "string",
- "example": "ADIT00000NATRA"
- },
- "responseReason": {
- "type": "string",
- "example": "ADIT00000NATRA"
- },
- "transactionId": {
- "type": "string",
- "description": "Setu BillPay Transaction ID.",
- "example": "AX30910192192192192"
- },
- "transaction": {
- "$ref": "#/components/schemas/txnLineItem"
- },
- "assigned": {
- "type": "string",
- "example": "ADIT00000NATRA"
- },
- "complaintId": {
- "type": "string",
- "example": "Loan Repayment"
- },
- "complaintStatus": {
- "$ref": "#/components/schemas/complaintStatus"
- },
- "partnerRefId": {
- "type": "string",
- "example": "AX30910192192192192"
- },
- "refId": {
- "type": "string",
- "example": "Loan Repayment"
- },
- "createdAt": {
- "type": "string",
- "description": "Dispute's creation timestamp",
- "format": "date-time",
- "example": "2020-12-12T13:12:00+05:30"
- },
- "lastModifiedAt": {
- "type": "string",
- "description": "Dispute's last modified timestamp",
- "format": "date-time",
- "example": "2020-12-12T13:12:00+05:30"
- }
- }
- },
- "errorMessage": {
- "required": ["code", "message"],
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "example": "validation-error"
- },
- "message": {
- "type": "string",
- "example": "Input is invalid"
- }
}
},
- "etherealLinkCreateResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "link": {
- "type": "string",
- "example": "billpay.setu.co/12617771219030"
- },
- "sessionId": {
- "type": "string",
- "example": "12617771219030"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- }
- },
- "x-go-name": "EtherealLinkCreateResponse",
- "x-omitempty": true
- },
- "categoriesListResponse": {
- "required": ["success", "traceId"],
- "type": "object",
- "properties": {
- "error": {
- "$ref": "#/components/schemas/errorMessage"
- },
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- },
- "data": {
- "required": ["categories"],
- "type": "object",
- "properties": {
- "categories": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/categoryListItem"
- }
- }
+ "Sandbox": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://sandbox-coudc.setu.co/api/v2/auth/token",
+ "scopes": {
+ "cou:wl_partner": "Required scope"
}
}
}
},
- "couRZPRefundCreateRequest": {
- "required": ["refId"],
- "type": "object",
- "properties": {
- "amount": {
- "type": "integer",
- "example": 100
- },
- "refId": {
- "type": "string",
- "example": "ORDID12345"
- }
- },
- "x-go-name": "CouRZPRefundCreateRequest",
- "x-omitempty": true
- },
- "customerParamSpec": {
- "required": [
- "dataType",
- "maxLength",
- "minLength",
- "optional",
- "paramName",
- "regex",
- "values",
- "visibility"
- ],
- "type": "object",
- "properties": {
- "minLength": {
- "type": "integer",
- "example": 7
- },
- "optional": {
- "type": "boolean",
- "example": false
- },
- "paramName": {
- "type": "string",
- "example": "Loan Account Number"
- },
- "regex": {
- "type": "string",
- "example": "^[a-zA-Z0-9]{7,15}"
- },
- "values": {
- "type": "string",
- "enum": ["CHOICE1", "CHOICE2", "CHOICE3"]
- },
- "visibility": {
- "type": "boolean",
- "example": true
- },
- "dataType": {
- "type": "string",
- "example": "ALPHANUMERIC"
- },
- "maxLength": {
- "type": "integer",
- "example": 15
- }
- }
- },
- "couAgentBillPaymentResponse": {
- "required": ["data", "success", "traceId"],
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean",
- "example": true
- },
- "traceId": {
- "type": "string",
- "example": "C3SFG0O6N88R6UI7EQ"
- },
- "data": {
- "$ref": "#/components/schemas/billPaymentResponseData"
- }
- },
- "x-go-name": "CouAgentBillPaymentResponse",
- "x-omitempty": true
- },
- "couAgentDisputeRequest": {
- "required": ["description", "disputeType", "txnReferenceId"],
- "type": "object",
- "properties": {
- "description": {
- "type": "string",
- "example": "Test Transaction Based Complaint"
- },
- "disputeType": {
- "type": "string",
- "enum": [
- "account-not-updated",
- "double-payment",
- "paid-to-wrong-account",
- "others",
- "amount-deducted-biller-credited-no-transaction-id",
- "amount-deducted-biller-not-credited-no-transaction-id",
- "amount-deducted-multiple-times"
- ]
- },
- "txnReferenceId": {
- "type": "string",
- "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
- }
- },
- "x-omitempty": true,
- "x-go-name": "CouAgentDisputeRequest"
- },
- "couCustomPaymentWebhook": {
- "required": [
- "amount",
- "orderId",
- "paymentDateTime",
- "paymentMode",
- "paymentStatus",
- "transactionId"
- ],
- "type": "object",
- "properties": {
- "paymentStatus": {
- "type": "string",
- "description": "Status of the payment collection",
- "example": "SUCCESS",
- "enum": ["SUCCESS", "FAILURE"]
- },
- "transactionId": {
- "type": "string",
- "description": "Unique transaction ID created by the Agent for this payment collection. Defined by Agent - minimum 10 chars and maximum 36 chars",
- "example": "ORDID12345"
- },
- "amount": {
- "type": "string",
- "description": "Amount collected in rupees",
- "example": "100"
- },
- "orderId": {
- "type": "string",
- "description": "Unique transaction ID created by Setu when initiating the payment request.",
- "example": "COUWLje9V7wWs9N3w"
- },
- "paymentDateTime": {
- "type": "string",
- "description": "Timestamp of the payment in UTC (YYYY-MM-DD HH:MM:SS)",
- "example": "2023-08-01 17:33:32"
- },
- "paymentMode": {
- "type": "string",
- "description": "Mode of payment collection",
- "example": "UPI",
- "enum": [
- "CASH",
- "INTERNET BANKING",
- "CREDIT CARD",
- "DEBIT CARD",
- "PREPAID CARD",
- "IMPS",
- "NEFT",
- "UPI",
- "WALLET",
- "AEPS",
- "ACCOUNT TRANSFER",
- "Bharat QR",
- "USSD"
- ]
- }
- },
- "x-go-name": "CouCustomPaymentWebhook",
- "x-omitempty": true
- },
- "couRZPOrderStatusResponse": {
- "required": ["status"],
- "type": "object",
- "properties": {
- "paymentId": {
- "type": "string",
- "example": "merchant123@axisbank"
- },
- "paymentMode": {
- "type": "string",
- "example": "merchant123@axisbank"
- },
- "status": {
- "type": "string",
- "example": "SUCCESS"
- },
- "amount": {
- "type": "string",
- "example": "merchant123@axisbank"
- }
- },
- "x-go-name": "CouRZPOrderStatusResponse",
- "x-omitempty": true
- },
- "couUPIRefundStatusRequest": {
- "required": ["merchChanId", "merchId", "refId"],
- "type": "object",
- "properties": {
- "merchChanId": {
- "type": "string",
- "example": "SUCCESS"
- },
- "merchId": {
- "type": "string",
- "example": "000"
- },
- "refId": {
- "type": "string",
- "example": "000"
- }
- },
- "x-go-name": "CouUPIRefundStatusRequest",
- "x-omitempty": true
- },
- "etherealConfigurationCreateRequest": {
- "required": ["configs", "orgId"],
- "type": "object",
- "properties": {
- "configs": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/etherealConfigurationItem"
+ "QA": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://qa-coudc.setu.co/api/v2/auth/token",
+ "scopes": {
+ "cou:wl_partner": "Required scope"
}
- },
- "orgId": {
- "type": "string",
- "example": "122337203685477"
- }
- },
- "x-go-name": "EtherealConfigurationCreateRequest",
- "x-omitempty": true
- },
- "healthResponseParam": {
- "required": ["environment", "server", "version"],
- "type": "object",
- "properties": {
- "version": {
- "type": "string",
- "example": "db42717a829da9d3061e4f409f3c0ee9935b72a5"
- },
- "environment": {
- "type": "string",
- "example": "PROD"
- },
- "server": {
- "type": "string",
- "example": "mistborn"
}
- },
- "x-go-name": "HealthResponseParam",
- "x-omitempty": true
+ }
}
}
},
diff --git a/api-references/payments/billpay_v1/api-integration.json b/api-references/payments/billpay_v1/api-integration.json
new file mode 100644
index 00000000..ba21624a
--- /dev/null
+++ b/api-references/payments/billpay_v1/api-integration.json
@@ -0,0 +1,6091 @@
+{
+ "openapi": "3.0.1",
+ "info": {
+ "title": "Setu BBPS BillPay",
+ "version": "v1",
+ "description": "Enable easy BBPS bill payments in your App"
+ },
+ "servers": [
+ {
+ "url": "https://coudc.setu.co",
+ "description": "Production server"
+ },
+ {
+ "url": "https://sandbox-coudc.setu.co",
+ "description": "Sandbox server"
+ },
+ {
+ "url": "https://qa-coudc.setu.co",
+ "description": "QA server"
+ }
+ ],
+ "paths": {
+ "/v1/auth/token": {
+ "post": {
+ "tags": [
+ "Token API"
+ ],
+ "description": "Fetch token to be used to authorize all Setu APIs",
+ "operationId": "fetchToken",
+ "requestBody": {
+ "description": "The API key pair",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "clientID": {
+ "type": "string",
+ "description": "clientID from the API key pair"
+ },
+ "secret": {
+ "type": "string",
+ "description": "secret from the API key pair"
+ }
+ },
+ "description": "Fetch Token API payload"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "Auth token response",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "expiresIn",
+ "token"
+ ],
+ "type": "object",
+ "properties": {
+ "expiresIn": {
+ "type": "integer",
+ "description": "Token expiry duration in seconds"
+ },
+ "token": {
+ "type": "string",
+ "description": "Token to be used in subsequent requests"
+ }
+ }
+ },
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-codegen-request-body-name": "fetchTokenPayload"
+ }
+ },
+ "/v1/bbps/bills/fetch/request": {
+ "post": {
+ "tags": [
+ "Fetch"
+ ],
+ "description": "Bill fetch request API",
+ "operationId": "FetchRequest",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "agent",
+ "biller"
+ ],
+ "type": "object",
+ "properties": {
+ "biller": {
+ "required": [
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ }
+ },
+ "x-go-gen-location": "models",
+ "x-go-name": "BillerDetails"
+ },
+ "agent": {
+ "required": [
+ "channel",
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "ipv4",
+ "example": "124.170.23.24"
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "os": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "iOS",
+ "enum": [
+ "iOS",
+ "Android"
+ ]
+ },
+ "postalCode": {
+ "pattern": "^[1-9][0-9]{5}$",
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "600001"
+ },
+ "id": {
+ "type": "string",
+ "description": "The ID of the agent initiating the BBPS transaction.",
+ "example": "AX01AI06512391457204"
+ },
+ "ifsc": {
+ "type": "string",
+ "description": "Mandatory if channel is `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "ICIC0000152"
+ },
+ "imei": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "123456789012345"
+ },
+ "mac": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "mac",
+ "example": "48-4D-7E-CB-DB-6F"
+ },
+ "terminalId": {
+ "type": "string",
+ "description": "Mandatory if channel is `ATM`, `AGT`, `KIOSK` and `BSC` . Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "6000011234"
+ },
+ "app": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "SmartPay"
+ },
+ "channel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "geocode": {
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "19.0139,72.8254"
+ }
+ }
+ }
+ },
+ "x-omitempty": true
+ },
+ {
+ "required": [
+ "customer"
+ ],
+ "type": "object",
+ "properties": {
+ "customer": {
+ "required": [
+ "billParameters",
+ "mobile"
+ ],
+ "type": "object",
+ "properties": {
+ "billParameters": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentBillFetchRequest"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ],
+ "x-codegen-request-body-name": "CouAgentBillFetchRequest"
+ }
+ },
+ "/v1/bbps/bills/fetch/response": {
+ "post": {
+ "tags": [
+ "Fetch"
+ ],
+ "description": "Bill fetch response API",
+ "operationId": "FetchResponse",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
+ }
+ },
+ "x-go-name": "RefIdBasedRequest",
+ "x-omitempty": true
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ },
+ {
+ "required": [
+ "data"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "allOf": [
+ {
+ "required": [
+ "refId",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Failure"
+ ]
+ },
+ "additionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "example": "Line item 1"
+ },
+ "value": {
+ "type": "string",
+ "example": "Value 1"
+ }
+ }
+ },
+ "x-go-name": "BillAdditionalInfo"
+ },
+ "billerRefId": {
+ "type": "string",
+ "example": "7f16a032e514"
+ },
+ "billerResponseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "failureReason": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "FUND_TRANSFER",
+ "BBPS",
+ "APP"
+ ]
+ },
+ "code": {
+ "type": "string",
+ "example": "ERR004"
+ },
+ "message": {
+ "type": "string",
+ "example": "customer not found"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "billerSelectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "bills": {
+ "type": "array",
+ "description": "Multiple bills in case of response from B2B biller",
+ "items": {
+ "required": [
+ "billDate",
+ "billNumber",
+ "billPeriod",
+ "customerName",
+ "dueDate"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "Bill payment amount should be multiple of this value in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-01-02"
+ },
+ "dueDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-09-24"
+ },
+ "maxAmount": {
+ "type": "integer",
+ "description": "Maximum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "1232332"
+ },
+ "billPeriod": {
+ "type": "string",
+ "example": "ONETIME|DAILY|WEEKLY|BIMONTHLY|MONTHLY|QUARTERLY|HALFYEARLY|YEARLY|ASPRESENTED"
+ },
+ "customerName": {
+ "type": "string",
+ "example": "Manoj Chekuri"
+ },
+ "label": {
+ "type": "string",
+ "nullable": true,
+ "example": "Advance EMI",
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "description": "Minimum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "paymentOptions": {
+ "type": "array",
+ "nullable": true,
+ "items": {
+ "required": [
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "maxAmount": {
+ "type": "integer",
+ "description": "The maximum amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The display name of the option.",
+ "example": "2 Months EMI Amount"
+ },
+ "amount": {
+ "type": "integer",
+ "description": "The amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "The payment amount should be a multiple of this value in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "PaymentOption"
+ },
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "BillData"
+ },
+ "x-omitempty": true
+ },
+ "isCached": {
+ "type": "boolean",
+ "nullable": true,
+ "example": false
+ },
+ "lastPaidDate": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2020-12-12T13:12:00+05:30"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "bill": {
+ "required": [
+ "billDate",
+ "billNumber",
+ "billPeriod",
+ "customerName",
+ "dueDate"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "Bill payment amount should be multiple of this value in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-01-02"
+ },
+ "dueDate": {
+ "type": "string",
+ "format": "date",
+ "example": "2021-09-24"
+ },
+ "maxAmount": {
+ "type": "integer",
+ "description": "Maximum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "1232332"
+ },
+ "billPeriod": {
+ "type": "string",
+ "example": "ONETIME|DAILY|WEEKLY|BIMONTHLY|MONTHLY|QUARTERLY|HALFYEARLY|YEARLY|ASPRESENTED"
+ },
+ "customerName": {
+ "type": "string",
+ "example": "Manoj Chekuri"
+ },
+ "label": {
+ "type": "string",
+ "nullable": true,
+ "example": "Advance EMI",
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "description": "Minimum amount that can be paid for this bill in paise",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "paymentOptions": {
+ "type": "array",
+ "nullable": true,
+ "items": {
+ "required": [
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "maxAmount": {
+ "type": "integer",
+ "description": "The maximum amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "minAmount": {
+ "type": "integer",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The display name of the option.",
+ "example": "2 Months EMI Amount"
+ },
+ "amount": {
+ "type": "integer",
+ "description": "The amount that can be paid for this option in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ },
+ "amountMultiple": {
+ "type": "integer",
+ "description": "The payment amount should be a multiple of this value in paise.",
+ "nullable": true,
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "PaymentOption"
+ },
+ "x-omitempty": true
+ }
+ },
+ "x-go-name": "BillData"
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "paymentLimits": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ },
+ "x-omitempty": true
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentBillFetchResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ],
+ "x-codegen-request-body-name": "CouAgentAsyncRequest"
+ }
+ },
+ "/v1/bbps/bills/payment/request": {
+ "post": {
+ "tags": [
+ "Pay"
+ ],
+ "description": "Bill payment request API",
+ "operationId": "PaymentRequest",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "paymentDetails"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "agent": {
+ "required": [
+ "channel",
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "ipv4",
+ "example": "124.170.23.24"
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "os": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "iOS",
+ "enum": [
+ "iOS",
+ "Android"
+ ]
+ },
+ "postalCode": {
+ "pattern": "^[1-9][0-9]{5}$",
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "600001"
+ },
+ "id": {
+ "type": "string",
+ "description": "The ID of the agent initiating the BBPS transaction.",
+ "example": "AX01AI06512391457204"
+ },
+ "ifsc": {
+ "type": "string",
+ "description": "Mandatory if channel is `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "ICIC0000152"
+ },
+ "imei": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "123456789012345"
+ },
+ "mac": {
+ "type": "string",
+ "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.",
+ "format": "mac",
+ "example": "48-4D-7E-CB-DB-6F"
+ },
+ "terminalId": {
+ "type": "string",
+ "description": "Mandatory if channel is `ATM`, `AGT`, `KIOSK` and `BSC` . Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "6000011234"
+ },
+ "app": {
+ "type": "string",
+ "description": "Mandatory if channel is `MOB`, `MOBB`. Not required for others.",
+ "example": "SmartPay"
+ },
+ "channel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "geocode": {
+ "type": "string",
+ "description": "Mandatory if channel is `AGT`, `BSC` and `BNKBRNCH`. Not required for others. This has to match the data submitted to NPCI for this agent ID\n",
+ "example": "19.0139,72.8254"
+ }
+ }
+ },
+ "biller": {
+ "required": [
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ }
+ },
+ "x-go-gen-location": "models",
+ "x-go-name": "BillerDetails"
+ },
+ "bills": {
+ "uniqueItems": true,
+ "type": "array",
+ "nullable": true,
+ "example": "Selection on bills in case of list billers",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ },
+ "x-omitempty": true
+ },
+ "paymentDetails": {
+ "required": [
+ "amount",
+ "mode",
+ "paymentRefId",
+ "timestamp"
+ ],
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "COUcustConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "currency": {
+ "type": "integer",
+ "nullable": true
+ },
+ "custConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "mode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "paymentRefId": {
+ "maxLength": 35,
+ "minLength": 6,
+ "type": "string",
+ "example": "BD019181220291"
+ },
+ "selectedPaymentOptions": {
+ "type": "array",
+ "description": "List of selected payment options",
+ "nullable": true,
+ "items": {
+ "required": [
+ "amount",
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "The amount to be paid for the selected payment option."
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the payment option as returned in bill fetch response.",
+ "example": "Early Payment Amount"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-nullable": true
+ }
+ }
+ }
+ },
+ "x-omitempty": true
+ },
+ {
+ "type": "object",
+ "properties": {
+ "customer": {
+ "required": [
+ "billParameters",
+ "mobile"
+ ],
+ "type": "object",
+ "properties": {
+ "billParameters": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "mobile": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentBillPaymentRequestV1"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ],
+ "x-codegen-request-body-name": "CouAgentBillPaymentRequestV1"
+ }
+ },
+ "/v1/bbps/bills/payment/response": {
+ "post": {
+ "tags": [
+ "Pay"
+ ],
+ "description": "Bill payment response API",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
+ }
+ },
+ "x-go-name": "RefIdBasedRequest",
+ "x-omitempty": true
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "billerRefId": {
+ "type": "string",
+ "example": "ZA6291A177"
+ },
+ "failureReason": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "FUND_TRANSFER",
+ "BBPS",
+ "APP"
+ ]
+ },
+ "code": {
+ "type": "string",
+ "example": "ERR004"
+ },
+ "message": {
+ "type": "string",
+ "example": "customer not found"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Failure"
+ ]
+ },
+ "additionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "example": "Line item 1"
+ },
+ "value": {
+ "type": "string",
+ "example": "Value 1"
+ }
+ }
+ },
+ "x-go-name": "BillAdditionalInfo"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "paymentDetails": {
+ "required": [
+ "amount",
+ "mode",
+ "paymentRefId",
+ "timestamp"
+ ],
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "COUcustConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "currency": {
+ "type": "integer",
+ "nullable": true
+ },
+ "custConvFee": {
+ "type": "integer",
+ "nullable": true
+ },
+ "mode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "paymentRefId": {
+ "maxLength": 35,
+ "minLength": 6,
+ "type": "string",
+ "example": "BD019181220291"
+ },
+ "selectedPaymentOptions": {
+ "type": "array",
+ "description": "List of selected payment options",
+ "nullable": true,
+ "items": {
+ "required": [
+ "amount",
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "The amount to be paid for the selected payment option."
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the payment option as returned in bill fetch response.",
+ "example": "Early Payment Amount"
+ }
+ }
+ },
+ "x-omitempty": true,
+ "x-nullable": true
+ }
+ }
+ },
+ "transactionId": {
+ "type": "string",
+ "example": "AX30910192192192192"
+ },
+ "bills": {
+ "uniqueItems": true,
+ "type": "array",
+ "nullable": true,
+ "example": "The bills paid in case of list billers",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ },
+ "x-omitempty": true
+ },
+ "lastPaidDate": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2020-12-12T13:12:00+05:30"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ },
+ "x-omitempty": true,
+ "x-go-name": "CouAgentBillPaymentResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ],
+ "x-codegen-request-body-name": "CouAgentAsyncRequest"
+ }
+ },
+ "/v1/bbps/bills/complaint/request": {
+ "post": {
+ "tags": [
+ "Dispute"
+ ],
+ "description": "Raise dispute request API",
+ "operationId": "DisputeRequest",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "description",
+ "disputeType"
+ ],
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string",
+ "example": "Test Transaction Based Complaint"
+ },
+ "disputeType": {
+ "type": "string",
+ "description": "The type of NPCI dispute",
+ "example": "account-not-updated",
+ "enum": [
+ "account-not-updated",
+ "double-payment",
+ "paid-to-wrong-account",
+ "others",
+ "amount-deducted-biller-credited-no-transaction-id",
+ "amount-deducted-biller-not-credited-no-transaction-id",
+ "amount-deducted-multiple-times"
+ ]
+ }
+ }
+ },
+ {
+ "required": [
+ "txnReferenceId"
+ ],
+ "type": "object",
+ "properties": {
+ "txnReferenceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ }
+ ],
+ "x-go-name": "CouAgentDisputeRequest"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "data",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "duplicate": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10461713"
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ],
+ "x-codegen-request-body-name": "CouAgentDisputeRequest"
+ }
+ },
+ "/v1/bbps/bills/complaint/response": {
+ "post": {
+ "tags": [
+ "Dispute"
+ ],
+ "description": "Raise dispute response API",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "refId"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
+ }
+ },
+ "x-go-name": "RefIdBasedRequest",
+ "x-omitempty": true
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ },
+ "data": {
+ "required": [
+ "assignedTo",
+ "disputeId",
+ "refId",
+ "remarks",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "remarks": {
+ "type": "string",
+ "example": "Resolved in favour of Biller"
+ },
+ "status": {
+ "type": "string",
+ "description": "BBPS Complaint status",
+ "example": "ASSIGNED",
+ "enum": [
+ "INITIALIZED",
+ "ASSIGNED",
+ "RE_ASSIGNED",
+ "ASSIGNED_TO_BOU",
+ "ASSIGNED_TO_COU",
+ "ASSIGNED_TO_OU",
+ "ESCALATED",
+ "RESOLVED",
+ "UNRESOLVED"
+ ]
+ },
+ "assignedTo": {
+ "type": "string",
+ "example": "ICICI BOU"
+ },
+ "disputeId": {
+ "type": "string",
+ "example": "OP0121046567755"
+ }
+ },
+ "x-go-name": "DisputeResponseData"
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ }
+ },
+ "x-go-name": "CouAgentDisputeResponse",
+ "x-omitempty": true
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ],
+ "x-codegen-request-body-name": "CouAgentAsyncRequest"
+ }
+ },
+ "/v1/bbps/transactions": {
+ "get": {
+ "tags": [
+ "List"
+ ],
+ "description": "Returns the list of transactions.",
+ "operationId": "getTxns",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "startDate",
+ "in": "query",
+ "description": "start date of the timestamp provided by the partner while making the request.",
+ "schema": {
+ "type": "string",
+ "format": "date"
+ }
+ },
+ {
+ "name": "endDate",
+ "in": "query",
+ "description": "end date of the timestamp provided by the partner while making the request.",
+ "schema": {
+ "type": "string",
+ "format": "date"
+ }
+ },
+ {
+ "name": "billerId",
+ "in": "query",
+ "description": "Transaction BillerId",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "ids",
+ "in": "query",
+ "description": "Transaction Reference Ids",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "categories",
+ "in": "query",
+ "description": "Biller Category",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "billerFetchApiType",
+ "in": "query",
+ "description": "Biller Fetch Api Type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ }
+ },
+ {
+ "name": "months",
+ "in": "query",
+ "description": "Month ranges. A full-date notation as defined by 'RFC 3339, section 5.6' has to be provided but only month and year will be considered.",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "date",
+ "example": "2022-07-19"
+ }
+ }
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "description": "Transaction Status",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Error"
+ ]
+ }
+ }
+ },
+ {
+ "name": "mobile",
+ "in": "query",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "schema": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string"
+ }
+ },
+ {
+ "name": "expand",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "BILLER",
+ "enum": [
+ "BILLER"
+ ]
+ }
+ }
+ },
+ {
+ "name": "refundStatus",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "Required",
+ "Requested",
+ "Processed"
+ ]
+ }
+ }
+ ],
+ "responses": {
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "200": {
+ "description": "List of Txns",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "nextPage": {
+ "type": "string",
+ "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
+ },
+ "transactions": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "bills": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp provided by partner while making payment request.",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "transactionId": {
+ "type": "string",
+ "description": "Setu BillPay Transaction ID.",
+ "example": "AX30910192192192192"
+ },
+ "amount": {
+ "type": "integer"
+ },
+ "biller": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "plans": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "categoryType",
+ "description",
+ "id",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Plan ID",
+ "example": "1.0"
+ },
+ "categorySubType": {
+ "type": "object",
+ "properties": {},
+ "description": "Plan sub category as defined by the Biller.",
+ "example": {
+ "subType": "1 Month"
+ },
+ "x-omitempty": true
+ },
+ "categoryType": {
+ "type": "string",
+ "description": "Plan category as defined by the Biller.",
+ "example": "VIP"
+ },
+ "description": {
+ "type": "string",
+ "description": "Plan description as defined by the Biller.",
+ "example": "Unlimited Live Sports"
+ },
+ "effectiveFrom": {
+ "type": "string",
+ "description": "Effective from date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2017-07-21",
+ "x-omitempty": false
+ },
+ "additionalInfo": {
+ "minItems": 1,
+ "type": "array",
+ "description": "Plan Additional information details provided by the Biller.",
+ "example": [
+ {
+ "paramName": "Mobile Number",
+ "paramValue": "Text"
+ }
+ ],
+ "items": {
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Plan Additional information parameter name."
+ },
+ "paramValue": {
+ "type": "string",
+ "example": "Plan Additional information parameter value."
+ }
+ },
+ "example": {
+ "paramValue": "Text",
+ "paramName": "Mobile Number"
+ },
+ "x-go-name": "PlanAdditionalInfoItem"
+ },
+ "x-omitempty": true
+ },
+ "amount": {
+ "type": "string",
+ "example": "22.0"
+ },
+ "effectiveTo": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2020-08-21",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "example": "ACTIVE",
+ "enum": [
+ "ACTIVE",
+ "DEACTIVATED"
+ ]
+ }
+ }
+ }
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "customerParams": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Error"
+ ]
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "partnerRefId": {
+ "type": "string",
+ "description": "Agent's payment reference ID"
+ },
+ "refundStatus": {
+ "type": "string",
+ "example": "Required",
+ "enum": [
+ "Required",
+ "Requested",
+ "Processed"
+ ]
+ },
+ "customerMobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ]
+ }
+ },
+ "/v1/bbps/disputes": {
+ "get": {
+ "tags": [
+ "List"
+ ],
+ "description": "Returns the list of disputes.",
+ "operationId": "getDisputes",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "INITIALIZED",
+ "ASSIGNED",
+ "RE_ASSIGNED",
+ "ASSIGNED_TO_BOU",
+ "ASSIGNED_TO_COU",
+ "ASSIGNED_TO_OU",
+ "ESCALATED",
+ "RESOLVED",
+ "UNRESOLVED"
+ ]
+ }
+ }
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "description": "Limit",
+ "schema": {
+ "maximum": 1000.0,
+ "minimum": 1.0,
+ "type": "integer"
+ }
+ },
+ {
+ "name": "categories",
+ "in": "query",
+ "description": "Biller Category",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "months",
+ "in": "query",
+ "description": "Month ranges. A full-date notation as defined by 'RFC 3339, section 5.6' has to be provided but only month and year will be considered.",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "date",
+ "example": "2022-07-19"
+ }
+ }
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "mobile",
+ "in": "query",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "schema": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string"
+ }
+ },
+ {
+ "name": "transactionIds",
+ "in": "query",
+ "description": "Transaction IDs",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "partnerRefIds",
+ "in": "query",
+ "description": "Partner provided transaction Ids",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "billerIds",
+ "in": "query",
+ "description": "The biller ID on BBPS",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "expand",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "uniqueItems": true,
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "BILLER",
+ "enum": [
+ "BILLER",
+ "TRANSACTION"
+ ]
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of disputes",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer"
+ },
+ "disputes": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "createdAt": {
+ "type": "string",
+ "description": "Dispute's creation timestamp",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "refId": {
+ "type": "string",
+ "example": "Loan Repayment"
+ },
+ "responseCode": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "transactionId": {
+ "type": "string",
+ "description": "Setu BillPay Transaction ID.",
+ "example": "AX30910192192192192"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "complaintStatus": {
+ "type": "string",
+ "description": "BBPS Complaint status",
+ "example": "ASSIGNED",
+ "enum": [
+ "INITIALIZED",
+ "ASSIGNED",
+ "RE_ASSIGNED",
+ "ASSIGNED_TO_BOU",
+ "ASSIGNED_TO_COU",
+ "ASSIGNED_TO_OU",
+ "ESCALATED",
+ "RESOLVED",
+ "UNRESOLVED"
+ ]
+ },
+ "complaintId": {
+ "type": "string",
+ "example": "Loan Repayment"
+ },
+ "lastModifiedAt": {
+ "type": "string",
+ "description": "Dispute's last modified timestamp",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "remarks": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "responseReason": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "assigned": {
+ "type": "string",
+ "example": "ADIT00000NATRA"
+ },
+ "biller": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "plans": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "categoryType",
+ "description",
+ "id",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Plan ID",
+ "example": "1.0"
+ },
+ "categorySubType": {
+ "type": "object",
+ "properties": {},
+ "description": "Plan sub category as defined by the Biller.",
+ "example": {
+ "subType": "1 Month"
+ },
+ "x-omitempty": true
+ },
+ "categoryType": {
+ "type": "string",
+ "description": "Plan category as defined by the Biller.",
+ "example": "VIP"
+ },
+ "description": {
+ "type": "string",
+ "description": "Plan description as defined by the Biller.",
+ "example": "Unlimited Live Sports"
+ },
+ "effectiveFrom": {
+ "type": "string",
+ "description": "Effective from date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2017-07-21",
+ "x-omitempty": false
+ },
+ "additionalInfo": {
+ "minItems": 1,
+ "type": "array",
+ "description": "Plan Additional information details provided by the Biller.",
+ "example": [
+ {
+ "paramName": "Mobile Number",
+ "paramValue": "Text"
+ }
+ ],
+ "items": {
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Plan Additional information parameter name."
+ },
+ "paramValue": {
+ "type": "string",
+ "example": "Plan Additional information parameter value."
+ }
+ },
+ "example": {
+ "paramValue": "Text",
+ "paramName": "Mobile Number"
+ },
+ "x-go-name": "PlanAdditionalInfoItem"
+ },
+ "x-omitempty": true
+ },
+ "amount": {
+ "type": "string",
+ "example": "22.0"
+ },
+ "effectiveTo": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2020-08-21",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "example": "ACTIVE",
+ "enum": [
+ "ACTIVE",
+ "DEACTIVATED"
+ ]
+ }
+ }
+ }
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "customerMobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "partnerRefId": {
+ "type": "string",
+ "description": "Agent's payment reference ID"
+ },
+ "transaction": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "bills": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "billNumber"
+ ],
+ "type": "object",
+ "properties": {
+ "amount": {
+ "minimum": 1,
+ "type": "integer",
+ "description": "Amount in Paise"
+ },
+ "billNumber": {
+ "type": "string",
+ "example": "B1234567"
+ }
+ },
+ "x-omitempty": true
+ }
+ },
+ "refId": {
+ "type": "string",
+ "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp provided by partner while making payment request.",
+ "format": "date-time",
+ "example": "2020-12-12T13:12:00+05:30"
+ },
+ "transactionId": {
+ "type": "string",
+ "description": "Setu BillPay Transaction ID.",
+ "example": "AX30910192192192192"
+ },
+ "amount": {
+ "type": "integer"
+ },
+ "biller": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "plans": {
+ "type": "array",
+ "items": {
+ "required": [
+ "amount",
+ "categoryType",
+ "description",
+ "id",
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Plan ID",
+ "example": "1.0"
+ },
+ "categorySubType": {
+ "type": "object",
+ "properties": {},
+ "description": "Plan sub category as defined by the Biller.",
+ "example": {
+ "subType": "1 Month"
+ },
+ "x-omitempty": true
+ },
+ "categoryType": {
+ "type": "string",
+ "description": "Plan category as defined by the Biller.",
+ "example": "VIP"
+ },
+ "description": {
+ "type": "string",
+ "description": "Plan description as defined by the Biller.",
+ "example": "Unlimited Live Sports"
+ },
+ "effectiveFrom": {
+ "type": "string",
+ "description": "Effective from date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2017-07-21",
+ "x-omitempty": false
+ },
+ "additionalInfo": {
+ "minItems": 1,
+ "type": "array",
+ "description": "Plan Additional information details provided by the Biller.",
+ "example": [
+ {
+ "paramName": "Mobile Number",
+ "paramValue": "Text"
+ }
+ ],
+ "items": {
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Plan Additional information parameter name."
+ },
+ "paramValue": {
+ "type": "string",
+ "example": "Plan Additional information parameter value."
+ }
+ },
+ "example": {
+ "paramValue": "Text",
+ "paramName": "Mobile Number"
+ },
+ "x-go-name": "PlanAdditionalInfoItem"
+ },
+ "x-omitempty": true
+ },
+ "amount": {
+ "type": "string",
+ "example": "22.0"
+ },
+ "effectiveTo": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "format": "date",
+ "nullable": true,
+ "example": "2020-08-21",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "string",
+ "description": "Effective to date of corresponding Plan.",
+ "example": "ACTIVE",
+ "enum": [
+ "ACTIVE",
+ "DEACTIVATED"
+ ]
+ }
+ }
+ }
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ },
+ "billerId": {
+ "type": "string",
+ "description": "The biller ID on BBPS",
+ "example": "MAHI00000NATIC"
+ },
+ "customerParams": {
+ "type": "array",
+ "description": "The bill params for fetching the bill",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "status": {
+ "type": "string",
+ "example": "Success",
+ "enum": [
+ "Processing",
+ "Success",
+ "Error"
+ ]
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "partnerRefId": {
+ "type": "string",
+ "description": "Agent's payment reference ID"
+ },
+ "refundStatus": {
+ "type": "string",
+ "example": "Required",
+ "enum": [
+ "Required",
+ "Requested",
+ "Processed"
+ ]
+ },
+ "customerMobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ },
+ "nextPage": {
+ "type": "string",
+ "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ]
+ }
+ },
+ "/v1/bbps/categories": {
+ "get": {
+ "tags": [
+ "List"
+ ],
+ "description": "Returns the list of categories.",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of categories",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ },
+ "data": {
+ "required": [
+ "categories"
+ ],
+ "type": "object",
+ "properties": {
+ "categories": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "billerCount": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string",
+ "example": "Loan Repayment"
+ }
+ }
+ }
+ }
+ }
+ },
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ]
+ }
+ },
+ "/v1/bbps/billers": {
+ "get": {
+ "tags": [
+ "List"
+ ],
+ "description": "Returns the list of billers.",
+ "operationId": "getBillers",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "categoryName",
+ "in": "query",
+ "style": "form",
+ "explode": true,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "ids",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "description": "Limit",
+ "schema": {
+ "maximum": 1000.0,
+ "minimum": 1.0,
+ "type": "integer"
+ }
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "pincode",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "city",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "country",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "coverage",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "tags",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "paymentChannel",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ }
+ }
+ },
+ {
+ "name": "paymentMode",
+ "in": "query",
+ "style": "form",
+ "explode": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ }
+ }
+ },
+ {
+ "name": "updatedSince",
+ "in": "query",
+ "description": "Used to fetch billers updated since the given date-time in IST",
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "List of billers",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "data": {
+ "required": [
+ "billers"
+ ],
+ "type": "object",
+ "properties": {
+ "billers": {
+ "type": "array",
+ "items": {
+ "required": [
+ "categoryName",
+ "customerParams",
+ "exactness",
+ "fetchApiType",
+ "id",
+ "name",
+ "payWithoutFetchAllowed",
+ "paymentChannels",
+ "paymentModes",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ },
+ "customerParamsGroups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "example": "Param 1"
+ }
+ }
+ },
+ "payWithoutFetchAllowed": {
+ "type": "boolean",
+ "example": true
+ },
+ "billerAdditionalInfo": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "billerAdditionalInfoPayment": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "optional",
+ "paramName"
+ ],
+ "type": "object",
+ "properties": {
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC",
+ "enum": [
+ "ALPHANUMERIC",
+ "NUMERIC"
+ ]
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ },
+ "paramName": {
+ "type": "string",
+ "example": "Package Duration"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string",
+ "example": "Aditya Birla Sun Life Insurance"
+ },
+ "paymentModes": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentMode",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "Internet Banking",
+ "enum": [
+ "Internet Banking",
+ "Debit Card",
+ "Credit Card",
+ "Prepaid Card",
+ "IMPS",
+ "Cash",
+ "UPI",
+ "Wallet",
+ "NEFT",
+ "AEPS",
+ "Account Transfer",
+ "Bharat QR",
+ "USSD"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "subCategoryName": {
+ "type": "string",
+ "example": "DAIRY"
+ },
+ "bbpsUpdateTimestamp": {
+ "type": "string",
+ "description": "Last updated date-time of the Biller accurate to the nearest day.",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": true
+ },
+ "city": {
+ "type": "string",
+ "example": "Hyderabad"
+ },
+ "modifiedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "selectionType": {
+ "type": "string",
+ "description": "Defined only for billers with response type as LIST. SINGLE: User can pay only one of the bills in bill fetch response. MULTIPLE: User can pay any combination of bills in bill fetch response. ALL: User has to pay all the bills in bill fetch response.",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "MULTIPLE",
+ "ALL"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "country": {
+ "type": "string",
+ "example": "IND"
+ },
+ "id": {
+ "type": "string",
+ "example": "ADIT00000NAT0T"
+ },
+ "pincode": {
+ "type": "string",
+ "example": "pincode"
+ },
+ "customerParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "dataType",
+ "maxLength",
+ "minLength",
+ "optional",
+ "paramName",
+ "regex",
+ "values",
+ "visibility"
+ ],
+ "type": "object",
+ "properties": {
+ "paramName": {
+ "type": "string",
+ "example": "Loan Account Number"
+ },
+ "regex": {
+ "type": "string",
+ "example": "^[a-zA-Z0-9]{7,15}"
+ },
+ "values": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "boolean",
+ "example": true
+ },
+ "dataType": {
+ "type": "string",
+ "example": "ALPHANUMERIC"
+ },
+ "maxLength": {
+ "type": "integer"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "optional": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "string",
+ "example": "tags"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "loan-repayment"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true,
+ "example": "2021-11-12T13:37:04.572+05:30",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string",
+ "example": "TEL"
+ },
+ "responseType": {
+ "type": "string",
+ "nullable": true,
+ "example": "SINGLE",
+ "enum": [
+ "SINGLE",
+ "LIST",
+ "SELECTIVE"
+ ],
+ "x-nullable": true,
+ "x-omitempty": false
+ },
+ "exactness": {
+ "type": "string",
+ "description": "Biller exactness",
+ "example": "Exact",
+ "enum": [
+ "Exact",
+ "Exact and above",
+ "Exact and below",
+ "Any",
+ "RANGE"
+ ]
+ },
+ "fetchApiType": {
+ "type": "string",
+ "example": "BILL_FETCH",
+ "enum": [
+ "BILL_FETCH",
+ "BILL_VALIDATE",
+ "BILL_DIRECT"
+ ]
+ },
+ "logo": {
+ "type": "string",
+ "example": "logo"
+ },
+ "paymentChannels": {
+ "type": "array",
+ "items": {
+ "required": [
+ "maxLimit",
+ "minLimit",
+ "paymentChannel",
+ "supportsPendingStatus"
+ ],
+ "type": "object",
+ "properties": {
+ "maxLimit": {
+ "type": "integer"
+ },
+ "minLimit": {
+ "type": "integer"
+ },
+ "paymentChannel": {
+ "type": "string",
+ "description": "This is the initiating channel.\n1. `AGT`: Offline agent.\n2. `BNKBRNCH`: Bank branch.\n3. `BSC`: Business correspondent\n4. `MOB`: Mobile application\n5. `INT`: Internet portal\n6. `INTB`: Internet banking\n7. `MOBB`: Mobile banking\n8. `ATM`: ATM\n9. `KIOSK`: KIOSK\n",
+ "example": "INT",
+ "enum": [
+ "INT",
+ "INTB",
+ "MOB",
+ "BNKBRNCH",
+ "BSC",
+ "AGT",
+ "KIOSK",
+ "ATM",
+ "MOBB",
+ "POS",
+ "MPOS"
+ ]
+ },
+ "supportsPendingStatus": {
+ "type": "boolean",
+ "example": false
+ }
+ }
+ }
+ },
+ "coverage": {
+ "type": "string",
+ "example": "IND-TEL-Hyderabad"
+ },
+ "enforcesSameDayFetchPay": {
+ "type": "boolean",
+ "example": true,
+ "x-omitempty": false
+ }
+ },
+ "x-go-name": "CouBillerDetails"
+ }
+ },
+ "nextPage": {
+ "type": "string",
+ "example": "/api/bbps/billers?search=Aditya&CategoryCode=Loan+Repayment&CategoryCode=Insurance&after=ABCC00000PTNNS"
+ },
+ "total": {
+ "type": "integer"
+ }
+ }
+ },
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "Production": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "Sandbox": [
+ "bbps:partner"
+ ]
+ },
+ {
+ "QA": [
+ "bbps:partner"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "components": {
+ "schemas": {},
+ "securitySchemes": {
+ "Production": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "bbps:partner": "Required scope"
+ }
+ }
+ }
+ },
+ "Sandbox": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://sandbox-coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "bbps:partner": "Required scope"
+ }
+ }
+ }
+ },
+ "QA": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://qa-coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "bbps:partner": "Required scope"
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-original-swagger-version": "2.0"
+}
diff --git a/api-references/payments/billpay_v1/pre-built-screens.json b/api-references/payments/billpay_v1/pre-built-screens.json
new file mode 100644
index 00000000..fa188545
--- /dev/null
+++ b/api-references/payments/billpay_v1/pre-built-screens.json
@@ -0,0 +1,777 @@
+{
+ "openapi": "3.0.1",
+ "info": {
+ "title": "Setu API Server - Ethereal V1",
+ "version": "1.0.0"
+ },
+ "servers": [
+ {
+ "url": "https://coudc.setu.co",
+ "description": "Production server"
+ },
+ {
+ "url": "https://sandbox-coudc.setu.co",
+ "description": "Sandbox server"
+ },
+ {
+ "url": "https://qa-coudc.setu.co",
+ "description": "QA server"
+ }
+ ],
+ "paths": {
+ "/v1/auth/token": {
+ "post": {
+ "tags": [
+ "Token API"
+ ],
+ "description": "Fetch token to be used to authorize all Setu APIs",
+ "operationId": "fetchToken",
+ "requestBody": {
+ "description": "The API key pair",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "clientID": {
+ "type": "string",
+ "description": "clientID from the API key pair"
+ },
+ "secret": {
+ "type": "string",
+ "description": "secret from the API key pair"
+ }
+ },
+ "description": "Fetch Token API payload"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "Auth token response",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "required": [
+ "expiresIn",
+ "token"
+ ],
+ "type": "object",
+ "properties": {
+ "expiresIn": {
+ "type": "integer",
+ "description": "Token expiry duration in seconds"
+ },
+ "token": {
+ "type": "string",
+ "description": "Token to be used in subsequent requests"
+ }
+ }
+ },
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-codegen-request-body-name": "fetchTokenPayload"
+ }
+ },
+ "/v1/webhooks/payment-event": {
+ "post": {
+ "tags": [
+ "Custom Payment Webhook"
+ ],
+ "description": "Custom payment webhook API",
+ "operationId": "CouCustomPaymentWebhook",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "amount",
+ "orderId",
+ "paymentDateTime",
+ "paymentMode",
+ "paymentStatus",
+ "transactionId"
+ ],
+ "type": "object",
+ "properties": {
+ "orderId": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "paymentDateTime": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "paymentMode": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "paymentStatus": {
+ "type": "string",
+ "example": "SUCCESS"
+ },
+ "transactionId": {
+ "type": "string",
+ "example": "ORDID12345"
+ },
+ "amount": {
+ "type": "string",
+ "example": "SUCCESS"
+ }
+ },
+ "x-go-name": "CouCustomPaymentWebhook",
+ "x-omitempty": true
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "status"
+ ],
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "example": "acknowledged"
+ }
+ },
+ "x-go-name": "CouCustomPaymentWebhookResponse",
+ "x-omitempty": true
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-codegen-request-body-name": "CouCustomPaymentWebhook"
+ }
+ },
+ "/v1/ethereal/link": {
+ "post": {
+ "tags": [
+ "Link Generation"
+ ],
+ "description": "Ethereal link create request API",
+ "operationId": "EtherealLinkRequest",
+ "parameters": [
+ {
+ "name": "X-PARTNER-ID",
+ "in": "header",
+ "description": "Partner ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "orgId"
+ ],
+ "type": "object",
+ "properties": {
+ "custID": {
+ "type": "string",
+ "example": "12345"
+ },
+ "mobileNumber": {
+ "maxLength": 20,
+ "minLength": 6,
+ "pattern": "^\\d{6}(\\d{4}(\\d{10})?)?$",
+ "type": "string",
+ "description": "Mobile number with 6, 10 and 20 digits are valid.",
+ "example": "9481773053"
+ },
+ "orgId": {
+ "type": "string",
+ "example": "1.22337203685477E14"
+ },
+ "redirectTo": {
+ "type": "string",
+ "example": "transactions",
+ "enum": [
+ "transactions",
+ "disputes"
+ ]
+ },
+ "additionalInfo": {
+ "type": "object",
+ "properties": {},
+ "description": "Additional Session information"
+ },
+ "billParams": {
+ "type": "array",
+ "items": {
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The display name of the parameter. This has to match what is sent in fields.",
+ "example": "Loan Number"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the customer parameter",
+ "example": "1895159"
+ }
+ }
+ }
+ },
+ "billerId": {
+ "type": "string",
+ "example": "MAHI0000001"
+ },
+ "categoryName": {
+ "type": "string",
+ "example": "Water"
+ }
+ },
+ "x-go-name": "EtherealLinkCreateRequest",
+ "x-omitempty": true
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "X-Frame-Options": {
+ "description": "X Frame options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Strict-Transport-Security": {
+ "description": "Strict transport security",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Cache-Control": {
+ "description": "Cache control",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-Content-Type-Options": {
+ "description": "X Content type options",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Content-Security-Policy": {
+ "description": "Content security policy",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "Pragma": {
+ "description": "Pragma",
+ "schema": {
+ "type": "string"
+ }
+ },
+ "X-XSS-Protection": {
+ "description": "X Xss Protection",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "link": {
+ "type": "string",
+ "example": "link"
+ },
+ "sessionId": {
+ "type": "string",
+ "example": "sessionId"
+ },
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ },
+ "x-go-name": "EtherealLinkCreateResponse",
+ "x-omitempty": true
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "required": [
+ "error",
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "error": {
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "validation-error"
+ },
+ "message": {
+ "type": "string",
+ "example": "Input is invalid"
+ }
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "example": false
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [],
+ "x-codegen-request-body-name": "EtherealLinkCreateRequest"
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "fetchTokenRequest": {
+ "type": "object",
+ "properties": {
+ "clientID": {
+ "type": "string",
+ "description": "clientID from the API key pair"
+ },
+ "secret": {
+ "type": "string",
+ "description": "secret from the API key pair"
+ }
+ },
+ "description": "Fetch Token API payload"
+ },
+ "fetchTokenResponse": {
+ "allOf": [
+ {
+ "required": [
+ "expiresIn",
+ "token"
+ ],
+ "type": "object",
+ "properties": {
+ "expiresIn": {
+ "type": "integer",
+ "description": "Token expiry duration in seconds"
+ },
+ "token": {
+ "type": "string",
+ "description": "Token to be used in subsequent requests"
+ }
+ }
+ },
+ {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ ]
+ },
+ "successAndTracerDetails": {
+ "required": [
+ "success",
+ "traceId"
+ ],
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean",
+ "example": true
+ },
+ "traceId": {
+ "type": "string",
+ "example": "C3SFG0O6N88R6UI7EQ"
+ }
+ }
+ }
+ },
+ "securitySchemes": {
+ "Production": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "cou:wl_partner": "Required scope"
+ }
+ }
+ }
+ },
+ "Sandbox": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://sandbox-coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "cou:wl_partner": "Required scope"
+ }
+ }
+ }
+ },
+ "QA": {
+ "type": "oauth2",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://qa-coudc.setu.co/api/v1/auth/token",
+ "scopes": {
+ "cou:wl_partner": "Required scope"
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-original-swagger-version": "2.0"
+}
diff --git a/content/menuItems.json b/content/menuItems.json
index e77b4f0b..d383bf73 100644
--- a/content/menuItems.json
+++ b/content/menuItems.json
@@ -1 +1 @@
-{"home":[{"name":"Payments","path":"payments","order":0,"visible_in_sidebar":true,"api_reference":true,"children":[{"name":"BBPS BillCollect","path":"bbps","order":0,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"BBPS API reference","path":"api-reference","order":9},{"name":"Axis BBPS","visible_in_sidebar":false,"page_title":"Axis BBPS API Approach Document","path":"axis","order":10},{"name":"Bill Structure","visible_in_sidebar":true,"page_title":"BBPS - Bill Structure","path":"bill-structure","order":5,"children":[{"name":"Special cases","visible_in_sidebar":true,"page_title":"BBPS - Bill Structure special cases","path":"special-cases","order":1}]},{"name":"Go live","visible_in_sidebar":true,"page_title":"BBPS - Go live","path":"go-live","order":3},{"name":"Notifications","visible_in_sidebar":true,"page_title":"BBPS - Notifications","path":"notifications","order":4},{"name":"Overview","visible_in_sidebar":true,"page_title":"BBPS - Overview","path":"overview","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS - Quickstart","path":"quickstart","order":2,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"BBPS - API integration","path":"api-integration","order":2},{"name":"No-code CSV","visible_in_sidebar":true,"page_title":"BBPS - No-code CSV","path":"no-code-integration","order":1},{"name":"Share bills","visible_in_sidebar":false,"page_title":"BBPS - Share bills","path":"share-biils","order":1}]},{"name":"Reports API","visible_in_sidebar":true,"page_title":"BBPS - Reports API","path":"reports","order":6},{"name":"Additional resources","visible_in_sidebar":true,"page_title":"BBPS - Additional Resources","path":"resources","order":8,"children":[{"name":"Errors","visible_in_sidebar":true,"page_title":"BBPS error codes","path":"errors","order":4},{"name":"JWT authentication","visible_in_sidebar":true,"page_title":"UPI Deeplinks JWT authentication","path":"jwt","order":2},{"name":"OAuth 2.0","visible_in_sidebar":true,"page_title":"BBPS OAuth 2.0","path":"oauth","order":1},{"name":"Settlement object","visible_in_sidebar":true,"page_title":"UPI Deeplinks settlement object","path":"settlement-object","order":3}]}]},{"name":"BBPS BillPay","path":"billpay","order":1,"visible_in_sidebar":true,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"BBPS Billpay API integration","path":"api-integration","order":1,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"COU Direct Connectivity API reference","path":"api-reference","order":5},{"name":"List of APIs","visible_in_sidebar":true,"page_title":"BBPS COU - List of APIs","path":"apis","order":2},{"name":"Deprecated APIs","visible_in_sidebar":false,"page_title":"BBPS COU - API integration (deprecated)","path":"deprecated","order":4,"children":[{"name":"Mock environment","visible_in_sidebar":false,"page_title":"BBPS Billpay Mock environment","path":"mock-environment","order":2},{"name":"Polling","visible_in_sidebar":false,"page_title":"BBPS Billpay polling","path":"polling","order":2}]},{"name":"Objects","visible_in_sidebar":true,"page_title":"BBPS COU - Objects","path":"objects","order":3},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS COU - API integration","path":"quickstart","order":1},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS COU - Webhooks","path":"webhook","order":4}]},{"name":"API reference","visible_in_sidebar":false,"page_title":"BillPay API reference","path":"api-reference","order":5},{"name":"Overview","visible_in_sidebar":true,"page_title":"BBPS Billpay Overview","path":"overview","order":0},{"name":"Pre-built screens","visible_in_sidebar":true,"page_title":"BBPS Billpay pre-built screens","path":"pre-built-screens","order":2,"children":[{"name":"API reference","visible_in_sidebar":false,"page_title":"BBPS Billpay API reference","path":"api-reference-wl","order":4},{"name":"API reference","visible_in_sidebar":true,"page_title":"BBPS Billpay API reference","path":"api-reference","order":4},{"name":"Custom payment","visible_in_sidebar":true,"page_title":"BBPS Billpay custom payment","path":"custom-payment","order":2,"children":[{"name":"Android","visible_in_sidebar":true,"page_title":"BBPS Billpay android integration for custom payment","path":"android","order":3},{"name":"Required APIs","visible_in_sidebar":true,"page_title":"BBPS Billpay APIs for custom payment","path":"apis","order":1},{"name":"Cross platform","visible_in_sidebar":true,"page_title":"BBPS Billpay cross-platform integration for custom payment","path":"cross-platform","order":3},{"name":"iOS","visible_in_sidebar":true,"page_title":"BBPS Billpay iOS integration for custom payment","path":"iOS","order":4},{"name":"Website","visible_in_sidebar":true,"page_title":"BBPS Billpay website integration for custom payment","path":"website","order":2}]},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS Billpay Quickstart","path":"quickstart","order":1,"children":[{"name":"Android","visible_in_sidebar":true,"page_title":"BBPS Billpay Android integration","path":"android","order":2},{"name":"API","visible_in_sidebar":true,"page_title":"BBPS Billpay API","path":"api","order":2},{"name":"Cross platform","visible_in_sidebar":true,"page_title":"BBPS Billpay cross platform integration","path":"cross-platform","order":4},{"name":"iOS","visible_in_sidebar":true,"page_title":"BBPS Billpay iOS integration","path":"iOS","order":3},{"name":"Website","visible_in_sidebar":true,"page_title":"BBPS Billpay website","path":"website","order":1}]},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS Billpay webhooks","path":"webhooks","order":2}]}]},{"name":"WhatsApp Collect","path":"whatsapp-collect","order":3,"visible_in_sidebar":true,"children":[{"name":"API Integration","visible_in_sidebar":true,"page_title":"WhatsApp Collect API Integration","path":"api-integration","order":3},{"name":"API reference","visible_in_sidebar":true,"page_title":"WhatsApp Collect API reference","path":"api-reference","order":5},{"name":"Error codes","visible_in_sidebar":true,"page_title":"WhatsApp Collect error codes","path":"errors","order":4},{"name":"Collection journey","visible_in_sidebar":true,"page_title":"WhatsApp Collect Journey","path":"journey","order":1},{"name":"Overview","visible_in_sidebar":true,"page_title":"WhatsApp Collect Overview","path":"overview","order":0},{"name":"Collection reminders","visible_in_sidebar":true,"page_title":"WhatsApp Collect reminders","path":"reminders","order":2}]},{"name":"UPI DeepLinks","path":"upi-deeplinks","order":4,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"UPI Deeplinks API reference","path":"api-reference","order":8},{"name":"Notifications","visible_in_sidebar":true,"page_title":"UPI Deeplinks Notifications","path":"notifications","order":6},{"name":"Overview","visible_in_sidebar":true,"page_title":"UPI Deeplinks Overview","path":"overview","order":0},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"UPI Deeplinks quickstart","path":"quickstart","order":1,"children":[{"name":"Go Live","visible_in_sidebar":true,"page_title":"UPI Deeplinks go live","path":"go-live","order":1}]},{"name":"Refunds","visible_in_sidebar":true,"page_title":"UPI Deeplinks Refunds","path":"refunds","order":4},{"name":"Reports API","visible_in_sidebar":true,"page_title":"UPI Deeplinks Reports API","path":"reports","order":5},{"name":"Additional resources","visible_in_sidebar":true,"page_title":"UPI Deeplinks additonal resources","path":"resources","order":6,"children":[{"name":"JWT authentication","visible_in_sidebar":true,"page_title":"UPI Deeplinks JWT authentication","path":"jwt","order":2},{"name":"OAuth 2.0","visible_in_sidebar":true,"page_title":"UPI Deeplinks OAuth 2.0","path":"oauth","order":1},{"name":"Settlement object","visible_in_sidebar":true,"page_title":"UPI Deeplinks settlement object","path":"settlement-object","order":3}]},{"name":"SDKs","visible_in_sidebar":true,"page_title":"UPI Deeplinks SDKs","path":"sdks","order":3},{"name":"Third party verification","visible_in_sidebar":true,"page_title":"UPI Deeplinks third party verification","path":"third-party-verification","order":3}]},{"name":"FASTag","path":"fastag","order":5,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"FASTag API reference","path":"api-reference","order":0}]},{"name":"Plural","path":"plural","order":6,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Plural - API reference","path":"api-reference","order":9},{"name":"Get started","visible_in_sidebar":true,"page_title":"Plural - Get started","path":"get-started","order":2,"children":[{"name":"FAQs","visible_in_sidebar":true,"page_title":"Plural - FAQs and Troubleshooting","path":"faqs-and-troubleshooting","order":6},{"name":"Hash generation","visible_in_sidebar":true,"page_title":"Plural - Hash generation","path":"hash-generation-logic","order":7},{"name":"Integration modes","visible_in_sidebar":true,"page_title":"Plural - Integration modes","path":"integration-modes","order":2,"children":[{"name":"EMI flow","visible_in_sidebar":true,"page_title":"Plural - EMI flow","path":"emi-flow","order":3},{"name":"iFrame","visible_in_sidebar":true,"page_title":"Plural - iFrame","path":"iframe","order":2},{"name":"Redirect integration","visible_in_sidebar":true,"page_title":"Plural - Redirect integration","path":"redirect-flow","order":4},{"name":"Seamless flow","visible_in_sidebar":true,"page_title":"Plural - Seamless flow","path":"seamless-flow","order":1}]},{"name":"List of codes","visible_in_sidebar":true,"page_title":"Plural - Wallet and Bank codes","path":"list-of-codes","order":4},{"name":"List of status","visible_in_sidebar":true,"page_title":"Plural - Order & Transaction status","path":"list-of-status","order":4},{"name":"Onboarding","visible_in_sidebar":true,"page_title":"Plural - Onboarding","path":"onboarding","order":3},{"name":"Setup","visible_in_sidebar":true,"page_title":"Plural - Setup","path":"setup","order":1},{"name":"Tokenisation","visible_in_sidebar":true,"page_title":"Plural - Tokenisation","path":"tokenisation","order":8}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Plural - Overview","path":"overview","order":1}]},{"name":"UPI Setu","path":"umap","order":7,"visible_in_sidebar":true,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"UPI Setu - API integration","path":"api-integration","order":2,"children":[{"name":"Aggregators","visible_in_sidebar":true,"page_title":"UPI Setu - API integration for aggregators","path":"aggregators","order":1},{"name":"Merchants","visible_in_sidebar":true,"page_title":"UPI Setu - API integration for merchants","path":"merchants","order":2}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"UPI Setu - API reference","path":"api-reference","order":8},{"name":"UPI mandates","visible_in_sidebar":true,"page_title":"UPI mandates","path":"mandates","order":4,"children":[{"name":"Mandate operations","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Mandate operations","path":"generic","order":5,"children":[{"name":"Pause","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Pause","path":"pause","order":3},{"name":"Revoke","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Revoke","path":"revoke","order":2},{"name":"Unpause","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Unpause","path":"unpause","order":4},{"name":"Update","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Update","path":"update","order":1}]},{"name":"OneShot","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - OneShot","path":"one-shot","order":1,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":4},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create One Time Mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute One Time Mandate","path":"execute","order":3},{"name":"Pre Debit Notify","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Send One Time Mandate Pre Debit Notification","path":"pre-debit-notify","order":2}]},{"name":"Recur","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Recur","path":"recur","order":3,"children":[{"name":"Check payment status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":4},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create recurring mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute mandate","path":"execute","order":3},{"name":"Pre Debit Notify","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Send Recurring Mandate Pre Debit Notification","path":"pre-debit-notify","order":2}]},{"name":"Reserve","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Reserve","path":"reserve","order":2,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":4},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create Reserve Mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute Reserve Mandate","path":"execute","order":3}]},{"name":"ReservePlus","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - ReservePlus","path":"reserve-plus","order":4,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":3},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create single block multi-debit","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute single block multi-debit","path":"execute","order":2}]}]},{"name":"Merchant on-boarding","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant onboarding","path":"merchant-onboarding","order":2,"children":[{"name":"Check VPA availability","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant on-boarding - Check VPA availability","path":"check-vpa-availability-api","order":2},{"name":"Setup a merchant","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant on-boarding - Setup merchant","path":"create-merchant-api","order":1},{"name":"Registering VPA","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant on-boarding - Registering a VPA","path":"create-vpa-api","order":3}]},{"name":"Notifications and alerts","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts","path":"notifications","order":7,"children":[{"name":"VPA verification","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Customer VPA verification","path":"customer-vpa-verification","order":6},{"name":"Disputes","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Disputes","path":"disputes","order":5},{"name":"Mandates","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Mandates","path":"mandates","order":3,"children":[{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Creation of mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Mandate execution","path":"execute","order":7},{"name":"Notify","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Mandate pre-debit notifications","path":"notify","order":6},{"name":"Pause","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Pausing mandate","path":"pause","order":4},{"name":"Revoke","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Revoking mandate","path":"revoke","order":3},{"name":"Unpause","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Unpausing mandate","path":"unpause","order":5},{"name":"Update","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Updating mandate","path":"update","order":2}]},{"name":"Payments","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Payments","path":"payments","order":2},{"name":"Refunds","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Refunds","path":"refunds","order":4},{"name":"Verify signature","visible_in_sidebar":true,"page_title":"UMAP - Events and notifications","path":"verify-signature","order":1}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"UPI Setu - Overview","path":"overview","order":0},{"name":"UPI payments","visible_in_sidebar":true,"page_title":"UPI payments","path":"payments","order":3,"children":[{"name":"Collect","visible_in_sidebar":true,"page_title":"UPI payments - Collect","path":"collect","order":2,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu payments - Collect request - Check payment status","path":"check-status","order":3},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu payments - Create collect request","path":"create-collect-request","order":2},{"name":"Verify customer VPA","visible_in_sidebar":true,"page_title":"UPI Setu payments - Verify customer VPA","path":"verify-customer-vpa-api","order":1}]},{"name":"Flash","visible_in_sidebar":true,"page_title":"UPI payments - Flash","path":"flash","order":1,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu payments - Intent/QR - Check payment status","path":"check-status","order":2},{"name":"Dynamic QR","visible_in_sidebar":true,"page_title":"UPI Setu payments - Create Dynamic QR","path":"create-dqr","order":1},{"name":"Static QR","visible_in_sidebar":true,"page_title":"UPI Setu payments - Create Static QR","path":"create-sqr","order":1}]},{"name":"TPV","visible_in_sidebar":true,"page_title":"UPI payments - TPV","path":"tpv","order":3,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Payments - TPV - Check payment status","path":"check-status","order":2},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Payments - Create TPV API","path":"create-tpv","order":1},{"name":"Payments","visible_in_sidebar":true,"page_title":"UMAP - Notifications and alerts - Payments","path":"life-cycle","order":1}]}]},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"UPI Setu - Quickstart","path":"quickstart","order":1,"children":[{"name":"Aggregators","visible_in_sidebar":true,"page_title":"UPI Setu - Quickstart for aggregators","path":"aggregators","order":1},{"name":"Merchants","visible_in_sidebar":true,"page_title":"UPI Setu - Quickstart for merchants","path":"merchants","order":2}]},{"name":"Refunds and disputes","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes","path":"refunds-disputes","order":6,"children":[{"name":"Check refund status","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes - Check refund status API","path":"check-refund-status-api","order":2},{"name":"Create refund","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes - Create refund API","path":"create-refund-api","order":1},{"name":"Fetch dispute","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes - Fetch dispute API","path":"fetch-dispute-api","order":3}]},{"name":"Transaction Monitoring","visible_in_sidebar":false,"page_title":"UPI Setu - Transaction Monitoring","path":"transaction-monitoring","order":5,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Transaction monitoring - Check status API","path":"check-status-api","order":1},{"name":"Check status history","visible_in_sidebar":true,"page_title":"UPI Setu - Transaction monitoring - Check status sistory API","path":"check-status-history-api","order":2},{"name":"Fetch payment","visible_in_sidebar":true,"page_title":"UPI Setu - Transaction monitoring - Fetch payment API","path":"fetch-payment-api","order":3}]}]}]},{"name":"Data","path":"data","order":1,"visible_in_sidebar":true,"children":[{"name":"KYC","path":"kyc","order":0,"visible_in_sidebar":true,"children":[{"name":"Overview","visible_in_sidebar":true,"page_title":"Setu KYC Overview","path":"overview","order":1}]},{"name":"PAN verification","path":"pan","order":0,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"PAN verification API reference","path":"api-reference","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"PAN verification quickstart","path":"quickstart","order":0}]},{"name":"Aadhaar KYC","path":"okyc","order":1,"visible_in_sidebar":false,"children":[{"name":"Aadhaar Redundancy","visible_in_sidebar":true,"page_title":"Redundancy for Aadhaar OKYC","path":"aadhaar-redundancy","order":5,"children":[{"name":"API Integration","visible_in_sidebar":true,"page_title":"Aadhaar OKYC Redundancy API Integration","path":"api-integration","order":1}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"Offline Aadhar API reference","path":"api-reference","order":6},{"name":"Auto OKYC","visible_in_sidebar":true,"page_title":"Auto OKYC API integration","path":"auto-okyc-api-integration","order":4},{"name":"OKYC","visible_in_sidebar":true,"page_title":"OKYC API integration","path":"okyc-api-integration","order":3},{"name":"Overview","visible_in_sidebar":true,"page_title":"Offline Aadhar KYC overview","path":"overview","order":0},{"name":"Pre-built screens","visible_in_sidebar":true,"page_title":"Offline Aadhar pre-built screens","path":"pre-built-screens","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Offline Aadhar Quickstart","path":"quickstart","order":1}]},{"name":"Aadhaar eSign","path":"esign","order":2,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Aadhaar eSign API reference","path":"api-reference","order":8},{"name":"Error codes","visible_in_sidebar":true,"page_title":"Aadhaar eSign error codes","path":"error-codes","order":7},{"name":"eStamp overview","visible_in_sidebar":true,"page_title":"eStamp overview","path":"estamp","order":2},{"name":"Flexible eSign guide","visible_in_sidebar":true,"page_title":"Integration guide with flexible signature coordinates","path":"flexi-esign","order":4},{"name":"eSign Name Match","visible_in_sidebar":true,"page_title":"Aadhaar eSign Name Match","path":"name-match","order":6},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Aadhaar eSign Notifications","path":"notifications","order":5},{"name":"Overview","visible_in_sidebar":true,"page_title":"Aadhaar eSign overview","path":"overview","order":1},{"name":"Integration guide","visible_in_sidebar":true,"page_title":"Aadhaar eSign integration guide","path":"quickstart","order":3}]},{"name":"DigiLocker","path":"digilocker","order":3,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Digilocker API reference","path":"api-reference","order":3},{"name":"Error codes","visible_in_sidebar":true,"page_title":"DigiLocker error codes","path":"error-codes","order":4},{"name":"Overview","visible_in_sidebar":true,"page_title":"Digilocker overview","path":"overview","order":0},{"name":"Integration guide","visible_in_sidebar":true,"page_title":"Digilocker quickstart","path":"quickstart","order":1}]},{"name":"AA Gateway","path":"account-aggregator","order":4,"versions":["v1","v2"],"default_version":"v2","visible_in_sidebar":true,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"Account Aggregator API integration","path":"api-integration","order":3,"children":[{"name":"Account Availability","visible_in_sidebar":true,"page_title":"Account Aggregator Account Availability","path":"account-availability-apis","order":5},{"name":"Consent flow","visible_in_sidebar":true,"page_title":"Account Aggregator Consent flow","path":"consent-flow","order":1},{"name":"Data flow","visible_in_sidebar":true,"page_title":"Account Aggregator Data flow","path":"data-apis","order":2},{"name":"Active FIPs","visible_in_sidebar":true,"page_title":"Account Aggregator Active FIPs","path":"fip-apis","order":4},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Account Aggregator Notifications","path":"notifications","order":3}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"Account Aggregator API reference","path":"api-reference","order":10},{"name":"Consent object","visible_in_sidebar":true,"page_title":"Account Aggregator consent object","path":"consent-object","order":4},{"name":"Embed Setu screens","visible_in_sidebar":true,"page_title":"Account Aggregator Embed Setu screens","path":"embed-setu-aa","order":7},{"name":"FI data types","visible_in_sidebar":true,"page_title":"Account Aggregator FI data types","path":"fi-data-types","order":5},{"name":"Licenses and go live","visible_in_sidebar":true,"page_title":"Account Aggregator license and go live process","path":"licenses-and-go-live","order":8,"children":[{"name":"Go live","visible_in_sidebar":true,"page_title":"FIU go live process","path":"go-live","order":2},{"name":"Licenses","visible_in_sidebar":true,"page_title":"Licenses required to participate in AA","path":"licenses","order":1},{"name":"Participants in AA","visible_in_sidebar":true,"page_title":"Participants in AA","path":"participants-in-aa","order":0}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Account Aggregator overview","path":"overview","order":0},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Account Aggregator quickstart","path":"quickstart","order":1},{"path":"v1","children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"Account Aggregator API integration","path":"api-integration","order":3,"children":[{"name":"Consent flow","visible_in_sidebar":true,"page_title":"Account Aggregator Consent flow","path":"consent-flow","order":1},{"name":"Data flow","visible_in_sidebar":true,"page_title":"Account Aggregator Data flow","path":"data-apis","order":2},{"name":"Active FIPs","visible_in_sidebar":true,"page_title":"Account Aggregator Active FIPs","path":"fip-apis","order":4},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Account Aggregator Notifications","path":"notifications","order":3}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"Account Aggregator API reference","path":"api-reference","order":10},{"name":"Consent object","visible_in_sidebar":true,"page_title":"Account Aggregator Consent object","path":"consent-object","order":4},{"name":"Embed Setu screens","visible_in_sidebar":true,"page_title":"Account Aggregator Embed Setu screens","path":"embed-setu-aa","order":7},{"name":"End-to-end encryption","visible_in_sidebar":false,"page_title":"Account Aggregator End-to-end encryption","path":"encryption","order":1},{"name":"FI data types","visible_in_sidebar":true,"page_title":"Account Aggregator FI data types","path":"fi-data-types","order":5},{"name":"Get started","visible_in_sidebar":false,"page_title":"Account Aggregator getting started","path":"get-started","order":0},{"name":"Licenses and go live","visible_in_sidebar":true,"page_title":"Account Aggregator license and go live process","path":"licenses-and-go-live","order":8,"children":[{"name":"Go live","visible_in_sidebar":true,"page_title":"FIU go live process","path":"go-live","order":2},{"name":"Licenses","visible_in_sidebar":true,"page_title":"Licenses required to participate in AA","path":"licenses","order":1},{"name":"Participants in AA","visible_in_sidebar":true,"page_title":"Participants in AA","path":"participants-in-aa","order":0}]},{"name":"Migration guide","visible_in_sidebar":true,"page_title":"Account Aggregator Migration Guide","path":"migration-guide","order":6,"children":[{"name":"Consent flow","visible_in_sidebar":true,"page_title":"Account Aggregator Consent flow","path":"consent-flow","order":1},{"name":"Data flow","visible_in_sidebar":true,"page_title":"Account Aggregator Data flow","path":"data-flow","order":2},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Account Aggregator Notifications","path":"notifications","order":3}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Account Aggregator overview","path":"overview","order":0},{"name":"Postman integration","visible_in_sidebar":true,"page_title":"Account Aggregator Postman integration","path":"postman","order":2},{"name":"Quickstart","visible_in_sidebar":false,"page_title":"Account Aggregator quickstart","path":"quickstart-v1","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Account Aggregator quickstart","path":"quickstart","order":1},{"name":"Request signing","visible_in_sidebar":false,"page_title":"Account Aggregator Request signing","path":"request-signing","order":1}]}]},{"name":"Bank account verification","path":"bav","order":5,"visible_in_sidebar":false,"children":[{"name":"Penny drop","visible_in_sidebar":true,"page_title":"BAV using penny drop","path":"penny-drop","order":1,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"BAV API integration","path":"api-integration","order":1,"children":[{"name":"Async API","visible_in_sidebar":true,"page_title":"BAV Async API integration","path":"async","order":2},{"path":"bav-codes"},{"name":"Sync API","visible_in_sidebar":true,"page_title":"BAV Sync API integration","path":"sync","order":1}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"BAV API reference","path":"api-reference","order":3},{"name":"Notifications","visible_in_sidebar":true,"page_title":"BAV Async Penny drop Notifications","path":"notifications","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BAV quickstart","path":"quickstart","order":0}]},{"name":"Penny drop + PennyLess","visible_in_sidebar":true,"page_title":"Bank account verification using Penny drop + PennyLess","path":"pennydrop-pennyless","order":2,"children":[{"name":"API Integration","visible_in_sidebar":true,"page_title":"Penny drop + PennyLess API Integration","path":"api-integration","order":1},{"name":"API reference","visible_in_sidebar":true,"page_title":"Pennydrop-pennyless API reference","path":"api-reference","order":3},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Penny drop + PennyLess Notifications","path":"notifications","order":2}]},{"path":"pennyless","children":[]},{"name":"PennyLess Drop","visible_in_sidebar":true,"page_title":"BAV using PennyLess Drop API","path":"pennyless-drop","order":4,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"BAV Pennyless API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Quickstart for PennyLess drop API","path":"quickstart","order":1}]},{"name":"Reverse Penny drop","visible_in_sidebar":true,"page_title":"BAV using reverse penny drop","path":"reverse-penny-drop","order":3,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"RPD API integration","path":"api-integration","order":2},{"name":"API reference","visible_in_sidebar":true,"page_title":"BAV RPD API reference","path":"api-reference","order":4},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Quickstart for reverse penny drop","path":"quickstart","order":1},{"name":"Webhook Auth","visible_in_sidebar":true,"page_title":"Webhook Authentication","path":"webhook-authentication","order":3}]}]},{"name":"Insights","path":"insights","order":5,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Setu Insights API reference","path":"api-reference","order":4},{"name":"List of insights","visible_in_sidebar":true,"page_title":"All Setu insights","path":"insights","order":2},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Setu Insights notifications","path":"notifications","order":3},{"name":"Overview","visible_in_sidebar":true,"page_title":"Setu Insights overview","path":"overview","order":0},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Setu Insights quickstart","path":"quickstart","order":1,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"Setu Insights Postman integration","path":"api-integration","order":1},{"name":"Postman integration","visible_in_sidebar":true,"page_title":"Setu Insights Postman integration","path":"postman","order":0}]}]},{"name":"GST verification","path":"gst","order":6,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"GSTIN verification API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"GST Verification quickstart","path":"quickstart","order":1}]},{"name":"Match APIs","path":"match-apis","order":7,"visible_in_sidebar":false,"children":[{"name":"Name match","visible_in_sidebar":true,"page_title":"Name match APIs","path":"name-match","order":1,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Name Match API reference","path":"api-reference","order":4},{"name":"Examples","visible_in_sidebar":true,"page_title":"Name Match API response examples","path":"examples","order":3},{"name":"Overview","visible_in_sidebar":true,"page_title":"Name Match API overview","path":"overview","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Name Match API quickstart","path":"quickstart","order":2}]}]},{"name":"eKYC","path":"ekyc","order":8,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"eKYC API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"PAN verification quickstart","path":"quickstart","order":1}]}]},{"name":"Dev tools","path":"dev-tools","order":4,"visible_in_sidebar":true,"children":[{"name":"The Bridge","path":"bridge","order":0,"visible_in_sidebar":true,"children":[{"name":"Bridge configuration","visible_in_sidebar":false,"page_title":"Bridge configuration","path":"configure","order":6},{"name":"Generate Token","visible_in_sidebar":false,"page_title":"Bridge generate token","path":"generate-token","order":4},{"name":"Org settings","visible_in_sidebar":true,"page_title":"Bridge org settings","path":"org-settings","order":3,"children":[{"name":"API keys","visible_in_sidebar":true,"page_title":"API keys","path":"api-keys","order":2,"children":[{"name":"JWT Auth","visible_in_sidebar":false,"page_title":"JWT Auth","path":"jwt-auth","order":3},{"name":"JWT","visible_in_sidebar":true,"page_title":"JWT","path":"jwt","order":1},{"name":"OAuth","visible_in_sidebar":true,"page_title":"OAuth","path":"oauth","order":2}]},{"name":"People","visible_in_sidebar":true,"page_title":"People","path":"people","order":1}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Bridge overview","path":"overview","order":0},{"name":"Reports","visible_in_sidebar":true,"page_title":"Bridge reports","path":"reports","order":1,"children":[{"name":"Types","visible_in_sidebar":false,"page_title":"Report types","path":"types","order":1}]},{"name":"Reports API","visible_in_sidebar":false,"page_title":"Reports API","path":"reports-api","order":5}]}]},{"name":"Sample Category","path":"sample-category","order":5,"visible_in_sidebar":false,"children":[{"name":"Sample Product","path":"sample-product","order":0,"visible_in_sidebar":false,"children":[{"name":"Sample Page","visible_in_sidebar":false,"page_title":"Docs sample page","path":"sample-page","order":0}]}]}]}
\ No newline at end of file
+{"home":[{"name":"Payments","path":"payments","order":0,"visible_in_sidebar":true,"api_reference":true,"children":[{"name":"BBPS BillCollect","path":"bbps","order":0,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"BBPS API reference","path":"api-reference","order":9},{"name":"Axis BBPS","visible_in_sidebar":false,"page_title":"Axis BBPS API Approach Document","path":"axis","order":10},{"name":"Bill Structure","visible_in_sidebar":true,"page_title":"BBPS - Bill Structure","path":"bill-structure","order":5,"children":[{"name":"Special cases","visible_in_sidebar":true,"page_title":"BBPS - Bill Structure special cases","path":"special-cases","order":1}]},{"name":"Go live","visible_in_sidebar":true,"page_title":"BBPS - Go live","path":"go-live","order":3},{"name":"Notifications","visible_in_sidebar":true,"page_title":"BBPS - Notifications","path":"notifications","order":4},{"name":"Overview","visible_in_sidebar":true,"page_title":"BBPS - Overview","path":"overview","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS - Quickstart","path":"quickstart","order":2,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"BBPS - API integration","path":"api-integration","order":2},{"name":"No-code CSV","visible_in_sidebar":true,"page_title":"BBPS - No-code CSV","path":"no-code-integration","order":1},{"name":"Share bills","visible_in_sidebar":false,"page_title":"BBPS - Share bills","path":"share-biils","order":1}]},{"name":"Reports API","visible_in_sidebar":true,"page_title":"BBPS - Reports API","path":"reports","order":6},{"name":"Additional resources","visible_in_sidebar":true,"page_title":"BBPS - Additional Resources","path":"resources","order":8,"children":[{"name":"Errors","visible_in_sidebar":true,"page_title":"BBPS error codes","path":"errors","order":4},{"name":"JWT authentication","visible_in_sidebar":true,"page_title":"UPI Deeplinks JWT authentication","path":"jwt","order":2},{"name":"OAuth 2.0","visible_in_sidebar":true,"page_title":"BBPS OAuth 2.0","path":"oauth","order":1},{"name":"Settlement object","visible_in_sidebar":true,"page_title":"UPI Deeplinks settlement object","path":"settlement-object","order":3}]}]},{"name":"BBPS BillPay","path":"billpay","order":1,"visible_in_sidebar":true,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"BBPS Billpay API integration","path":"api-integration","order":1,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"COU Direct Connectivity API reference","path":"api-reference","order":5},{"name":"List of APIs","visible_in_sidebar":true,"page_title":"BBPS COU - List of APIs","path":"apis","order":2},{"name":"Deprecated APIs","visible_in_sidebar":false,"page_title":"BBPS COU - API integration (deprecated)","path":"deprecated","order":4,"children":[{"name":"Mock environment","visible_in_sidebar":false,"page_title":"BBPS Billpay Mock environment","path":"mock-environment","order":2},{"name":"Polling","visible_in_sidebar":false,"page_title":"BBPS Billpay polling","path":"polling","order":2}]},{"name":"Objects","visible_in_sidebar":true,"page_title":"BBPS COU - Objects","path":"objects","order":3},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS COU - API integration","path":"quickstart","order":1},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS COU - Webhooks","path":"webhook","order":4}]},{"name":"API reference","visible_in_sidebar":false,"page_title":"BillPay API reference","path":"api-reference","order":5},{"name":"Overview","visible_in_sidebar":true,"page_title":"BBPS Billpay Overview","path":"overview","order":0},{"name":"Pre-built screens","visible_in_sidebar":true,"page_title":"BBPS Billpay pre-built screens","path":"pre-built-screens","order":2,"children":[{"name":"API reference","visible_in_sidebar":false,"page_title":"BBPS Billpay API reference","path":"api-reference-wl","order":4},{"name":"API reference","visible_in_sidebar":true,"page_title":"BBPS Billpay API reference","path":"api-reference","order":4},{"name":"Custom payment","visible_in_sidebar":true,"page_title":"BBPS Billpay custom payment","path":"custom-payment","order":2,"children":[{"name":"Android","visible_in_sidebar":true,"page_title":"BBPS Billpay android integration for custom payment","path":"android","order":3},{"name":"Required APIs","visible_in_sidebar":true,"page_title":"BBPS Billpay APIs for custom payment","path":"apis","order":1},{"name":"Cross platform","visible_in_sidebar":true,"page_title":"BBPS Billpay cross-platform integration for custom payment","path":"cross-platform","order":3},{"name":"iOS","visible_in_sidebar":true,"page_title":"BBPS Billpay iOS integration for custom payment","path":"iOS","order":4},{"name":"Website","visible_in_sidebar":true,"page_title":"BBPS Billpay website integration for custom payment","path":"website","order":2}]},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS Billpay Quickstart","path":"quickstart","order":1,"children":[{"name":"Android","visible_in_sidebar":true,"page_title":"BBPS Billpay Android integration","path":"android","order":2},{"name":"API","visible_in_sidebar":true,"page_title":"BBPS Billpay API","path":"api","order":2},{"name":"Cross platform","visible_in_sidebar":true,"page_title":"BBPS Billpay cross platform integration","path":"cross-platform","order":4},{"name":"iOS","visible_in_sidebar":true,"page_title":"BBPS Billpay iOS integration","path":"iOS","order":3},{"name":"Website","visible_in_sidebar":true,"page_title":"BBPS Billpay website","path":"website","order":1}]},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS Billpay webhooks","path":"webhooks","order":2}]},{"path":"v1","children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"BBPS Billpay API integration","path":"api-integration","order":1,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"COU Direct Connectivity API reference","path":"api-reference","order":5},{"name":"List of APIs","visible_in_sidebar":true,"page_title":"BBPS COU - List of APIs","path":"apis","order":2},{"name":"Deprecated APIs","visible_in_sidebar":false,"page_title":"BBPS COU - API integration (deprecated)","path":"deprecated","order":4,"children":[{"name":"Mock environment","visible_in_sidebar":false,"page_title":"BBPS Billpay Mock environment","path":"mock-environment","order":2},{"name":"Polling","visible_in_sidebar":false,"page_title":"BBPS Billpay polling","path":"polling","order":2}]},{"name":"Objects","visible_in_sidebar":true,"page_title":"BBPS COU - Objects","path":"objects","order":3},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS COU - API integration","path":"quickstart","order":1},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS COU - Webhooks","path":"webhook","order":4}]},{"name":"API reference","visible_in_sidebar":false,"page_title":"BillPay API reference","path":"api-reference","order":5},{"name":"Overview","visible_in_sidebar":true,"page_title":"BBPS Billpay Overview","path":"overview","order":0},{"name":"Pre-built screens","visible_in_sidebar":true,"page_title":"BBPS Billpay pre-built screens","path":"pre-built-screens","order":2,"children":[{"name":"API reference","visible_in_sidebar":false,"page_title":"BBPS Billpay API reference","path":"api-reference-wl","order":4},{"name":"API reference","visible_in_sidebar":true,"page_title":"BBPS Billpay API reference","path":"api-reference","order":4},{"name":"Custom payment","visible_in_sidebar":true,"page_title":"BBPS Billpay custom payment","path":"custom-payment","order":2,"children":[{"name":"Android","visible_in_sidebar":true,"page_title":"BBPS Billpay android integration for custom payment","path":"android","order":3},{"name":"Required APIs","visible_in_sidebar":true,"page_title":"BBPS Billpay APIs for custom payment","path":"apis","order":1},{"name":"Cross platform","visible_in_sidebar":true,"page_title":"BBPS Billpay cross-platform integration for custom payment","path":"cross-platform","order":3},{"name":"iOS","visible_in_sidebar":true,"page_title":"BBPS Billpay iOS integration for custom payment","path":"iOS","order":4},{"name":"Website","visible_in_sidebar":true,"page_title":"BBPS Billpay website integration for custom payment","path":"website","order":2}]},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS Billpay Quickstart","path":"quickstart","order":1,"children":[{"name":"Android","visible_in_sidebar":true,"page_title":"BBPS Billpay Android integration","path":"android","order":2},{"name":"API","visible_in_sidebar":true,"page_title":"BBPS Billpay API","path":"api","order":2},{"name":"Cross platform","visible_in_sidebar":true,"page_title":"BBPS Billpay cross platform integration","path":"cross-platform","order":4},{"name":"iOS","visible_in_sidebar":true,"page_title":"BBPS Billpay iOS integration","path":"iOS","order":3},{"name":"Website","visible_in_sidebar":true,"page_title":"BBPS Billpay website","path":"website","order":1}]},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS Billpay webhooks","path":"webhooks","order":2}]}]}]},{"name":"WhatsApp Collect","path":"whatsapp-collect","order":3,"visible_in_sidebar":true,"children":[{"name":"API Integration","visible_in_sidebar":true,"page_title":"WhatsApp Collect API Integration","path":"api-integration","order":3},{"name":"API reference","visible_in_sidebar":true,"page_title":"WhatsApp Collect API reference","path":"api-reference","order":5},{"name":"Error codes","visible_in_sidebar":true,"page_title":"WhatsApp Collect error codes","path":"errors","order":4},{"name":"Collection journey","visible_in_sidebar":true,"page_title":"WhatsApp Collect Journey","path":"journey","order":1},{"name":"Overview","visible_in_sidebar":true,"page_title":"WhatsApp Collect Overview","path":"overview","order":0},{"name":"Collection reminders","visible_in_sidebar":true,"page_title":"WhatsApp Collect reminders","path":"reminders","order":2}]},{"name":"UPI DeepLinks","path":"upi-deeplinks","order":4,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"UPI Deeplinks API reference","path":"api-reference","order":8},{"name":"Notifications","visible_in_sidebar":true,"page_title":"UPI Deeplinks Notifications","path":"notifications","order":6},{"name":"Overview","visible_in_sidebar":true,"page_title":"UPI Deeplinks Overview","path":"overview","order":0},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"UPI Deeplinks quickstart","path":"quickstart","order":1,"children":[{"name":"Go Live","visible_in_sidebar":true,"page_title":"UPI Deeplinks go live","path":"go-live","order":1}]},{"name":"Refunds","visible_in_sidebar":true,"page_title":"UPI Deeplinks Refunds","path":"refunds","order":4},{"name":"Reports API","visible_in_sidebar":true,"page_title":"UPI Deeplinks Reports API","path":"reports","order":5},{"name":"Additional resources","visible_in_sidebar":true,"page_title":"UPI Deeplinks additonal resources","path":"resources","order":6,"children":[{"name":"JWT authentication","visible_in_sidebar":true,"page_title":"UPI Deeplinks JWT authentication","path":"jwt","order":2},{"name":"OAuth 2.0","visible_in_sidebar":true,"page_title":"UPI Deeplinks OAuth 2.0","path":"oauth","order":1},{"name":"Settlement object","visible_in_sidebar":true,"page_title":"UPI Deeplinks settlement object","path":"settlement-object","order":3}]},{"name":"SDKs","visible_in_sidebar":true,"page_title":"UPI Deeplinks SDKs","path":"sdks","order":3},{"name":"Third party verification","visible_in_sidebar":true,"page_title":"UPI Deeplinks third party verification","path":"third-party-verification","order":3}]},{"name":"FASTag","path":"fastag","order":5,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"FASTag API reference","path":"api-reference","order":0}]},{"name":"Plural","path":"plural","order":6,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Plural - API reference","path":"api-reference","order":9},{"name":"Get started","visible_in_sidebar":true,"page_title":"Plural - Get started","path":"get-started","order":2,"children":[{"name":"FAQs","visible_in_sidebar":true,"page_title":"Plural - FAQs and Troubleshooting","path":"faqs-and-troubleshooting","order":6},{"name":"Hash generation","visible_in_sidebar":true,"page_title":"Plural - Hash generation","path":"hash-generation-logic","order":7},{"name":"Integration modes","visible_in_sidebar":true,"page_title":"Plural - Integration modes","path":"integration-modes","order":2,"children":[{"name":"EMI flow","visible_in_sidebar":true,"page_title":"Plural - EMI flow","path":"emi-flow","order":3},{"name":"iFrame","visible_in_sidebar":true,"page_title":"Plural - iFrame","path":"iframe","order":2},{"name":"Redirect integration","visible_in_sidebar":true,"page_title":"Plural - Redirect integration","path":"redirect-flow","order":4},{"name":"Seamless flow","visible_in_sidebar":true,"page_title":"Plural - Seamless flow","path":"seamless-flow","order":1}]},{"name":"List of codes","visible_in_sidebar":true,"page_title":"Plural - Wallet and Bank codes","path":"list-of-codes","order":4},{"name":"List of status","visible_in_sidebar":true,"page_title":"Plural - Order & Transaction status","path":"list-of-status","order":4},{"name":"Onboarding","visible_in_sidebar":true,"page_title":"Plural - Onboarding","path":"onboarding","order":3},{"name":"Setup","visible_in_sidebar":true,"page_title":"Plural - Setup","path":"setup","order":1},{"name":"Tokenisation","visible_in_sidebar":true,"page_title":"Plural - Tokenisation","path":"tokenisation","order":8}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Plural - Overview","path":"overview","order":1}]},{"name":"UPI Setu","path":"umap","order":7,"visible_in_sidebar":true,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"UPI Setu - API integration","path":"api-integration","order":2,"children":[{"name":"Aggregators","visible_in_sidebar":true,"page_title":"UPI Setu - API integration for aggregators","path":"aggregators","order":1},{"name":"Merchants","visible_in_sidebar":true,"page_title":"UPI Setu - API integration for merchants","path":"merchants","order":2}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"UPI Setu - API reference","path":"api-reference","order":8},{"name":"UPI mandates","visible_in_sidebar":true,"page_title":"UPI mandates","path":"mandates","order":4,"children":[{"name":"Mandate operations","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Mandate operations","path":"generic","order":5,"children":[{"name":"Pause","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Pause","path":"pause","order":3},{"name":"Revoke","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Revoke","path":"revoke","order":2},{"name":"Unpause","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Unpause","path":"unpause","order":4},{"name":"Update","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Update","path":"update","order":1}]},{"name":"OneShot","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - OneShot","path":"one-shot","order":1,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":4},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create One Time Mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute One Time Mandate","path":"execute","order":3},{"name":"Pre Debit Notify","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Send One Time Mandate Pre Debit Notification","path":"pre-debit-notify","order":2}]},{"name":"Recur","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Recur","path":"recur","order":3,"children":[{"name":"Check payment status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":4},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create recurring mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute mandate","path":"execute","order":3},{"name":"Pre Debit Notify","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Send Recurring Mandate Pre Debit Notification","path":"pre-debit-notify","order":2}]},{"name":"Reserve","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Reserve","path":"reserve","order":2,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":4},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create Reserve Mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute Reserve Mandate","path":"execute","order":3}]},{"name":"ReservePlus","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - ReservePlus","path":"reserve-plus","order":4,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Check payment status","path":"check-status","order":3},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Create single block multi-debit","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Mandates - Execute single block multi-debit","path":"execute","order":2}]}]},{"name":"Merchant on-boarding","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant onboarding","path":"merchant-onboarding","order":2,"children":[{"name":"Check VPA availability","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant on-boarding - Check VPA availability","path":"check-vpa-availability-api","order":2},{"name":"Setup a merchant","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant on-boarding - Setup merchant","path":"create-merchant-api","order":1},{"name":"Registering VPA","visible_in_sidebar":true,"page_title":"UPI Setu - Merchant on-boarding - Registering a VPA","path":"create-vpa-api","order":3}]},{"name":"Notifications and alerts","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts","path":"notifications","order":7,"children":[{"name":"VPA verification","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Customer VPA verification","path":"customer-vpa-verification","order":6},{"name":"Disputes","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Disputes","path":"disputes","order":5},{"name":"Mandates","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Mandates","path":"mandates","order":3,"children":[{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Creation of mandate","path":"create","order":1},{"name":"Execute","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Mandate execution","path":"execute","order":7},{"name":"Notify","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Mandate pre-debit notifications","path":"notify","order":6},{"name":"Pause","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Pausing mandate","path":"pause","order":4},{"name":"Revoke","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Revoking mandate","path":"revoke","order":3},{"name":"Unpause","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Unpausing mandate","path":"unpause","order":5},{"name":"Update","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Updating mandate","path":"update","order":2}]},{"name":"Payments","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Payments","path":"payments","order":2},{"name":"Refunds","visible_in_sidebar":true,"page_title":"UPI Setu - Notifications and alerts - Refunds","path":"refunds","order":4},{"name":"Verify signature","visible_in_sidebar":true,"page_title":"UMAP - Events and notifications","path":"verify-signature","order":1}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"UPI Setu - Overview","path":"overview","order":0},{"name":"UPI payments","visible_in_sidebar":true,"page_title":"UPI payments","path":"payments","order":3,"children":[{"name":"Collect","visible_in_sidebar":true,"page_title":"UPI payments - Collect","path":"collect","order":2,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu payments - Collect request - Check payment status","path":"check-status","order":3},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu payments - Create collect request","path":"create-collect-request","order":2},{"name":"Verify customer VPA","visible_in_sidebar":true,"page_title":"UPI Setu payments - Verify customer VPA","path":"verify-customer-vpa-api","order":1}]},{"name":"Flash","visible_in_sidebar":true,"page_title":"UPI payments - Flash","path":"flash","order":1,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu payments - Intent/QR - Check payment status","path":"check-status","order":2},{"name":"Dynamic QR","visible_in_sidebar":true,"page_title":"UPI Setu payments - Create Dynamic QR","path":"create-dqr","order":1},{"name":"Static QR","visible_in_sidebar":true,"page_title":"UPI Setu payments - Create Static QR","path":"create-sqr","order":1}]},{"name":"TPV","visible_in_sidebar":true,"page_title":"UPI payments - TPV","path":"tpv","order":3,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Payments - TPV - Check payment status","path":"check-status","order":2},{"name":"Create","visible_in_sidebar":true,"page_title":"UPI Setu - Payments - Create TPV API","path":"create-tpv","order":1},{"name":"Payments","visible_in_sidebar":true,"page_title":"UMAP - Notifications and alerts - Payments","path":"life-cycle","order":1}]}]},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"UPI Setu - Quickstart","path":"quickstart","order":1,"children":[{"name":"Aggregators","visible_in_sidebar":true,"page_title":"UPI Setu - Quickstart for aggregators","path":"aggregators","order":1},{"name":"Merchants","visible_in_sidebar":true,"page_title":"UPI Setu - Quickstart for merchants","path":"merchants","order":2}]},{"name":"Refunds and disputes","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes","path":"refunds-disputes","order":6,"children":[{"name":"Check refund status","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes - Check refund status API","path":"check-refund-status-api","order":2},{"name":"Create refund","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes - Create refund API","path":"create-refund-api","order":1},{"name":"Fetch dispute","visible_in_sidebar":true,"page_title":"UPI Setu - Refunds and disputes - Fetch dispute API","path":"fetch-dispute-api","order":3}]},{"name":"Transaction Monitoring","visible_in_sidebar":false,"page_title":"UPI Setu - Transaction Monitoring","path":"transaction-monitoring","order":5,"children":[{"name":"Check status","visible_in_sidebar":true,"page_title":"UPI Setu - Transaction monitoring - Check status API","path":"check-status-api","order":1},{"name":"Check status history","visible_in_sidebar":true,"page_title":"UPI Setu - Transaction monitoring - Check status sistory API","path":"check-status-history-api","order":2},{"name":"Fetch payment","visible_in_sidebar":true,"page_title":"UPI Setu - Transaction monitoring - Fetch payment API","path":"fetch-payment-api","order":3}]}]}]},{"name":"Data","path":"data","order":1,"visible_in_sidebar":true,"children":[{"name":"KYC","path":"kyc","order":0,"visible_in_sidebar":true,"children":[{"name":"Overview","visible_in_sidebar":true,"page_title":"Setu KYC Overview","path":"overview","order":1}]},{"name":"PAN verification","path":"pan","order":0,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"PAN verification API reference","path":"api-reference","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"PAN verification quickstart","path":"quickstart","order":0}]},{"name":"Aadhaar KYC","path":"okyc","order":1,"visible_in_sidebar":false,"children":[{"name":"Aadhaar Redundancy","visible_in_sidebar":true,"page_title":"Redundancy for Aadhaar OKYC","path":"aadhaar-redundancy","order":5,"children":[{"name":"API Integration","visible_in_sidebar":true,"page_title":"Aadhaar OKYC Redundancy API Integration","path":"api-integration","order":1}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"Offline Aadhar API reference","path":"api-reference","order":6},{"name":"Auto OKYC","visible_in_sidebar":true,"page_title":"Auto OKYC API integration","path":"auto-okyc-api-integration","order":4},{"name":"OKYC","visible_in_sidebar":true,"page_title":"OKYC API integration","path":"okyc-api-integration","order":3},{"name":"Overview","visible_in_sidebar":true,"page_title":"Offline Aadhar KYC overview","path":"overview","order":0},{"name":"Pre-built screens","visible_in_sidebar":true,"page_title":"Offline Aadhar pre-built screens","path":"pre-built-screens","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Offline Aadhar Quickstart","path":"quickstart","order":1}]},{"name":"Aadhaar eSign","path":"esign","order":2,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Aadhaar eSign API reference","path":"api-reference","order":8},{"name":"Error codes","visible_in_sidebar":true,"page_title":"Aadhaar eSign error codes","path":"error-codes","order":7},{"name":"eStamp overview","visible_in_sidebar":true,"page_title":"eStamp overview","path":"estamp","order":2},{"name":"Flexible eSign guide","visible_in_sidebar":true,"page_title":"Integration guide with flexible signature coordinates","path":"flexi-esign","order":4},{"name":"eSign Name Match","visible_in_sidebar":true,"page_title":"Aadhaar eSign Name Match","path":"name-match","order":6},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Aadhaar eSign Notifications","path":"notifications","order":5},{"name":"Overview","visible_in_sidebar":true,"page_title":"Aadhaar eSign overview","path":"overview","order":1},{"name":"Integration guide","visible_in_sidebar":true,"page_title":"Aadhaar eSign integration guide","path":"quickstart","order":3}]},{"name":"DigiLocker","path":"digilocker","order":3,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Digilocker API reference","path":"api-reference","order":3},{"name":"Error codes","visible_in_sidebar":true,"page_title":"DigiLocker error codes","path":"error-codes","order":4},{"name":"Overview","visible_in_sidebar":true,"page_title":"Digilocker overview","path":"overview","order":0},{"name":"Integration guide","visible_in_sidebar":true,"page_title":"Digilocker quickstart","path":"quickstart","order":1}]},{"name":"AA Gateway","path":"account-aggregator","order":4,"versions":["v1","v2"],"default_version":"v2","visible_in_sidebar":true,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"Account Aggregator API integration","path":"api-integration","order":3,"children":[{"name":"Account Availability","visible_in_sidebar":true,"page_title":"Account Aggregator Account Availability","path":"account-availability-apis","order":5},{"name":"Consent flow","visible_in_sidebar":true,"page_title":"Account Aggregator Consent flow","path":"consent-flow","order":1},{"name":"Data flow","visible_in_sidebar":true,"page_title":"Account Aggregator Data flow","path":"data-apis","order":2},{"name":"Active FIPs","visible_in_sidebar":true,"page_title":"Account Aggregator Active FIPs","path":"fip-apis","order":4},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Account Aggregator Notifications","path":"notifications","order":3}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"Account Aggregator API reference","path":"api-reference","order":10},{"name":"Consent object","visible_in_sidebar":true,"page_title":"Account Aggregator consent object","path":"consent-object","order":4},{"name":"Embed Setu screens","visible_in_sidebar":true,"page_title":"Account Aggregator Embed Setu screens","path":"embed-setu-aa","order":7},{"name":"FI data types","visible_in_sidebar":true,"page_title":"Account Aggregator FI data types","path":"fi-data-types","order":5},{"name":"Licenses and go live","visible_in_sidebar":true,"page_title":"Account Aggregator license and go live process","path":"licenses-and-go-live","order":8,"children":[{"name":"Go live","visible_in_sidebar":true,"page_title":"FIU go live process","path":"go-live","order":2},{"name":"Licenses","visible_in_sidebar":true,"page_title":"Licenses required to participate in AA","path":"licenses","order":1},{"name":"Participants in AA","visible_in_sidebar":true,"page_title":"Participants in AA","path":"participants-in-aa","order":0}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Account Aggregator overview","path":"overview","order":0},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Account Aggregator quickstart","path":"quickstart","order":1},{"path":"v1","children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"Account Aggregator API integration","path":"api-integration","order":3,"children":[{"name":"Consent flow","visible_in_sidebar":true,"page_title":"Account Aggregator Consent flow","path":"consent-flow","order":1},{"name":"Data flow","visible_in_sidebar":true,"page_title":"Account Aggregator Data flow","path":"data-apis","order":2},{"name":"Active FIPs","visible_in_sidebar":true,"page_title":"Account Aggregator Active FIPs","path":"fip-apis","order":4},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Account Aggregator Notifications","path":"notifications","order":3}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"Account Aggregator API reference","path":"api-reference","order":10},{"name":"Consent object","visible_in_sidebar":true,"page_title":"Account Aggregator Consent object","path":"consent-object","order":4},{"name":"Embed Setu screens","visible_in_sidebar":true,"page_title":"Account Aggregator Embed Setu screens","path":"embed-setu-aa","order":7},{"name":"End-to-end encryption","visible_in_sidebar":false,"page_title":"Account Aggregator End-to-end encryption","path":"encryption","order":1},{"name":"FI data types","visible_in_sidebar":true,"page_title":"Account Aggregator FI data types","path":"fi-data-types","order":5},{"name":"Get started","visible_in_sidebar":false,"page_title":"Account Aggregator getting started","path":"get-started","order":0},{"name":"Licenses and go live","visible_in_sidebar":true,"page_title":"Account Aggregator license and go live process","path":"licenses-and-go-live","order":8,"children":[{"name":"Go live","visible_in_sidebar":true,"page_title":"FIU go live process","path":"go-live","order":2},{"name":"Licenses","visible_in_sidebar":true,"page_title":"Licenses required to participate in AA","path":"licenses","order":1},{"name":"Participants in AA","visible_in_sidebar":true,"page_title":"Participants in AA","path":"participants-in-aa","order":0}]},{"name":"Migration guide","visible_in_sidebar":true,"page_title":"Account Aggregator Migration Guide","path":"migration-guide","order":6,"children":[{"name":"Consent flow","visible_in_sidebar":true,"page_title":"Account Aggregator Consent flow","path":"consent-flow","order":1},{"name":"Data flow","visible_in_sidebar":true,"page_title":"Account Aggregator Data flow","path":"data-flow","order":2},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Account Aggregator Notifications","path":"notifications","order":3}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Account Aggregator overview","path":"overview","order":0},{"name":"Postman integration","visible_in_sidebar":true,"page_title":"Account Aggregator Postman integration","path":"postman","order":2},{"name":"Quickstart","visible_in_sidebar":false,"page_title":"Account Aggregator quickstart","path":"quickstart-v1","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Account Aggregator quickstart","path":"quickstart","order":1},{"name":"Request signing","visible_in_sidebar":false,"page_title":"Account Aggregator Request signing","path":"request-signing","order":1}]}]},{"name":"Bank account verification","path":"bav","order":5,"visible_in_sidebar":false,"children":[{"name":"Penny drop","visible_in_sidebar":true,"page_title":"BAV using penny drop","path":"penny-drop","order":1,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"BAV API integration","path":"api-integration","order":1,"children":[{"name":"Async API","visible_in_sidebar":true,"page_title":"BAV Async API integration","path":"async","order":2},{"path":"bav-codes"},{"name":"Sync API","visible_in_sidebar":true,"page_title":"BAV Sync API integration","path":"sync","order":1}]},{"name":"API reference","visible_in_sidebar":true,"page_title":"BAV API reference","path":"api-reference","order":3},{"name":"Notifications","visible_in_sidebar":true,"page_title":"BAV Async Penny drop Notifications","path":"notifications","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BAV quickstart","path":"quickstart","order":0}]},{"name":"Penny drop + PennyLess","visible_in_sidebar":true,"page_title":"Bank account verification using Penny drop + PennyLess","path":"pennydrop-pennyless","order":2,"children":[{"name":"API Integration","visible_in_sidebar":true,"page_title":"Penny drop + PennyLess API Integration","path":"api-integration","order":1},{"name":"API reference","visible_in_sidebar":true,"page_title":"Pennydrop-pennyless API reference","path":"api-reference","order":3},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Penny drop + PennyLess Notifications","path":"notifications","order":2}]},{"name":"PennyLess Drop","visible_in_sidebar":true,"page_title":"BAV using PennyLess Drop API","path":"pennyless-drop","order":4,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"BAV Pennyless API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Quickstart for PennyLess drop API","path":"quickstart","order":1}]},{"name":"Reverse Penny drop","visible_in_sidebar":true,"page_title":"BAV using reverse penny drop","path":"reverse-penny-drop","order":3,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"RPD API integration","path":"api-integration","order":2},{"name":"API reference","visible_in_sidebar":true,"page_title":"BAV RPD API reference","path":"api-reference","order":4},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Quickstart for reverse penny drop","path":"quickstart","order":1},{"name":"Webhook Auth","visible_in_sidebar":true,"page_title":"Webhook Authentication","path":"webhook-authentication","order":3}]}]},{"name":"Insights","path":"insights","order":5,"visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Setu Insights API reference","path":"api-reference","order":4},{"name":"List of insights","visible_in_sidebar":true,"page_title":"All Setu insights","path":"insights","order":2},{"name":"Notifications","visible_in_sidebar":true,"page_title":"Setu Insights notifications","path":"notifications","order":3},{"name":"Overview","visible_in_sidebar":true,"page_title":"Setu Insights overview","path":"overview","order":0},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Setu Insights quickstart","path":"quickstart","order":1,"children":[{"name":"API integration","visible_in_sidebar":true,"page_title":"Setu Insights Postman integration","path":"api-integration","order":1},{"name":"Postman integration","visible_in_sidebar":true,"page_title":"Setu Insights Postman integration","path":"postman","order":0}]}]},{"name":"GST verification","path":"gst","order":6,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"GSTIN verification API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"GST Verification quickstart","path":"quickstart","order":1}]},{"name":"Match APIs","path":"match-apis","order":7,"visible_in_sidebar":false,"children":[{"name":"Name match","visible_in_sidebar":true,"page_title":"Name match APIs","path":"name-match","order":1,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Name Match API reference","path":"api-reference","order":4},{"name":"Examples","visible_in_sidebar":true,"page_title":"Name Match API response examples","path":"examples","order":3},{"name":"Overview","visible_in_sidebar":true,"page_title":"Name Match API overview","path":"overview","order":1},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Name Match API quickstart","path":"quickstart","order":2}]}]},{"name":"eKYC","path":"ekyc","order":8,"visible_in_sidebar":false,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"eKYC API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"PAN verification quickstart","path":"quickstart","order":1}]}]},{"name":"Dev tools","path":"dev-tools","order":4,"visible_in_sidebar":true,"children":[{"name":"The Bridge","path":"bridge","order":0,"visible_in_sidebar":true,"children":[{"name":"Bridge configuration","visible_in_sidebar":false,"page_title":"Bridge configuration","path":"configure","order":6},{"name":"Generate Token","visible_in_sidebar":false,"page_title":"Bridge generate token","path":"generate-token","order":4},{"name":"Org settings","visible_in_sidebar":true,"page_title":"Bridge org settings","path":"org-settings","order":3,"children":[{"name":"API keys","visible_in_sidebar":true,"page_title":"API keys","path":"api-keys","order":2,"children":[{"name":"JWT Auth","visible_in_sidebar":false,"page_title":"JWT Auth","path":"jwt-auth","order":3},{"name":"JWT","visible_in_sidebar":true,"page_title":"JWT","path":"jwt","order":1},{"name":"OAuth","visible_in_sidebar":true,"page_title":"OAuth","path":"oauth","order":2}]},{"name":"People","visible_in_sidebar":true,"page_title":"People","path":"people","order":1}]},{"name":"Overview","visible_in_sidebar":true,"page_title":"Bridge overview","path":"overview","order":0},{"name":"Reports","visible_in_sidebar":true,"page_title":"Bridge reports","path":"reports","order":1,"children":[{"name":"Types","visible_in_sidebar":false,"page_title":"Report types","path":"types","order":1}]},{"name":"Reports API","visible_in_sidebar":false,"page_title":"Reports API","path":"reports-api","order":5}]}]},{"name":"Sample Category","path":"sample-category","order":5,"visible_in_sidebar":false,"children":[{"name":"Sample Product","path":"sample-product","order":0,"visible_in_sidebar":false,"children":[{"name":"Sample Page","visible_in_sidebar":false,"page_title":"Docs sample page","path":"sample-page","order":0}]}]}]}
\ No newline at end of file
diff --git a/content/payments/billpay/v1/api-integration.mdx b/content/payments/billpay/v1/api-integration.mdx
new file mode 100644
index 00000000..aa023b9b
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration.mdx
@@ -0,0 +1,7 @@
+---
+sidebar_title: API integration
+page_title: BBPS Billpay API integration
+order: 1
+visible_in_sidebar: true
+---
+
diff --git a/content/payments/billpay/v1/api-integration/api-reference.mdx b/content/payments/billpay/v1/api-integration/api-reference.mdx
new file mode 100644
index 00000000..6cb3e2de
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/api-reference.mdx
@@ -0,0 +1,6 @@
+---
+sidebar_title: API reference
+page_title: COU Direct Connectivity API reference
+order: 5
+visible_in_sidebar: true
+---
diff --git a/content/payments/billpay/v1/api-integration/apis.mdx b/content/payments/billpay/v1/api-integration/apis.mdx
new file mode 100644
index 00000000..5790ca29
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/apis.mdx
@@ -0,0 +1,317 @@
+---
+sidebar_title: List of APIs
+page_title: BBPS COU — List of APIs
+order: 2
+visible_in_sidebar: true
+---
+
+# Quickstart—API integration
+
+Below is a quick summary of the APIs you need to start integrating with for testing out the BBPS COU product.
+
+The primary actions you will take as an agent of the BBPS system, is to let your customers fetch bills from any business listed on BBPS, and let them pay said business.
+
+For this, the core `fetch`, `pay` and `dispute` APIs are asynchronous. Each API has a `request` endpoint and a `response` endpoint. The `request` endpoint registers the call and the `response` endpoint is used to retrieve the status of the registered call.
+
+
+
+### Fetch bill
+
+The Fetch bill API with endpoint `/bbps/bills/fetch/request` is used to get bill details for a customer. You need to pass the details of the customer and also the business they want to fetch their bill from.
+
+For e.g., if your customer wants to pay their phone bill for Vodafone Postpaid, you will need to provide—
+
+
+ -
+
the customer’s identifier (mobile number in this case)
+
+ -
+
the business’s identifier (BBPS ID for Vodafone, in this case)
+
+
+
+
+
+
+
+ Detailed sample request body
+
+
+ {`
+ {
+ "customer": {
+ "mobile": "9505987798",
+ "billParameters": [
+ {
+ "name": "Parameter 1",
+ "value": "Value 1"
+ },
+ {
+ "name": "Parameter 2",
+ "value": "Value 2"
+ },
+ {
+ "name": "Parameter 3",
+ "value": "Value 3"
+ }
+ ]
+ },
+ "agent": {
+ "app": "SmartPay",
+ "channel": "INT",
+ "geocode": "19.0139,72.8254",
+ "id": "AX01AI06512391457204",
+ "ifsc": "ICIC0000152",
+ "imei": "123456789012345",
+ "ip": "124.170.23.24",
+ "mac": "48-4D-7E-CB-DB-6F",
+ "mobile": "9481773011",
+ "os": "iOS",
+ "postalCode": "600001",
+ "terminalId": "6000011234"
+ },
+ "biller": {
+ "id": "VODA00000MUM03"
+ }
+ }
+ `}
+
+
+
+
+
+You get a `refId` in the response, a unique identifier that can be further used to check the status of the bill fetch.
+
+{`
+{
+ "data": {
+ "refId": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689",
+ },
+ "success": true,
+ "error": null
+}
+`}
+
+You may also use the `/bbps/bills/fetch/response` endpoint with above `refId` to check status of the bill fetch—
+
+{`
+{
+ "refId": "LNMSQQR4RKT7X1UGPY7JGUV454PL9T2C689"
+}
+`}
+
+In the response you either get the bill details, or “Processing” status if the bill fetch is still in progress.
+
+
+
+
+
+ Sample response
+
+
+ {`
+ {
+ "data": {
+ "additionalInfo": [
+ {
+ "name": "Distributor Contact",
+ "value": "Cockatoojelly"
+ },
+ {
+ "name": "Distributor Name",
+ "value": "Frightstripe"
+ },
+ {
+ "name": "Consumer Number",
+ "value": "105"
+ },
+ {
+ "name": "Consumer Address",
+ "value": "Samuraipsychadelic"
+ }
+ ],
+ "bill": { // optional - selective present for SINGLE billers
+ "amount": 300000,
+ "billDate": "2021-09-13",
+ "billNumber": "8394852342371080869",
+ "billPeriod": "Monthly",
+ "customerName": "William Miller",
+ "dueDate": "2021-09-26",
+ "paymentOptions": [
+ {
+ "name": "3 month EMI",
+ "amount": 900000,
+ "minAmount": 300000,
+ "maxAmount": 1500000,
+ "amountMultiple": 10000
+ },
+ {
+ "name": "6 month EMI",
+ "amount": 1800000,
+ "minAmount": 600000,
+ "maxAmount": 3000000,
+ "amountMultiple": 10000
+ }
+ ]
+ },
+ "billerResponseType": "SINGLE",
+ "billerSelectionType": null,
+ "billerRefId": "4047076513",
+ "exactness": "Exact",
+ "paymentLimits": [
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "Internet Banking",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "Debit Card",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "Credit Card",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "Prepaid Card",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "IMPS",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 4999900,
+ "minLimit": 100,
+ "paymentMode": "Cash",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "UPI",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "Wallet",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "NEFT",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "AEPS",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 20000000,
+ "minLimit": 100,
+ "paymentMode": "Account Transfer",
+ "supportsPendingStatus": false
+ }
+ ],
+ "refId": "C51JQ9ED608P36RN28GGM9L63RN12591837",
+ "status": "Success"
+ },
+ "success": true,
+ "traceId": "C51JQCUD608P36RN28H0"
+ }
+ `}
+
+
+
+
+
+
+
+
+### Pay bill
+
+The Pay bill API is used to send details of a payment done by a user on your app/website to Setu. Setu uses this information to confirm payment with the biller.
+
+
+
+### Raise dispute
+
+The Raise Dispute API is used to Raise a compliant for a payment done by a user on your app/website to Setu. Setu uses this information and raises a compliant on the BBPS Platform.
+
+
+
+### List data in bulk
+
+For your convenience, Setu also provides actions to list data in bulk, that can come in handy for keeping your systems up to date with the latest data. The following APIs are available—
+
+-
+ List categories
+
+ —lists all categories on BBPS.
+-
+ List billers
+
+ —lists all billers on BBPS.
+-
+ List disputes
+
+ —lists all the raised disputes using the
+ Dispute API
+ .
+-
+ List fetched Bills
+
+ —lists all the fetched bills that were fetched using
+ Fetch API
+ .
+-
+ List paid bills
+
+ —lists all the bill pay transactions paid using
+ Pay API
+ .
+
+
+
+### Check server health
+
+The health check API tells you the health of the Setu BillPay server.
+
+Aside from the above, there are other APIs which are also vital for a complete customer payment experience. See the full API reference for more details.
diff --git a/content/payments/billpay/v1/api-integration/deprecated.mdx b/content/payments/billpay/v1/api-integration/deprecated.mdx
new file mode 100644
index 00000000..48db5021
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/deprecated.mdx
@@ -0,0 +1,164 @@
+---
+sidebar_title: Deprecated APIs
+page_title: BBPS COU — API integration (deprecated)
+order: 4
+visible_in_sidebar: false
+---
+
+## API integration
+
+
+ This set of APIs has been deprecated. It is recommended to use{" "}
+ these APIs instead.
+
+
+
+Setu BillPay allows you to register as an agent on the BBPS network and enable BBPS bill payments on your app or website. All approvals are done by Setu, our bank partner and BBPS.
+
+This page covers how you can integrate with our APIs, develop corresponding screen flows and go live with BBPS payments.
+
+
+
+### How to integrate
+
+
+ Use provided{" "}
+
+ API reference
+ {" "}
+ to start integration. Request for a detailed API run through from Setu team,
+ if needed. Contact us at{" "}
+
+ Setu Support
+
+ , should you need any help during integration.
+
+
+A summary of the integration process—
+
+1. Get UAT credentials and start integration
+2. Share screens for NPCI approval
+3. Run and submit test cases
+4. Submit details for agent ID creation
+5. Get production credentials and go live
+
+Each of these steps are described in detail below.
+
+
+ Look at the{" "}
+
+ polling mechanism
+ {" "}
+ that should be implemented to correctly retrieve API results.
+
+
+
+
+#### Step 1 — Get UAT credentials and start integration
+
+UAT credentials are issued after Setu and the bank complete evaluation of your agent application. Using the UAT credentials you can access the Mock / UAT environments.
+
+
+ Use the mock and UAT environment to test your implementation end to end with
+ sample data.{" "}
+
+
+##### Mock environment
+
+The mock environment is provided by Setu to mimic all error codes you would encounter in the live environment, so that you can get a consistent experience while doing development. Use the integration process outlined here.
+
+##### UAT environment
+
+The UAT environment is a fully integrated environment involving Setu, the bank, BBPS UAT & biller systems.
+
+
+ There is a small chance that the all components may not have uptime since it
+ is UAT.
+
+
+
+
+#### Step 2 — Share screens for NPCI approval
+
+The screens you build as part of your app needs to conform to BBPS guidelines. You should submit a document with screenshots for the following screens—
+
+- **Category list screen**, on which all BBPS categories are listed.
+- **Biller list screen**, on which all billers under a selected category are listed.
+- **Customer input screen**, where a customer enters identifiers specific to a selected biller, before their bill can be fetched.
+- **Payment confirmation screen**, on which the customer confirms bill amount and proceeds with payment.
+- **Payment status screen**, when payment is being processed and is finally either successful or failed.
+- **Confirmation SMS**, this is the text that is sent after a payment is successful or failed.
+- **Bill receipt screen**, through which a customer can view and download receipt for a successful transaction.
+- **Raise complaint screen**, where a customer can raise complaint. Complaints are raised against specific transaction IDs.
+- **Complaint status screen**, where a customer can see the latest status associated with registered complaint.
+
+
+ You may use the BBPS logo and branding guidelines provided{" "}
+
+ here
+
+ .{" "}
+
+
+
+
+
+ Here is a{" "}
+
+ BBPS-compliant UX flow
+ {" "}
+ and a quick summary of BBPS guidelines to keep in mind—,
+
+
+- The app / website UI must contain a button for “Pay bills” with the BBPS logo shown.
+- BBPS logo must be present on top right corner of all screens used by customer during search of biller or bill and also for screens relating to payment of bill.
+- BBPS assured logo must always be shown on the payment sucessful and payment receipt pages. The regular BBPS logo can be removed from these.
+
+
+
+#### Step 3 — Run and submit test cases
+
+Run test cases mentioned in this document and submit documented results using a copy of the provided file. The results will verified by Setu and the bank to generate production credentials.
+
+
+ Postman logs not considered valid. Share results only once screen
+ integration is complete.{" "}
+
+
+
+
+#### Step 4 — Submit details for agent ID creation
+
+To operate on BBPS as an agent you need to create an agent ID. You need to submit details in a format specified by Setu, and you will get agent ID corresponding to one of the following agent categories—
+
+- Internet banking
+- Internet application
+- Mobile banking
+- Mobile application
+- Business correspondent
+- Bank branch
+- ATM
+- Kiosk
+- Offline agent
+
+
+ If you wish to support any offline collections, you will need to create
+ agent IDs for all your offline collection points.
+
+
+
+
+#### Step 5 — Get Production credentials and go live
+
+You will receive production credentials once all the approvals and agreements are done. On receiving the production credentials, you can verify your integration and go live.
+
+
diff --git a/content/payments/billpay/v1/api-integration/deprecated/mock-environment.mdx b/content/payments/billpay/v1/api-integration/deprecated/mock-environment.mdx
new file mode 100644
index 00000000..d42c79a5
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/deprecated/mock-environment.mdx
@@ -0,0 +1,535 @@
+---
+sidebar_title: Mock environment
+page_title: BBPS Billpay Mock environment
+order: 2
+visible_in_sidebar: false
+---
+
+## BillPay APIs — Mock environment
+
+This set of APIs has been deprecated. It is recommended to use these APIs instead.
+
+
+BillPay Sandbox API supports both Mock and UAT environments.
+
+UAT in BillPay’s context, refers to the entire API lifecycle where Setu connects to both Axis and NPCI’s UAT Servers.
+
+On the other hand, Mock is a simulated environment where Setu handles everything and is independent of both NPCI and Axis. Multiple mock APIs are defined so that you can integrate predictably.
+
+You can change the environment from UAT to Mock by changing the endpoint as below
+
+
+ {`UAT - https://sandbox.cou.setu.co/api/bills/uat/biller-categories
+MOCK - https://sandbox.cou.setu.co/api/bills/mock/biller-categories`}
+
+
+The mock environment has been set up to mimic the actual process, so you’ll often see there’s a delay of about 30 secs until the bill is populated (until that time you’ll be shown ERR000). Also we have simulated cases where you’d see billers being down or giving timeout related errors.
+
+
+
+## List of APIs
+
+
+
+##### Get all biller categories
+
+Use the Get categories API to get a list of all categories on BBPS.
+
+
+ {`Method - GET
+Endpoint - https://sandbox.cou.setu.co/api/bills/mock/biller-categories
+Request Body - None
+`}
+
+
+
+
+In production, presently there are 23 categories in total. The following categories are supported in the mock environment—
+
+
+
+ Category |
+ Category Code |
+
+
+ Electricity |
+ 1 |
+
+
+ Mobile Postpaid |
+ 6 |
+
+
+ Landline Postpaid |
+ 7 |
+
+
+ Water |
+ 8 |
+
+
+ DTH |
+ 9 |
+
+
+ Loan Repayment |
+ 12 |
+
+
+ Fastag |
+ 13 |
+
+
+
+
+
+##### Get biller list for a category
+
+Use the Get biller list API to get all billers for a particular category by providing the category code.
+
+
+ {`Method - GET
+Method - POST
+Endpoint - https://sandbox.cou.setu.co/api/bills/mock/biller-list
+Request Body -
+ {
+ "categoryCode":"1"
+ }`}
+
+
+
+
+
+You can also pass following parameters to the API—
+
+
+
+ Parameter |
+ Description |
+
+
+
+ limit
+ |
+
+ Limit the number of billers you get in the result, to use for pagination
+ |
+
+
+
+ offset
+ |
+
+ Number of values to skip. Value = (Offset x Limit). The resulting list
+ will show from (Offset x Limit) till (Offset x Limit) + Limit
+ |
+
+
+
+ search
+ |
+ Search biller code or name by passing a string value. |
+
+
+
+
+
+##### Get biller details
+
+Use the Get biller details API to—
+
+- get the inputs required by the biller to fetch a bill
+- get details on biller’s availability for payment
+- to get the list of validations used by biller to qualify a payment attempt
+- and more...
+
+
+ {`Method - POST
+Endpoint - https://sandbox.cou.setu.co/api/bills/mock/biller-details
+Request Body -
+ {
+ "billerId": "MAHI00000NATIC",
+ "categoryCode": "12"
+ }`}
+
+
+You can use the following combinations in the mock environment—
+
+
+
+ Biller Id |
+ Category Code |
+
+
+ NDMC00000DEL02 |
+ 1 |
+
+
+ BESCOM000KAR01 |
+ 1 |
+
+
+ AVVNL0000RAJ01 |
+ 1 |
+
+
+ APDCL0000ASM01 |
+ 1 |
+
+
+ SBPDCL000BHI01 |
+ 1 |
+
+
+ SKPR00000SIK01 |
+ 1 |
+
+
+ WESCO0000ODI01 |
+ 1 |
+
+
+ BSESRAJPLDEL01 |
+ 1 |
+
+
+ JIO000000NAT01 |
+ 6 |
+
+
+ ATLLI0000NAT02 |
+ 7 |
+
+
+ JALK00000UTP0P |
+ 8 |
+
+
+ AIRT00000NAT87 |
+ 9 |
+
+
+ MAHI00000NATIC |
+ 12 |
+
+
+ AXIS00000NATSN |
+ 13 |
+
+
+
+
+
+##### Get biller fields
+
+Use the Get biller fields API to list all input fields needed by a biller to do a bill fetch from biller system. The response to this API is a subset of the Get biller details API.
+
+
+{`Method - POST
+Endpoint - https://sandbox.cou.setu.co/api/bills/mock/biller-fields
+Request Body -
+ {
+ "billerId": "MAHI00000NATIC",
+ "categoryCode": "12"
+ }
+`}
+
+
+
+You can use the following combinations in the mock environment—
+
+
+
+
+
+ Biller Id |
+ Category Code |
+
+
+ NDMC00000DEL02 |
+ 1 |
+
+
+ BESCOM000KAR01 |
+ 1 |
+
+
+ AVVNL0000RAJ01 |
+ 1 |
+
+
+ APDCL0000ASM01 |
+ 1 |
+
+
+ SBPDCL000BHI01 |
+ 1 |
+
+
+ SKPR00000SIK01 |
+ 1 |
+
+
+ WESCO0000ODI01 |
+ 1 |
+
+
+ BSESRAJPLDEL01 |
+ 1 |
+
+
+ JIO000000NAT01 |
+ 6 |
+
+
+ ATLLI0000NAT02 |
+ 7 |
+
+
+ JALK00000UTP0P |
+ 8 |
+
+
+ AIRT00000NAT87 |
+ 9 |
+
+
+ MAHI00000NATIC |
+ 12 |
+
+
+ AXIS00000NATSN |
+ 13 |
+
+
+
+
+
+##### Bill fetch and payment
+
+Use the Register for bill fetch API to pass on details that you have collected from your customer. These are the details required to do a bill fetch from the biller’s system.
+
+
+{`Method - POST
+Method - POST
+Endpoint - https://sandbox.cou.setu.co/api/bills/mock/bill-fetch-request
+Request Body -
+ {
+ "agent": {
+ ** Please Find Values Below In Agent Ids Section **
+ },
+ "mobileNumber": "9192990013",
+ "billerId": "Example Biller Id from below examples",
+ "categoryCode": "Example Category Code from below examples",
+ "customerParams": [
+ {
+ "name": "Example Name from below examples",
+ "value": "Example Value from below examples"
+ }
+ ]
+ }
+`}
+
+
+
+The mock environment has support for creating different error scenarios. You can call the Bill fetch API with the data that has been provided below to create various error scenarios.
+
+Follow these steps—
+
+1. Call the `Register for bill fetch API` with sample data given under each error scenario described below
+2. Use the `context` you get in the response from the `Register for bill fetch API` response for the next API called described in below errors.
+ Verify that you get the expected error and repeat above steps with data provided under other error scenarions.
+
+
+
+###### Error scenario 1 — Biller down
+
+The below data, when used in the `Register for bill fetch API` will always give **biller down** error (BFR008) when you call the Get fetched bill API.
+
+
+ {`"billerId": "AVVNL0000RAJ01",
+ "categoryCode": "1",
+ "customerParams": [
+ {
+ "name": "K Number",
+ "value": "100"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 2 — BOU Timeout
+
+The below data, when used in `Register for bill fetch API` will always give **BOU timeout** error when you call the Get fetched bill API.
+
+
+ {`"billerId": "APDCL0000ASM01",
+ "categoryCode": "1",
+ "customerParams": [
+ {
+ "name": "Consumer ID",
+ "value": "100"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 3 — Backside connection error
+
+The below data, when used in the `Register for bill fetch API` will always give **backside connection error** when you call the Get fetched bill API.
+
+This can occur for any API in production
+
+
+
+
+ {`"billerId": "SBPDCL000BHI01",
+ "categoryCode": "1",
+ "customerParams": [
+ {
+ "name": "CA Number",
+ "value": "10085"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 4 — Non JSON error
+
+The below data, when used in the `Register for bill fetch API` will always give **non JSON error** when you call the Get fetched bill API
+
+This can occur for any API in production
+
+
+
+
+ {`"billerId": "SKPR00000SIK01",
+ "categoryCode": "1",
+ "customerParams": [
+ {
+ "name": "Contract Acc Number",
+ "value": "10085"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 5 — Too many requests error
+
+The below data, when used in the `Register for bill fetch API` will always give **too many requests error** when you call the Get fetched bill API.
+
+This can occur for any API in production
+
+
+
+ {`"billerId": "WESCO0000ODI01",
+ "categoryCode": "1",
+ "customerParams": [
+ {
+ "name": "Consumer Number",
+ "value": "10085"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 6 — Technical error
+
+The below data, when used in the `Register for bill fetch API` will always give **technical error** when you call the Get fetched bill API.
+
+This can occur for any API in production
+
+
+
+
+ {`"billerId": "BSESRAJPLDEL01",
+ "categoryCode": "1",
+ "customerParams": [
+ {
+ "name": "CA Number",
+ "value": "10085"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 7 — Mandatory tag(s) not present
+
+The below data, when used in the `Register for bill fetch API` will give **Mandatory tag(s) not present** error when you call the Get fetched bill API.
+
+
+ {`"billerId": "MAHI00000NATKR",
+ "categoryCode": "12",
+ "customerParams": [
+ {
+ "name": "Loan Account Number",
+ "value": "3523122"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 8 — Client code regex validation failure
+
+The below data, when used in the `Register for bill fetch API` will give **client code regex validation failure** error when you call the Get fetched bill API
+
+
+ {`"billerId": "MAHI00000NATKR",
+ "categoryCode": "12",
+ "customerParams": [
+ {
+ "name": "Loan Account Number",
+ "value": "10001"
+ },{
+ "name": "Mobile or Vehicle Registration Number",
+ "value": "2121"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 9 — Failed payment due to techincal decline
+
+The below data, when used in the `Register for bill fetch API` will always give a **technical decline** when you call the Make payment API.
+
+In the mock environment, the technical decline happens with a probablility of 80% and will work 20% of the time. This is helpful for you to build a retry logic.
+
+
+ {`"billerId": "MAHI00000NATIC",
+ "categoryCode": "12",
+ "customerParams": [
+ {
+ "name": "Loan Number",
+ "value": "10805"
+ }
+ ]`}
+
+
+
+
+###### Error scenario 10 — Failed payment due to business decline{" "}
+
+The below data, when used in the `Register for bill fetch API` will give `data.status`, ie, payment status as `Cancelled` when you call the Get payment status API.
+
+
+ {`"billerId": "MAHI00000NATIC",
+ "categoryCode": "12",
+ "customerParams": [
+ {
+ "name": "Loan Number",
+ "value": "10505"
+ }
+ ]`}
+
+
+
+
+
diff --git a/content/payments/billpay/v1/api-integration/deprecated/polling.mdx b/content/payments/billpay/v1/api-integration/deprecated/polling.mdx
new file mode 100644
index 00000000..a536c278
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/deprecated/polling.mdx
@@ -0,0 +1,114 @@
+---
+sidebar_title: Polling
+page_title: BBPS Billpay polling
+order: 2
+visible_in_sidebar: false
+---
+
+## API Polling
+
+
+ This set of APIs has been deprecated. It is recommended to use{" "}
+ these APIs instead.
+
+
+
+BillPay COU APIs are asynchronous and require a polling mechanism to retrieve results. The duration for the intervals between polling and end states are documented below.
+
+
+ We strongly recommend using a persistent queue like RabbitMQ to process
+ these APIs.
+
+
+
+
+### Flowchart for polling logic
+
+These APIs are mandatory to consume, and asynchronous and dependent on each other. The APIs that require polling logic—
+
+
+
+ Bill fetch APIs
+
+ bill-fetch-request
and get-fetched-bill
+
+
+ Bill payment APIs
+
+ make-payment
and get-payment-status
+
+
+
+
+
+
+
+
+
+### Bill fetch APIs
+
+The Bill Fetch APIs are used to retrieve outstanding bills from a biller. These are the `bill-fetch-request` and `get-fetched-bill` APIs.
+
+The `context` from the response for `bill-fetch-request` has to be passed as the request for `get-fetched-bill`.
+
+The `get-fetched-bill` API must be called 5 secs after a successful `bill-fetch-request`—
+
+- If the `fetchAPIStatus`, from response of `get-fetched-bill`, is `Acknowledged` it means that the request is still processing. You'll need to re-hit the `get-fetched-bill` with the same context again after 5 secs and wait for `fetchAPIStatus` to become `Active`.
+- If the `fetchAPIStatus` does not become `Active` after retrying the same for 1 minute you can terminate the bill fetch and display an error.
+
+
+ If either bill-fetch-request
or get-fetched-bill
{" "}
+ has an error/timeout and does NOT give a response, you can retry the APIs
+ with the same request body.
+
+
+
+If `fetchAPIStatus`, from `get-fetched-bill` response is—
+
+- `Acknowledged`—The request is still processing. Retry after 5 secs.
+- `Cancelled`—The request has finished processing but there was an error. You can display the provided error message.
+- `Rejected`—The request finished processing but there was an error. You can display the provided error message.
+- `Active`—The request has finished processing successfully. You can display the bill and redirect the user to payment screens.
+
+
+
+### Make payment APIs
+
+The `make-payment` and `get-payment-status` APIs are used to complete payment for outstanding bills of a biller.
+
+The `context` from the response of `get-fetched-bill` has to be passed as the request for `make-payment`. Similarly, `context` from the response of `make-payment` has to be passed as the request for `get-payment-status`.
+
+The `get-payment-status` API must be called 5 secs after a successful `make-payment` call—
+
+- If the status from the response of `get-payment-status` is `Execution Awaited` it means the request is still processing. You'll need to re-hit `get-payment-status` with the same context again after 5 secs and wait for status to become `Settled` or `Cancelled` or `Rejected`.
+- If the `status` does not go into an end state after retrying the same for 5 minutes, you can retry the `get-payment-status` with the same context again once every 5 minutes till it goes to an end state.
+ If the end state is not `Settled` or `Cancelled` or `Rejected` even after 1 day, please contact us at Setu Support.
+
+
+ If the make-payment
API errors/timeouts and does NOT give a
+ response you can pass the context
used in the{" "}
+ make-payment
request body as the context
for{" "}
+ get-payment-status
request.
+
+
+ This will help you identify if the payment in question has been registered with
+ the BBPS system.
+
+
+
+
+
+ Never call the make-payment
API multiple times for the same
+ context as it may result in your account getting debitted multiple times.
+
+
+
+
+If the `get-payment-status` API errors/times out and does not give a response you can retry with the same request body.
+
+If `status`, obtained in the response of `get-payment-status` is—
+
+- `Execution Awaited`—The request is still processing. Please retry after 5 secs.
+- `Cancelled`—The request has finished processing but there was an error. You can display the provided error message.
+- `Rejected`—The request has finished processing but there was an error. You can display the provided error message.
+- `Settled`—The request has finished processing successfully. You can display the receipt for your user.
diff --git a/content/payments/billpay/v1/api-integration/objects.mdx b/content/payments/billpay/v1/api-integration/objects.mdx
new file mode 100644
index 00000000..a6915d07
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/objects.mdx
@@ -0,0 +1,553 @@
+---
+sidebar_title: Objects
+page_title: BBPS COU — Objects
+order: 3
+visible_in_sidebar: true
+---
+
+## Payment Channel
+
+This is the initiating payment channel.
+
+| type | description |
+| ---------- | ---------------------- |
+| `INT` | Internet Portal |
+| `INTB` | Internet Banking |
+| `MOB` | Mobile Application |
+| `BNKBRNCH` | Bank Branch |
+| `BSC` | Business correspondent |
+| `AGT` | Offline Agent |
+| `KIOSK` | KIOSK |
+| `ATM` | ATM |
+| `MOBB` | Mobile Banking |
+| `POS` | POS |
+| `MPOS` | MPOS |
+
+## Payment Mode
+
+Payment modes supported by a biller.
+
+| type |
+| ---------------- |
+| Cash |
+| Internet Banking |
+| Credit Card |
+| Debit Card |
+| Prepaid Card |
+| IMPS |
+| NEFT |
+| UPI |
+| Wallet |
+| AEPS |
+| Account Transfer |
+| Bharat QR |
+| USSD |
+
+## State and City mapping
+
+[Click here ↗](https://docs.google.com/spreadsheets/d/18LYdPbEw5JCB-bOp3gacbV6xUeHun_gBxbLeGxBuhK8/edit?usp=sharing) for State and City Biller Coverage Mapping
+
+## Customer
+
+Customer object holds the customer mobile number and the customer bill parameters.
+
+| parameter | type | description |
+| ------------------------ | ---------------------------------- | -------------------------------------------------------------------------------------------------- |
+| `mobile` | `string` (6, 10 and 20 digits) | Customer Mobile Number |
+| `billParameters` | `{ name: string, value: string}[]` | Bill Parameters. The parameters to send is found in the biller details API. |
+| `billParameters[].name` | `string` | Name of the bill parameter. name should match the parameter in biller details API. |
+| `billParameters[].value` | `string` | Value of the bill parameter. Value is validate according to the regex found in the biller details. |
+
+## Biller
+
+Biller object holds the biller ID.
+
+| parameter | type | description |
+| --------- | -------- | --------------------- |
+| `id` | `string` | The Biller ID on BBPS |
+
+## Agent
+
+Details pertaining to the Agent which initiates the transaction. Values of the field if provided to NPCI has to be matched against it.
+
+| parameter | type | description |
+| ------------ | ------------------ | ------------------------------ |
+| `id` | `string` | The Agent ID on BBPS |
+| `channel` | `PaymentChannel` | Payment Channel used by Agent. |
+| `ip` | `string,ipv4` | Agent server IP address |
+| `mac` | `string,mac` | Server MAC address |
+| `mobile` | `string` | Agent Mobile number |
+| `geocode` | `string` | Agent Geocode |
+| `postalCode` | `string` | Agent Pincode |
+| `terminalId` | `string` | Agent terminal ID |
+| `imei` | `string` | Agent IMEI |
+| `ifsc` | `string` | Agent IFSC |
+| `os` | `iOS` or `Android` | Initiating device OS |
+| `app` | `string` | Initiating app name |
+
+## Initiating Channel & Required Agent parameters
+
+| Channel | Agent parameters |
+| ---------- | -------------------------------------------- |
+| `BNKBRNCH` | `ifsc`,`mobile`,`geocode`,`postalCode` |
+| `MOB` | `ip`,`imei`,`os`,`app` |
+| `MOBB` | `ip`,`imei`,`os`,`app` |
+| `INT` | `ip`,`mac` |
+| `INTB` | `ip`,`mac` |
+| `ATM` | `terminalId` |
+| `KIOSK` | `terminalId` |
+| `AGT` | `terminalId`,`mobile`,`geocode`,`postalCode` |
+| `BSC` | `terminalId`,`mobile`,`geocode`,`postalCode` |
+
+## Initiating Channel & Eligible Payment modes
+
+| Payment Mode | INT | INTB | MOB | MOBB | ATM | BNKBRNCH | KIOSK | AGT | BSC |
+| ---------------- | --- | ---- | --- | ---- | --- | -------- | ----- | --- | --- |
+| Cash | N | N | N | N | N | Y | Y | Y | Y |
+| Internet Banking | Y | Y | Y | Y | Y | N | N | N | N |
+| Credit Card | Y | Y | Y | Y | Y | Y | Y | Y | Y |
+| Debit Card | Y | Y | Y | Y | Y | Y | Y | Y | Y |
+| Prepaid Card | Y | Y | Y | Y | Y | Y | Y | Y | Y |
+| IMPS | Y | Y | Y | Y | N | Y | N | Y | Y |
+| NEFT | Y | Y | Y | Y | Y | Y | N | Y | Y |
+| UPI | Y | Y | Y | Y | N | Y | N | Y | Y |
+| Wallet | Y | Y | Y | Y | N | Y | Y | Y | Y |
+| AEPS | N | N | Y | N | N | Y | N | Y | Y |
+| Account Transfer | N | N | N | N | N | Y | N | N | Y |
+| Bharat QR | N | N | Y | Y | N | Y | N | Y | Y |
+| USSD | N | N | Y | Y | N | N | N | N | N |
+
+## Failure Reason
+
+| parameter | type | description |
+| --------- | ---------------------------------- | -------------------------------------------------------------------------------------------------- |
+| code | `string` | Error codes includes Application, Banking and BBPS error codes |
+| message | `string` | Error code description |
+| type | `FUND_TRANSFER` or `BBPS` or `APP` | Error Type. BBPS errors are due to BBPS, and code and message field contain the actual BBPS error. |
+
+## Payment Details
+
+| parameter | type | description |
+| ---------------------- | ------------------------------------------------------- | ------------------------------------ |
+| mode | [Payment Mode](#payment-mode) | Payment Mode |
+| paymentRefId | `string` (6 - 35 characters) | Payment Reference ID tagged by agent |
+| amount | `integer` | Amount in paise |
+| timestamp | `date-time` | Timestamp |
+| selectedPaymentOptions | [Selected Payment Option](#selected-payment-option)`[]` | Array of selected payment options |
+
+## Payment Bill
+
+The Payment Bill object contains information about a specific bill to be paid.
+
+| Parameter | Type | Description |
+| ------------ | --------- | --------------------------------------------- |
+| `billNumber` | `string` | Unique identifier for the bill |
+| `amount` | `integer` | Amount to be paid for the bill in paise |
+
+
+## Bill Status
+
+| type | description |
+| ------------ | ------------------------------------------------- |
+| `Processing` | Fetching a bill (or) Paying a bill is in progress |
+| `Success` | Successfully fetched a bill (or) paid a bill |
+| `Failure` | Unable to fetch a bill or pay a bill |
+
+## Transaction Status
+
+| type | description |
+| ------------ | -------------------------- |
+| `Processing` | Transaction is in progress |
+| `Success` | Transaction is successful |
+| `Error` | Transaction has failed |
+
+## Dispute Status
+
+| type | description |
+| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `INITIALIZED` | Initialized |
+| `ASSIGNED` | Complaint has been accepted. |
+| `RE_ASSIGNED` | When Customer BBPOU re assigned the complaint to the Biller BBPOU. |
+| `ASSIGNED_TO_BOU` | When BBPCU assign the complaint to BBPOU. If the COU and BOU are same for a transaction, then the status of complaint will be changed to Assigned to OU |
+| `ASSIGNED_TO_COU` | When BBPCU assign the complaint to BBPOU. If the COU and BOU are same for a transaction, then the status of complaint will be changed to Assigned to OU |
+| `ASSIGNED_TO_OU` | When BBPCU assign the complaint to BBPOU. If the COU and BOU are same for a transaction, then the status of complaint will be changed to Assigned to OU |
+| `RESOLVED` | Once the BBPOU resolves the customer related complaint, the BBPOU updates the system. |
+| `UNRESOLVED` | If the BBPOU does not respond to the complaint within the specified TAT (Super escalation), the complaint status changed to unresolved. |
+
+## Bill Period
+
+| type |
+| ------------- |
+| `ONETIME` |
+| `DAILY` |
+| `WEEKLY` |
+| `BIMONTHLY` |
+| `MONTHLY` |
+| `QUARTERLY` |
+| `HALFYEARLY` |
+| `YEARLY` |
+| `ASPRESENTED` |
+| `NA` |
+
+## Biller Selection Type
+
+| type | description |
+|------------|-------------------------------------------------------------------|
+| `SINGLE` | User can pay only one bill from the fetch response |
+| `MULTIPLE` | User can pay any combination of bills from the fetch response |
+| `ALL` | User must pay all bills in the fetch response |
+
+## Biller Response Type
+
+| type | description |
+|--------------|-----------------------------------------------------------|
+| `SINGLE` | Biller returns a single bill in the fetch response |
+| `LIST` | Biller returns multiple bills in the fetch response |
+| `SELECTIVE` | Biller returns bills based on specific criteria |
+
+## Fetched Bill
+
+| parameter | type | description |
+| -------------- | ------------------------------------- | ---------------------------------------------------------------------------------------- |
+| customerName | `string` | Bill owner |
+| amount | `integer` | Bill amount in paise |
+| dueDate | `date` | Bill due date |
+| billDate | `date` | Bill date |
+| billNumber | `string` | Bill number |
+| billPeriod | [Bill Period](#bill-period) | Bill period of the bill fetch / payment requested. `NA` when bill period is unavailable. |
+| label | `string` | Additional label for the bill |
+| minAmount | `integer` | Minimum amount that can be paid for this bill in paise |
+| maxAmount | `integer` | Maximum amount that can be paid for this bill in paise |
+| amountMultiple | `integer` | Bill payment amount should be multiple of this value in paise |
+| paymentOptions | [Payment Option](#payment-option)`[]` | Array of payment options available for this bill |
+
+## Payment Option
+
+| Parameter | Type | Description |
+| -------------- | --------- | -------------------------------------------------------------------- |
+| name | `string` | The display name of the option |
+| amount | `integer` | The amount that can be paid for this option in paise |
+| minAmount | `integer` | The minimum amount that can be paid for this option in paise |
+| maxAmount | `integer` | The maximum amount that can be paid for this option in paise |
+| amountMultiple | `integer` | The payment amount should be a multiple of this value in paise |
+
+
+## Selected Payment Option
+
+| Parameter | Type | Description |
+| --------- | --------- | ---------------------------------------------- |
+| name | `string` | The display name of the option from bill fetch |
+| amount | `integer` | The amount being paid for this option in paise |
+
+## Exactness
+
+Limits on acceptable payment amounts set by the biller.
+
+| type | description |
+| ----------------- | ------------------------------------------------------------------------------------- |
+| `Exact` | Only the exact amount specified in fetched bill can be paid |
+| `Exact and below` | Amount specified in fetched bill or less can be paid |
+| `Exact and above` | Amount specified in fetched bill or more can be paid |
+| `Any` | Any amount can be paid |
+| `RANGE` | Amount within specified minAmount and maxAmount specified in fetched bill can be paid |
+
+## Payment Limit
+
+| parameter | type | description |
+| --------------------- | ----------------------------- | ------------------------------------------------------- |
+| paymentMode | [Payment Mode](#payment-mode) | payment mode |
+| supportsPendingStatus | `bool` | Whether payment mode for biller supports pending status |
+| minLimit | `integer` or `null` | Minimum acceptable amount in paise |
+| maxLimit | `integer` or `null` | Maximum acceptable amount in paise |
+
+## Dispute Type
+
+| type | description |
+| ------------------------------------------------------- | -------------------------------------------------------------------------- |
+| `account-not-updated` | Transaction Successful, account not updated |
+| `double-payment` | Double payment updated |
+| `paid-to-wrong-account` | Erroneously paid in wrong account |
+| `amount-deducted-biller-credited-no-transaction-id` | Amount deducted, biller account credited but transaction ID not received |
+| `amount-deducted-biller-not-credited-no-transaction-id` | Amount deducted, biller account not credited & transaction ID not received |
+| `amount-deducted-multiple-times` | Amount deducted multiple times |
+| `others` | Other reason |
+
+## Biller Customer Params
+
+| parameter | type | description |
+| ---------- | --------------------------- | ---------------------------------------------------------------- |
+| dataType | `NUMERIC` or `ALPHANUMERIC` | Value format |
+| maxLength | `integer` or `null` | Value's max length |
+| minLength | `integer` or `null` | Value's min length |
+| optional | `bool` | Is the parameter optional |
+| paramName | `string` | Parameter name |
+| regex | `string` (Regex) | Value Regex |
+| values | `string` | Possible default values |
+| visibility | `bool` | Visibility of the customer parameter in COU/AIs front-end screen |
+
+## Fetch API Type
+
+| type | description |
+| --------------- | ----------------------------------------------------------------------- |
+| `BILL_FETCH` | Biller can accept a Bill Fetch request. |
+| `BILL_VALIDATE` | Biller can accept a Bill Validate request. |
+| `BILL_DIRECT` | Biller can accept direct payment without a Bill Fetch or Bill Validate. |
+
+## Biller Payment Channel
+
+Maxium amount accepted by the biller for the [Payment Channel](#payment-channel).
+
+| parameter | type | description |
+| --------------------- | ----------------------------------- | ---------------------------------------------------------- |
+| paymentChannel | [Payment Channel](#payment-channel) | Payment Channel |
+| supportsPendingStatus | `bool` | Whether payment channel for biller supports pending status |
+| minLimit | `integer` or `null` | Minimum acceptable amount in paise |
+| maxLimit | `integer` or `null` | Maximum acceptable amount in paise |
+
+## Biller Plan Information
+
+| parameter | type | description |
+| --------------- | ---------------------- | ---------------------------------------- |
+| amount | `integer` | Plan amount in paise |
+| id | `string` | Plan ID |
+| categoryType | `string` | Plan Category defined by the biller. |
+| categorySubType | `string` | Plan Sub-Category defined by the biller. |
+| description | `string` | Plan description |
+| effectiveFrom | `date` | Plan effective from |
+| effectiveTo | `date` | Plan effective to |
+| status | `ACTIVE` or `DEACTIVE` | Plan status |
+
+
+
+## Transaction
+
+`/transactions`
+
+### Query Parameters
+
+| parameter | type | description |
+| --------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| limit | `integer` | Default: `250`, Maximum: `1000`, Minimum: `1` |
+| after | `string` | |
+| startDate | `date` | start date of the timestamp provided by the partner while making the request. Full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21 |
+| endDate | `date` | end date of the timestamp provided by the partner while making the request. Full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21 |
+| billerId | `string` | Transaction's Biller ID |
+| status | [Transaction Status](#transaction-status) | Transaction Status |
+| mobile | `string` (6, 10 and 20 digits) | Customer Mobile Number |
+
+### Response
+
+| parameter | type | description |
+| -------------------- | ----------------------------------------- | ------------------------------------ |
+| refId | `string` | BBPS Reference ID |
+| status | [Transaction Status](#transaction-status) | Transaction Status |
+| transactionId | `string` | Setu Transaction ID |
+| partnerRefId | `string` (6 - 35 characters) | Payment Reference ID tagged by agent |
+| bills | [Payment Bill](#payment-bill)`[]` | Details of bills paid |
+| billerId | `string` | BBPS Biller ID |
+| amount | `integer` | Amount in paise |
+| customerMobileNumber | `string` (6, 10 and 20 digits) | Customer Mobile Number |
+| timestamp | `date-time` | Transaction timestamp |
+
+
+
+## Dispute
+
+`/disputes`
+
+### Query Parameters
+
+| parameter | type | description |
+| -------------------- | --------------------------------- | --------------------------------------------- |
+| status | [Dispute Status](#dispute-status) | Dispute status |
+| limit | `integer` | Default: `250`, Maximum: `1000`, Minimum: `1` |
+| after | `string` | |
+| transactionIds | `string[]` | Disputes' Setu Transaction IDs |
+| partnerRefIds | `string[]` | Disputes' Partner Transaction IDs |
+| billerIds | `string[]` | DIsputes' Biller ID |
+| customerMobileNumber | `string` (6, 10 and 20 digits) | Customer Mobile Number |
+
+### Response
+
+| parameter | type | description |
+| -------------------- | --------------------------------- | --------------------------------------------- |
+| assigned | `string` | BBPOU to which the complaint is assigned |
+| billerId | `string` | Dispute's Transaction Biller ID |
+| complaintId | `string` | Complaint ID for the dispute provided by BBPS |
+| complaintStatus | [Dispute Status](#dispute-status) | BBPS Complaint status |
+| customerMobileNumber | `string` (6, 10 and 20 digits) | Customer Mobile Number |
+| partnerRefId | `string` (6 - 35 characters) | Payment Reference ID tagged by agent |
+| refId | `string` | BBPS reference ID for the dispute request |
+| remarks | `string` | BBPS Remarks for the complaint |
+| responseCode | `string` | BBPS Response code for the dispute request |
+| responseReason | `string` | BBPS Response reason for the dispute request |
+| transactionId | `string` | Setu Transaction ID |
+
+
+
+## Biller MDM
+
+`/billers`
+
+### Query Parameters
+
+| parameter | type | description |
+| -------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
+| categoryName | `string[]` | Category of the biller |
+| ids | `string[]` | biller Ids |
+| limit | `integer` | Default: `250`, Maximum: `1000`, Minimum: `1` |
+| after | `string` | Billers are sorted via the Biller ID. Providing a biller Id fetches billers right after this biller in a paginated way. |
+| search | `string` | searches the provided text over biller name and biller alias |
+| pincode | `string` | |
+| coverage | `string` | BBPS coverage. Used to search billers having a specific coverage area |
+| country | `string` | BBPS Country Code. Used to search billers operating in a certain country |
+| state | `string` | BBPS state code. Used to search billers operating in a certain state |
+| city | `string` | city name, used to search billers operating in a certain city |
+| updatedSince | `date-time` | Fetch billers updated on or after the provided timestamp |
+| tags | `string` | |
+| paymentChannel | [Payment Channel](#payment-channel)`[]` | |
+| paymentMode | [Payment Mode](#payment-mode)`[]` | |
+
+### Response
+
+| parameter | type | description |
+| ----------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| categoryName | `string` | Biller Category |
+| city | `string` | Biller City |
+| country | `string` | Biller Country |
+| coverage | `string` | Biller coverage |
+| createdAt | `date-time` | Biller Created At |
+| customerParams | [Biller Customer Params](#biller-customer-params)`[]` | Customer Parameter format descrption |
+| exactness | [Exactness](#exactness) | Biller Exactness |
+| fetchApiType | [Fetch API Type](#fetch-api-type) | Biller Fetch API Type |
+| id | `string` | Biller ID |
+| logo | `string` | Biller logo |
+| modifiedAt | `date-time` | Biller Modified At |
+| name | `string` | Biller Name |
+| payWithoutFetchAllowed | `bool` | Whether biller allows bill payment without a fetch or not. Even in case of `BILL_FETCH` API type, certain bills make the fetch optional |
+| paymentChannels | [Biller Payment Channel](#bill-payment-channel)`[]` | Payment Channel limits set by the biller. |
+| paymentModes | [Payment Limit](#payment-limit)`[]` | Payment mode limits set by the biller. |
+| pincode | `string` | Biller Pincode |
+| supportsPendingStatus | `bool` | Whether the biller supports pending status. In this case, a payment can be in progress for up to 2 days. |
+| tags | `string` | Additional Tags of the biller. |
+| state | `string` | Biller State |
+| plans | [Biller-Plan-Information](#biller-plan-information)`[]` | Plans provided by the biller. |
+| enforcesSameDayFetchPay | `bool` | Whether the biller requires bill payment to be on the same calendar day as bill fetch. |
+| bbpsUpdateTimestamp | `date-time` | Last updated date-time of the Biller accurate to the nearest day. |
+| responseType | [Biller Response Type](#biller-response-type) | Indicates how the biller provides bill information in the fetch response |
+| selectionType | [Biller Selection Type](#biller-selection-type) | Specifies how users can select bills for payment (only applicable for LIST response type) |
+
+
+
+## Dispute Request
+
+`/bills/dispute/request`
+
+### Request Body
+
+| parameter | type | description |
+| -------------- | ----------------------------- | ------------------- |
+| txnReferenceId | `string` | Setu Transaction ID |
+| disputeType | [Dispute Type](#dispute-type) | Dispute type |
+| description | `string` (100 characters) | Dispute description |
+
+
+
+## Dispute Response
+
+`/bills/dispute/response`
+
+### Response Body
+
+| parameter | type | description |
+| ---------- | --------------------------------- | ---------------------------------------------- |
+| refId | `string` | BBPS Reference ID |
+| disputeId | `string` | Dispute ID used for the complaint |
+| status | [Dispute Status](#dispute-status) | Dispute Status |
+| assignedTo | `string` | The entity who has this complaint assigned to. |
+| remarks | `string` | Remarks of the complaint |
+
+
+
+## Fetch Request
+
+`/bills/fetch/request`
+
+### Request Body
+
+| parameter | type | description |
+| --------- | --------------------- | ------------------------------------------------------------------- |
+| customer | [Customer](#customer) | Customer Object |
+| biller | [Biller](#biller) | Biller Object |
+| Agent | [Agent](#agent) | Agent Object |
+
+
+
+## Fetch Response
+
+`/bills/fetch/response`
+
+### Response Body
+
+| parameter | type | description |
+| ------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| refId | `string` | BBPS reference ID for the fetch request. |
+| status | [Bill Status](#bill-status) | Bill fetch request status. |
+| failureReason | [Failure Reason](#failure-reason) | Failure reason on status `Failure` |
+| bill | [Fetched Bill](#fetched-bill) | Single fetched bill. Used when `billerResponseType` is 'SINGLE'. |
+| bills | [Fetched Bill](#fetched-bill)`[]` | Array of fetched bills. Used when `billerResponseType` is 'LIST'. |
+| additionalInfo | `{"name":"value"}[]` | Additional information of the bill sent by the biller |
+| billerRefId | `string` | Biller reference ID used by the biller for the request. |
+| exactness | [Exactness](#exactness) | Biller Exactness |
+| paymentLimits | [Payment Limit](#payment-limit)`[]` | Payment limits |
+| billerResponseType | [Biller Response Type](#biller-response-type) | Indicates whether the biller provides a single bill ('SINGLE') or multiple bills ('LIST') |
+| billerSelectionType | [Biller Selection Type](#biller-selection-type) | Specifies how users can select bills for payment (only applicable for LIST response type) |
+
+**Note:** The `billerResponseType` field indicates which bill data field to use. For 'SINGLE' type, use the `bill` field (contains zero or one bill). For 'LIST' type, use the `bills` field (contains one or more bills in an array).
+
+
+
+## Payment Request
+
+`/bills/payment/request`
+
+### Request Body
+
+| parameter | type | description |
+| -------------- | ----------------------------------- | ------------------------------------------------------------------------------------- |
+| refId | `string` | BBPS Reference ID from previous bill fetch request. Mandatory for non-adhoc payments. |
+| agent | [Agent](#agent) | Details of agent processing the payment. Mandatory for adhoc payments. |
+| biller | [Biller](#biller) | Details of biller receiving the payment. Mandatory for adhoc payments. |
+| customer | [Customer](#customer) | Details of the customer making the payment. Mandatory for adhoc payments. |
+| bills | [Payment Bill](#payment-bill)`[]` | Details of bills to be paid. Mandatory for LIST billers only. |
+| paymentDetails | [Payment Details](#payment-details) | Details specific to the payment being made. Mandatory for all payments. |
+
+
+
+**Note:**
+
+- For non-adhoc payments, only `refId`, `paymentDetails`, and potentially `bills` (for LIST billers) are required.
+- For adhoc payments, `agent`, `biller`, `customer`, and `paymentDetails` are mandatory. `refId` and `bills` are not applicable.
+
+
+
+## Payment Response
+
+`/bills/payment/response`
+
+### Response Body
+
+| parameter | type | description |
+| -------------- | ----------------------------------- | --------------------------------------------------------------- |
+| refId | `string` | BBPS Reference ID |
+| status | [Bill Status](#bill-status) | Transaction Status |
+| failureReason | [Failure Reason](#failure-reason) | Failure information in case of Transaction failure |
+| transactionId | `string` | Setu Transaction ID |
+| billerRefId | `string` | Internal reference number used by the Biller for a transaction. |
+| billerId | `string` | BBPS Biller ID |
+| paymentDetails | [Payment Details](#payment-details) | Payment Details for the transaction |
+| additionalInfo | `{"name":"value"}[]` | Additional information of the bill sent by the biller |
+| refundStatus | [Refund Status](#refund-status) | Refund status if the payment failed and the amount was debited. |
+| bills | [Payment Bill](#payment-bill)`[]` | Details of bills paid. Present for LIST billers only. |
+
+
diff --git a/content/payments/billpay/v1/api-integration/quickstart.mdx b/content/payments/billpay/v1/api-integration/quickstart.mdx
new file mode 100644
index 00000000..82a62173
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/quickstart.mdx
@@ -0,0 +1,222 @@
+---
+sidebar_title: Quickstart
+page_title: BBPS COU — API integration
+order: 1
+visible_in_sidebar: true
+---
+
+## API integration
+
+Setu BillPay allows you to register as an agent on the BBPS network and enable BBPS bill payments on your app or website. All approvals are done by Setu, our bank partner and BBPS.
+
+This page covers how you can integrate with our APIs, develop corresponding screen flows and go live with BBPS payments.
+
+
+
+### How to integrate
+
+
+ Use provided{" "}
+
+ API reference
+ {" "}
+ to start integration. Request for a detailed API run through from Setu team,
+ if needed. Contact us at{" "}
+
+ Setu Support
+
+ , should you need any help during integration.
+
+
+A summary of the integration process—
+
+1. Get your API keys
+2. Provide details to set up agent
+3. Start API integration
+4. Share screens for NPCI approval
+5. Run and submit test cases
+6. Get production credentials and go live
+
+Each of these steps are described in detail below.
+
+
+
+### Step 1 — Get your API keys
+
+You have to use `X-PARTNER-ID` in the auth header and `clientID` and `secret` as the bearer token. Get these values by reaching out to the Setu team at onboarding@setu.co.
+
+Once you have the credentials, get the token by making a `POST` request to `https://sandbox-coudc.setu.co/api/v1/auth/token`.
+
+{`
+{
+ "clientID": "james-bond",
+ "secret": "5ja0077m-55e0-47s9-9bo7-ndaa18a7c0f7"
+}
+`}
+
+
+
+You then get a token which can be used to make Authenticated requests to BillPay APIs.
+
+{`
+{
+ "expiresIn": 600,
+ "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImxEUXBadm5xRmtTdlRaMDV6NFdjTjl0My0zY0JSVWo5di1rYnVNX2dpQkEifQ.eyJleHAiOjE2NTgzMTUwMDcsImlhdCI6MTY1ODMxMjAwNywianRpIjoiMjQzMTAwN2MtODAwNy00MDA3LWI5ZWUtZTQ4MmY2YTU3ZGViIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLWRldi5zZXR1LmNvL2F1dGgvcmVhbG1zL2NvdS1kYy1qYW1lcy1ib25kLXVhdCIsImF1ZCI6WyJqYW1lcy1ib25kIiwiYWNjb3VudCJdLCJzdWIiOiI0ZDhkMDY1Mi1kMmY2LTQyMWYtODNkMi0xYWUxYjc5ZTI1ZGIiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJqYW1lcy1ib25kIiwic2Vzc2lvbl9zdGF0ZSI6ImExOThkMDA3LWViOWQtNDAwNy05NGRjLTNlMjJmYTEzYTAwNyIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9qYW1lcy1ib25kLWNvdWRjLnNldHUuY28iXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIlNlY3JldF9JbnRlbGxpZ2VuY2VfU2VydmljZSJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImphbWVzLWJvbmQiOnsicm9sZXMiOlsiU2VjcmV0X0ludGVsbGlnZW5jZV9TZXJ2aWNlIl19LCJhY2NvdW50Ijp7InJvbGVzIjpbImNvdW50ZXItdGVycm9yaXNtIiwiY291bnRlci1wcm9saWZlcmF0aW9uIl19fSwic2NvcGUiOiJiYnBzOmJvbmQiLCJjbGllbnRJZCI6ImphbWVzLWJvbmQiLCJjbGllbnRIb3N0IjoiMDA3LjAwNy4wMDcuMDA3IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtamFtZXMtYm9uZCIsImNsaWVudEFkZHJlc3MiOiIwMDcuMDA3LjAwNy4wMDcifQ.svjuDXhx71uur_XYDCYLlObPBWctPHCDn1DtAAS-xMvnAvPdgqqVIUbGXdBxePE-blJPUDWH9J4ZXj5-kvi3onGdnmQxZcckW7dmIRrfTtUMCBj_4iefqiDV1D58Fblf9hCGjVGVWL9fuatNFvV46IaVREfaUTKuSbqwzhMpSGICJWhOM1Jt1Z2pB0x3e55dgmqhjeThZrstOwsJ2GTQ5N9gFennpmqmK_HVXU-rFwJzD44EMsN5GeH6Hh8zSC35NYkagrrlOkiuPGukoOMC9xFeGKGMSML3ve8_NmPVdhM6BaOwsau4wEJ-VV4oRY7TEl7d-IXmZqCVE0vyV2GZjQ",
+ "success": true,
+ "traceId": "C3SFG0O6N88R6UI7EQ"
+}
+`}
+
+
+
+
+
+### Step 2 — Provide details to set up agent
+
+To reiterate, an agent is an entity on BBPS, that enables its customers to pay any business that is listed on BBPS. For this, you need to use your details registered on BBPS, with an agent ID, to fetch bills for customers, from BBPS-listed businesses.
+
+###### Share business details
+
+Reach out to onboarding@setu.co to get a list of business details you need to provide to set up your BBPS agent ID(s).
+
+###### Share callback URL
+
+It is recommended that you set up a callback URL to receive notifications for various types of events, while using—
+
+- APIs to fetch bill for a customer
+- APIs to validate customer identifier with a biller
+- APIs to for completing a bill payment
+- APIs to raise disputes against a payment
+- APIs to receive an automatic bill due notification
+
+When this is enabled by you, any successful `fetch`, `validate`, `payment` or `dispute` event gets posted to your callback URL.
+
+You may specify only one callback URL. **This should be a valid URI string that starts with either `https://` or `http://` scheme.**. For e.g., `https://my-billpay-callback.com`.
+
+Setu will append the following default paths to this callback URL, to alert your on specific events—
+
+| Event type | Path |
+| ----------------------- | -------------------------- |
+| `fetch` a bill | `/bills/fetch/response` |
+| `validate` bill details | `/bills/validate/response` |
+| `payment` of bill | `/bills/payment/response` |
+| `dispute` against bill | `/bills/dispute/response` |
+
+
+
+
+
+ You may also optionally choose to specify custom paths or URLs for{" "}
+ fetch
/validate
/payment
/
+ dispute
events too.{" "}
+
+ The URL may be relative (a path, without a host) or absolute (starting with
+ a scheme)
+
+ .
+
+
+ In case you specify a path, it will get appended to the{" "}
+ callbackURL
value. If you specify a URL, it will simply override
+ the callback URL value for that particular event.
+
+
+
+There are also other events that are not related to the core BillPay APIs, but are updates about the businesses on BBPS.
+
+This would include alerts on businesses that may be delisted from BBPS, or if a business updates the type of identifier they accept to fetch a customer’s bill. If you maintain a database of BBPS businesses, you may want to use such events to stay up-to-date. Find the full list of events here.
+
+
+
+### Step 3 — Start API integration
+
+Once you have received your API keys and agent ID for testing, you can integration with our APIs and start testing out different scenarios for fetching/paying bills or for raising disputes and managing its resolution.
+
+
+
+### Step 4 — Share screens for NPCI approval
+
+The screens you build as part of your app needs to conform to BBPS guidelines. You should submit a document with screenshots for the following screens—
+
+- **Category list screen**, on which all BBPS categories are listed.
+- **Biller list screen**, on which all billers under a selected category are listed.
+- **Customer input screen**, where a customer enters identifiers specific to a selected biller, before their bill can be fetched.
+- **Payment confirmation screen**, on which the customer confirms bill amount and proceeds with payment.
+- **Payment status screen**, when payment is being processed and is finally either successful or failed.
+- **Confirmation SMS**, this is the text that is sent after a payment is successful or failed.
+- **Bill receipt screen**, through which a customer can view and download receipt for a successful transaction.
+- **Raise complaint screen**, where a customer can raise complaint. Complaints are raised against specific transaction IDs.
+- **Complaint status screen**, where a customer can see the latest status associated with registered complaint.
+
+
+ You may use the BBPS branding guidelines provided{" "}
+
+ here
+
+ . BBPS logo assets can be downloaded
+ here
+ .
+
+
+
+
+
+ Here is a{" "}
+
+ BBPS-compliant UX flow
+ {" "}
+ and a quick summary of BBPS guidelines to keep in mind—
+
+
+- The app / website UI must contain a button for “Pay bills” with the BBPS logo shown.
+- BBPS logo must be present on top right corner of all screens used by customer during search of biller or bill and also for screens relating to payment of bill.
+- BBPS assured logo must always be shown on the payment sucessful and payment receipt pages. The regular BBPS logo can be removed from these.
+
+
+
+### Step 5 — Run and submit test cases
+
+Copy the below table in an Excel or Google sheet and run all test cases. Submit documented results in the same format. The results will verified by Setu and the bank to generate production credentials.
+
+
+ Postman logs not considered valid. Share results only once screen integration
+ is complete.{" "}
+
+
+
+| Case ID | Business scenario | Test case description | Positive/Negative | Expected result format | Logs | Result |
+| ------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------- | -------------------------------------------------------------------------------- | ---- | ------ |
+| CL1 | Listing of categories | Call the get categories API. The API will return a list of category codes. | Positive | Attach log file containing URL and response | | |
+| BL1 | List of billers in categories | Call the biller list API and make sure you are able to see a list of billers. | Positive | Attach log file containing URL, Request and Response for at least 3 categories | | |
+| BL2 | List of billers in categories | Call the biller list API for a category code that does not exist. | Negative | Attach log file containing URL, Request and Response | | |
+| BF1 | Bill fetch - step 1 | Call the bill fetch register API. | Positive | Attach log file containing URL, Request and Response | | |
+| BF2 | Bill fetch - step 2 | Call the get fetched bill API with the right context from bill fetch register API. Assert that the bill is returned. | Positive | Attach log file containing URL, Request and Response | | |
+| BF3 | Bill fetch - step 1 (invalid param) | Call bill fetch API with wrong customer parameters for the biller. This will give error. | Negative | Attach log file containing URL, Request and Response | | |
+| BF4 | Bill fetch - step 1 (invalid regex) | Call bill fetch API with wrong customer parameters with invalid regex. This will give error. | Negative | Attach log file containing URL, Request and Response | | |
+| BF5 | Bill fetch - ADHOC | Call bill fetch API register and get fetched bill API for DTH. Assert that amount is not returned. | Negative | Attach log file containing URL, Request and Response | | |
+| BF6 | Bill fetch - Wrong customer value | Call bill fetch API by entering wrong customer parameter input. Assert that you get an error for invalid customer parameter. | Negative | Attach log file containing URL, Request and Response | | |
+| BP1 | Bill payment - step 1 | Call bill payment API for a successful bill fetch. | Positive | Attach log file containing URL, Request and Response | | |
+| BP2 | Bill payment - step 2 | Call get payment status API after a successful bill payment. | Positive | Attach log file containing URL, Request and Response | | |
+| BP3 | Bill payment - Adhoc - step 1 | Call bill payment API for a successful bill fetch for DTH. | Positive | Attach log file containing URL, Request and Response | | |
+| BP4 | Bill payment - Adhoc - step 2 | Call get payment status API after a successful bill payment. | Positive | Attach log file containing URL, Request and Response | | |
+| BF7 | Bill fetch for zero amount | Call bill fetch API 1 day after you have made payment. Assert that you get the “no bill due” error. | Negative | Attach log file containing URL, Request and Response | | |
+| CT1 | Raise dispute | Call raise complaint API after you have successfully completed payment. | Positive | Attach log file containing URL, Request and Response | | |
+| CT2 | Get dispute status | Call complaint status API after you have successfully completed payment. | Positive | Attach log file containing URL, Request and Response | | |
+| BD1 | Get biller details | Call the biller details API with a valid biller and category code to see biller fields. | Positive | Attach log file containing URL, Request and Response for at least 3 combinations | | |
+| BD2 | Get biller details | Call the biller details API with an invalid biller or category code which does not exist. This will give error. | Negative | Attach log file containing URL, Request and Response for at least 3 combinations | | |
+| FD1 | Get biller fields | Call the biller fields API with a valid biller and category code to see biller fields. | Positive | Attach log file containing URL, Request and Response for at least 3 combinations | | |
+| FD2 | Get biller fields | Call the biller fields API with an invalid biller or category code which does not exist. This will give error. | Negative | Attach log file containing URL, Request and Response for at least 3 combinations | | |
+| AI1 | Amount limitation | Make a payment of Rs. 49999. | Positive | Attach log file containing URL, Request and Response | | |
+| AI2 | Amount limitation | Make a payment of Rs. 50000. | Negative | Attach log file containing URL, Request and Response | | |
+| AI3 | Amount limitation | Test all payment modes with limits. | Positive | Attach log file containing URL, Request and Response | | |
+
+
+
+### Step 6 — Get production credentials and go live
+
+You will receive production credentials once all the approvals and agreements are done. On receiving the production credentials, you can verify your integration and go live.
+
+
diff --git a/content/payments/billpay/v1/api-integration/webhook.mdx b/content/payments/billpay/v1/api-integration/webhook.mdx
new file mode 100644
index 00000000..aef69d50
--- /dev/null
+++ b/content/payments/billpay/v1/api-integration/webhook.mdx
@@ -0,0 +1,472 @@
+---
+sidebar_title: Webhooks
+page_title: BBPS COU — Webhooks
+order: 4
+visible_in_sidebar: true
+---
+
+# Webhooks
+
+Here is the general structure of any webhook—
+
+{`
+ "traceId" : "C3SFG0O6N88R6UI7EQ",
+ "timeStamp" : "2021-11-12T00:12:29+05:30",
+ "event" : "BILLER_UPDATES",
+ "data" : {...}`}
+
+1. `traceId` is a unique ID assigned to the error and used by Setu to debug
+2. `timeStamp` denotes the time when the webhook was triggered
+3. `event` is a pre-defined list of event types used to define what the webhook was triggered for
+4. `data` contains the webhook payload data
+
+
+
+### Bill fetch webhook
+
+This webhook can be used to get details of outstanding bills on BBPS. It will only be triggered if the Fetch bill API is
+consumed. If the bill does not exist then suitable error
+message will be sent.
+
+{`Method : POST
+URL : To be provided by partner`}
+
+
+
+
+
+ Bill fetch sample request
+
+
+
+ {`{
+ "event": "BILL_FETCH",
+ "timeStamp": "2023-08-27T17:09:24.566+05:30",
+ "data": {
+ "bill": {
+ "amount": 60500,
+ "billDate": "2023-06-02",
+ "billNumber": "3749280326878517751",
+ "billPeriod": "Monthly",
+ "customerName": "Elijah White",
+ "dueDate": "2023-06-02"
+ },
+ "billerRefId": "9540207519",
+ "exactness": "Exact",
+ "paymentLimits": [
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "Internet Banking",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "Debit Card",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "Prepaid Card",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "IMPS",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 4999900,
+ "minLimit": 100,
+ "paymentMode": "Cash",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "UPI",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "Wallet",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "NEFT",
+ "supportsPendingStatus": false
+ },
+ {
+ "maxLimit": 99999900,
+ "minLimit": 100,
+ "paymentMode": "AEPS",
+ "supportsPendingStatus": false
+ }
+ ],
+ "refId": "CJLJBQK91PA0FD9MPMK0W75BD9M32391709",
+ "status": "Success"
+ }
+}
+`}
+
+
+
+
+
+
+### Bill payment webhook
+
+This informs you that NPCI has received the payment request for a particular bill. It will also pass on
+relevant errors and messages.
+
+{`Method : POST
+URL : To be provided by partner`}
+
+
+
+
+
+ Bill payment sample request
+
+
+
+ {`{
+ "event": "BILL_PAY",
+ "data": {
+ "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202",
+ "status": "PROCESSING/SUCCESS/FAILURE",
+ "billerRefId": "ABC1235",
+ "transactionId": "AX01122999900001",
+ "failureReason": {
+ "code": "BRR005",
+ "message": "Biller not accepting payments at the moment"
+ },
+ "paymentDetails": {
+ "mode": "Internet Banking/Debit Card/Credit Card/IMPS/Cash/UPI/Wallet/NEFT/Prepaid Card/AEPS/Account Transfer/Bharat QR/USSD",
+ "paymentRefId": "N2001121212344",
+ "amount": 10000,
+ "timestamp": "2020-12-12T13:12:00+05:30"
+ },
+ "billerId": "VODA00000MUM03"
+ },
+ "success": true,
+ "traceId": "C3SFG0O6N88R6UI7EQ",
+ "error": null
+}`}
+
+
+
+
+
+
+### Dispute webhook
+
+This webhook can be used to view the status update for a dispute raised by a customer.
+
+{`Method : POST
+URL : To be provided by partner`}
+
+
+
+
+
+ Dispute sample request
+
+
+
+ {`{
+ "event": "BILL_DISPUTE",
+ "data": {
+ "refId": "JPMRPBOGGDTP1EFRZVXVESQVQIS10461642",
+ "disputeId": "OP0121046567755",
+ "status": "INITIALIZED/ASSIGNED/RE_ASSIGNED/ASSIGNED_TO_BOU/ASSIGNED_TO_COU/ASSIGNED_TO_OU/ESCALATED/RESOLVED/UNRESOLVED",
+ "assignedTo": "AX39",
+ "remarks": "Resolved in favour of customer"
+ },
+ "success": true,
+ "error": null
+}
+`}
+
+
+
+
+
+
+### Biller updates webhook
+
+This is used to notify you about updates on any BBPS biller—including biller being
+added to or modified on the BBPS platform. In case of a biller gets modified, the
+request contains the biller with the new modification.
+
+{`Method : POST
+URL : To be provided by partner`}
+
+
+
+
+
+ Biller updates sample request
+
+
+
+ {`{
+ "event": "BILLER_UPDATES",
+ "traceId": "C6I7O22PC5TNLVD7QSKG",
+ "timeStamp": "2021-11-29T12:36:48.910+05:30",
+ "data": [
+ {
+ "ID": 699158487875191900,
+ "Status": "ACTIVE",
+ "BillerAcceptsAdhoc": "F",
+ "BillerAdditionalInfo": [
+ {
+ "DataType": "ALPHANUMERIC",
+ "Optional": true,
+ "ParamName": "URL"
+ },
+ {
+ "DataType": "ALPHANUMERIC",
+ "Optional": true,
+ "ParamName": "Early Payment Date"
+ }
+ ],
+ "BillerAdditionalInfoPayment": null,
+ "BillerAliasName": "TATA PWR - MUM",
+ "BillerCategoryName": "DTH",
+ "BillerCoverage": "IND",
+ "BillerCustomerParams": [
+ {
+ "dataType": "NUMERIC",
+ "maxLength": 12,
+ "minLength": 12,
+ "paramName": "Consumer Number"
+ }
+ ],
+ "BillerDescription": "",
+ "BillerEffctvFrom": "2017-10-31",
+ "BillerEffctvTo": "2025-12-31",
+ "BillerID": "ZEE500000NAT01",
+ "BillerMode": "ONLINE",
+ "BillerName": "ZEE TV",
+ "BillerOwnerShp": "Private",
+ "BillerPaymentChannels": [
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "INT"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "INTB"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "MOB"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "MOBB"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "POS"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "MPOS"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "ATM"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "BNKBRNCH"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "KIOSK"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "AGT"
+ },
+ {
+ "minLimit": 100,
+ "maxLimit": 500000000,
+ "paymentChannel": "BSC"
+ }
+ ],
+ "BillerPaymentModes": [
+ {
+ "minLimit": 1,
+ "paymentMode": "Internet Banking"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "Debit Card"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "Credit Card"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "Prepaid Card"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "IMPS"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "Cash"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "UPI"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "Wallet"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "NEFT"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "AEPS"
+ },
+ {
+ "minLimit": 1,
+ "paymentMode": "Account Transfer"
+ }
+ ],
+ "BillerResponseParams": {
+ "amountOptions": [
+ {
+ "amountBreakupSet": ["BASE_BILL_AMOUNT"]
+ },
+ {
+ "amountBreakupSet": ["Early Payment Amount"]
+ }
+ ]
+ },
+ "BillerTempDeactivationEnd": "",
+ "BillerTempDeactivationStart": "",
+ "BillerTimeOut": "",
+ "CustomerParamGroups": {
+ "groups": null
+ },
+ "FetchRequirement": "MANDATORY",
+ "InterchangeFee": null,
+ "ParentBiller": "",
+ "PaymentAmountExactness": "EXACT",
+ "PlanAdditionalInfo": null,
+ "PlanMdmRequirement": "",
+ "SupportBillValidation": "",
+ "SupportDeemed": "",
+ "SupportPendingStatus": "",
+ "NameVector": "'mum':3 'pwr':2 'tata':1 'tv':5 'zee':4",
+ "Plans": [
+ {
+ "ID": 773944272117303200,
+ "PlanID": "1",
+ "AmountInRupees": "99.0",
+ "BillerID": "ZEE500000NAT01",
+ "CategorySubType": {
+ "subType": "1 Month"
+ },
+ "CategoryType": "Premium",
+ "EffctvFrom": "2021-01-01",
+ "EffctvTo": "2021-12-31",
+ "PlanAdditionalInfo": [],
+ "PlanDescription": "All ZEE5 Originals and Exclusives, Blockbuster Movies, All ALT Balaji Shows, Zindagi TV Shows,\nKids, Live TV, TV shows before telecast. Watch on 5 devices at a time",
+ "Status": "ACTIVE"
+ },
+ {
+ "ID": 773944272134080400,
+ "PlanID": "2",
+ "AmountInRupees": "299.0",
+ "BillerID": "ZEE500000NAT01",
+ "CategorySubType": {
+ "subType": "2 Months"
+ },
+ "CategoryType": "Premium",
+ "EffctvFrom": "2021-01-01",
+ "EffctvTo": "2021-12-31",
+ "PlanAdditionalInfo": [],
+ "PlanDescription": "All ZEE5 Originals and Exclusives, Blockbuster Movies, All ALT Balaji Shows, Zindagi TV Shows,\nKids, Live TV, TV shows before telecast. Watch on 5 devices at a time",
+ "Status": "ACTIVE"
+ },
+ {
+ "ID": 773944272142469000,
+ "PlanID": "3",
+ "AmountInRupees": "599.0",
+ "BillerID": "ZEE500000NAT01",
+ "CategorySubType": {
+ "subType": "6 Months"
+ },
+ "CategoryType": "Premium",
+ "EffctvFrom": "2021-01-01",
+ "EffctvTo": "2021-12-31",
+ "PlanAdditionalInfo": [],
+ "PlanDescription": "All ZEE5 Originals and Exclusives, Blockbuster Movies, All ALT Balaji Shows, Zindagi TV Shows,\nKids, Live TV, TV shows before telecast. Watch on 5 devices at a time",
+ "Status": "ACTIVE"
+ },
+ {
+ "ID": 773944272159246300,
+ "PlanID": "4",
+ "AmountInRupees": "999.0",
+ "BillerID": "ZEE500000NAT01",
+ "CategorySubType": {
+ "subType": "12 Months"
+ },
+ "CategoryType": "Premium",
+ "EffctvFrom": "2021-01-01",
+ "EffctvTo": "2021-12-31",
+ "PlanAdditionalInfo": [],
+ "PlanDescription": "All ZEE5 Originals and Exclusives, Blockbuster Movies, All ALT Balaji Shows, Zindagi TV Shows,\nKids, Live TV, TV shows before telecast. Watch on 5 devices at a time",
+ "Status": "ACTIVE"
+ },
+ {
+ "ID": 773944272167635000,
+ "PlanID": "5",
+ "AmountInRupees": "365.0",
+ "BillerID": "ZEE500000NAT01",
+ "CategorySubType": {
+ "subType": "12 Months"
+ },
+ "CategoryType": "Club",
+ "EffctvFrom": "2021-01-01",
+ "EffctvTo": "2021-12-31",
+ "PlanAdditionalInfo": [],
+ "PlanDescription": "TV shows before telecast, Select ZEE5 Originals, Select ALT Balaji Shows, Select Movies, Zindagi\nTV Shows, Kids, Live TV. Watch on 2 devices at a time",
+ "Status": "ACTIVE"
+ }
+ ]
+ }
+ ]
+}`}
+
+
+
+
+
diff --git a/content/payments/billpay/v1/api-reference.mdx b/content/payments/billpay/v1/api-reference.mdx
new file mode 100644
index 00000000..f433e28d
--- /dev/null
+++ b/content/payments/billpay/v1/api-reference.mdx
@@ -0,0 +1,6 @@
+---
+sidebar_title: API reference
+page_title: BillPay API reference
+order: 5
+visible_in_sidebar: false
+---
diff --git a/content/payments/billpay/v1/overview.mdx b/content/payments/billpay/v1/overview.mdx
new file mode 100644
index 00000000..4153b2a1
--- /dev/null
+++ b/content/payments/billpay/v1/overview.mdx
@@ -0,0 +1,51 @@
+---
+sidebar_title: Overview
+page_title: BBPS Billpay Overview
+order: 0
+visible_in_sidebar: true
+---
+
+## BBPS BillPay
+
+### What is BBPS?
+
+BBPS, or Bharat Bill Payment System allows customers to pay 20k+ businesses across categories like utility bills, loan EMIs, school fees, and more—using a network of offline and online agents.
+
+### Who is an agent?
+
+An agent is a registered BBPS entity allowed to collect payments for BBPS billers across all categories.
+
+You may register as an agent on BBPS, to collect BBPS bill payments with Setu APIs on your supported collection channels (offline or online).
+
+### What can I do with this product?
+
+With Setu BillPay, you can enable a complete BBPS bill payment experience for your customers—from choosing business to pay, to fetching and paying bills—on your app or website. If you are a BBPS biller, you can even collect payments to your business directly.
+
+Setu BBPS BillPay connects with NPCI and provides simple RESTful APIs, some of which are asynchronous. This means that you may choose to consume
+only the APIs or optionally subscribe to the notifications Setu provides via webhooks.
+
+You may integrate with Setu in any of the following ways—
+
+-
+ API integration
+
+ —Register as an agent institution and use Setu APIs. Build your own screens
+ and use your own payment gateway.
+-
+ Website integration
+
+ —1 line integration with pre-built screens. Inbuilt UPI payment option.
+- App integration—Integrate with pre-built screens, as web views in your app. Support for Android and iOS. Inbuilt UPI payment option.
+
+
+
+ The default integration for Setu’s pre-built screens have an inbuilt UPI
+ payment option. However, you may use your own payment gateway too, by
+ supporting{" "}
+
+ a few more APIs
+
+ .
+
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens.mdx b/content/payments/billpay/v1/pre-built-screens.mdx
new file mode 100644
index 00000000..ff0968e3
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens.mdx
@@ -0,0 +1,6 @@
+---
+sidebar_title: Pre-built screens
+page_title: BBPS Billpay pre-built screens
+order: 2
+visible_in_sidebar: true
+---
diff --git a/content/payments/billpay/v1/pre-built-screens/api-reference-wl.mdx b/content/payments/billpay/v1/pre-built-screens/api-reference-wl.mdx
new file mode 100644
index 00000000..144c5fdb
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/api-reference-wl.mdx
@@ -0,0 +1,6 @@
+---
+sidebar_title: API reference
+page_title: BBPS Billpay API reference
+order: 4
+visible_in_sidebar: false
+---
diff --git a/content/payments/billpay/v1/pre-built-screens/api-reference.mdx b/content/payments/billpay/v1/pre-built-screens/api-reference.mdx
new file mode 100644
index 00000000..a7af8713
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/api-reference.mdx
@@ -0,0 +1,6 @@
+---
+sidebar_title: API reference
+page_title: BBPS Billpay API reference
+order: 4
+visible_in_sidebar: true
+---
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment.mdx
new file mode 100644
index 00000000..50a50a12
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment.mdx
@@ -0,0 +1,80 @@
+---
+sidebar_title: Custom payment
+page_title: BBPS Billpay custom payment
+order: 2
+visible_in_sidebar: true
+---
+
+## Enabling your payment gateway
+
+Setu’s pre-built screens solution supports UPI payments by default. However, you may want to integrate with your existing payment gateway, and these guides to enable you to do just that.
+
+
+
+### How to integrate
+
+#### Product flow
+
+
+
+
+ This gives an overview of how the payment flow works when a customer
+ is interacting with Setu’s pre-built screen solution—
+
+
+
+
+
+
+
+
+
+
+#### Server communication
+
+You need to call the following APIs—
+
+1.
+ Create one time link
+
+2.
+ Confirm payment
+ {" "}
+
+The following APIs need to be supported by you—
+
+1. Get payment status by order ID
+2. Refund transaction by order ID
+3. Receive events
+
+Please read more on required APIs here.
+
+
+
+#### Frontend integration
+
+Depending on the platform you have chosen, please read the appropriate guide to see how the integration between client and server works—
+
+-
+ Website
+
+-
+ Android
+
+-
+ iOS
+
+-
+ Cross platform
+
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment/android.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment/android.mdx
new file mode 100644
index 00000000..0992d18c
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment/android.mdx
@@ -0,0 +1,217 @@
+---
+sidebar_title: Android
+page_title: BBPS Billpay android integration for custom payment
+order: 3
+visible_in_sidebar: true
+---
+
+## Android integration with your own payment gateway
+
+
+ This quickstart explains how to integrate when you opt for your own payment
+ gateway. Use{" "}
+
+ this guide
+ {" "}
+ for Setu’s default UPI payment option.
+
+
+
+
+Setu provides ready to use URLs for the Android integration. Contact Setu to update your logo, colours, fonts as per your branding. You can reach out to billpay.support@setu.co for any further clarifications.
+
+
+
+### Step 1 — Implement web view in your app
+
+The following steps need to be taken for Android integration—
+
+1. Get link from the backend
+2. Open a webview and attach the android interface
+3. Handle payment flow
+
+
+
+##### Get link from the backend
+
+This step gives a one time Setu URL to be used by your customer for the bill fetch or payment flow. The Create link API needs to be called when Android app wants to obtain a one time link to load Setu’s screen flow inside a webview.
+
+
+ None of the parameters aside from mobile number are mandatory, but depending
+ on what is passed the returned link will display different UI.
+
+
+
+
+You can have the following scenarios—
+
+- If no other input is passed, it will take the user to the home page with all BBPS categories.
+- If category code is passed, it will show user a list of billers in that category.
+- If category code and biller ID is passed, it will show the bill fetch form where a customer can enter their identifers (biller specified parameters)
+- If the category code, biller ID and parameters are passed, it will show the bill directly.
+
+
+ All query parameters should be url-encoded to escape special characters
+
+
+
+
+The above request will return URL based on the input params. Here’s a sample—
+
+
+ {`{
+ "link": "https://billpay-qa.setu.co/1238993883748223",
+ "sessionId": "1238993883748223",
+ "success": true,
+ "traceId": "GHSUU99128DBVU"
+}`}
+
+
+
+
+##### Switch control from your app to Setu
+
+The link returned by the API should be loaded within Android in an activity class with a webview component.
+
+
+ {`public class DisplayWebView extends AppCompatActivity {
+ WebView myWebView;
+ public static final String LINK = "com.example.axispayemulator.LINK";
+ private class MyWebViewClient extends WebViewClient {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ if (Uri.parse(url).getHost().contains(".setu.co")) {
+ return false;
+ }
+ // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ startActivity(intent);
+ return true;
+ }
+ }
+ @Override
+ public void onBackPressed(){
+ if(myWebView.canGoBack()){
+ myWebView.goBack();
+ } else {
+ super.onBackPressed();
+ }
+ }
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ // Check if the key event was the Back button and if there's history
+ if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
+ myWebView.goBack();
+ return true;
+ }
+ // If it wasn't the Back key or there's no web page history, bubble up to the default
+ // system behavior (probably exit the activity)
+ return super.onKeyDown(keyCode, event);
+ }
+ @SuppressLint({"SetJavaScriptEnabled", "AddJavascriptInterface"})
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_display_web_view);
+ Intent intent = getIntent();
+ myWebView = findViewById(R.id.pswebview);
+ WebSettings webSettings = myWebView.getSettings();
+ webSettings.setJavaScriptEnabled(true);
+ MyWebViewClient client = new MyWebViewClient();
+ myWebView.setWebViewClient(client);
+ myWebView.setWebChromeClient(new WebChromeClient());
+ // Please make sure to keep the interface name Android
+ myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
+ String link = intent.getStringExtra(DisplayWebView.LINK);
+ myWebView.loadUrl(link);
+ myWebView.setDownloadListener(new DownloadListener() {
+ public void onDownloadStart(String url, String userAgent,
+ String contentDisposition, String mimetype,
+ long contentLength) {
+ Intent i = new Intent(Intent.ACTION_VIEW);
+ i.setData(Uri.parse(url));
+ startActivity(i);
+ }
+ });
+ }
+}`}
+
+
+Here is a sample of the Java Interface class needed by the webview—
+
+
+ {`public class WebAppInterface extends AppCompatActivity {
+ Context mContext;
+ /** Instantiate the interface and set the context */
+ WebAppInterface(Context c) {
+ mContext = c;
+ }
+ /** Show a toast from the web page */
+ @JavascriptInterface
+ public void initiatePayment(String orderId, String beneVpa, String amount, String callback, String remarks, String mobileNumber, String refId, String customerId, String allowedPaymentModes) {
+ Intent intent = new Intent(mContext, PaymentScreen.class);
+ intent.putExtra("BENE_VPA", beneVpa);
+ intent.putExtra("ORDER_ID", orderId);
+ intent.putExtra("AMOUNT", amount);
+ intent.putExtra("CALLBACK_URL", success_url);
+ intent.putExtra("REMARKS", remarks);
+ intent.putExtra("MOBILE_NUMBER", remarks);
+ intent.putExtra("REF_ID", refId);
+ intent.putExtra("CUSTOMER_ID", customerId);
+ intent.putExtra("ALLOWED_PAYMENT_MODES", allowedPaymentModes)
+ mContext.startActivity(intent);
+ }
+ /** Show a toast from the web page */
+ @JavascriptInterface
+ public void unload() {
+ Intent intent = new Intent(mContext, MainActivity.class);
+ mContext.startActivity(intent);
+ }
+}`}
+
+
+The interface will contain 2 methods—
+
+- `unload` This should be used by your app to dismiss the webview
+- `initiatePayment` This should be used by the parent app to initiate the payment
+
+
+ Special use case: This unload
function can also be used for dismissing the webview and redirecting a user back to your native app once a bill payment journey is completed (i.e. payment is successful) via a CTA from the Setu webview. Please let our team know if you would like to enable this use case for your app.
+
+
+
+
+##### Handle payment flow
+
+`initiatePayment` on the Android interface takes the following parameters
+
+- `orderId` on the Setu COU System. Example— `COUWLZ7pFtTgr9LtO`
+- `amount` to be paid by the customer: Example— `3522.20`
+- `callback` which needs to be loaded if the payment is completed. Example—`https://billpay.setu.co/cou/payment-callback/68c7217b-8fa7-4c1f-8e5f-317ff3027668`
+- `beneVpa` to which amount is to be transferred—this is relevant only if you can transfer in real time using UPI rails.
+- `remarks` used to communicate information between mobile app and webview
+- `mobileNumber` mobile number used for the session. Example - `9876543210`
+- `refId` BBPS reference ID linked to a particular bill (only available for fetch billers). Example - `CMA0I65RCU2I32C3L0H0KNYQYAG40021831`
+- `customerId` linked to a particular session. Example - `cust@1234`
+- `allowedPaymentModes` comma separated list of modes allowed for this payment. One of these should be sent in the `paymentMode` in the payment confirmation webhook.
+
+When `initiatePayment` is called by the webview, your app needs to do the following—
+
+1. Remove the webview
+2. Initiate the payment flow
+3. Send Setu the webhook event for payment. Documented here. This need not be done for UPI transfers in real time.
+4. Once payment is executed, load the webview again for callback URL
+
+
+
+### Step 2 — Optionally configure webhook
+
+You may optionally want to listen to user events—like successful or failed bill fetch, bill payment status and more—through webhooks. Refer to this guide for more information.
+
+
+
+### Step 3 — Get Production credentials and go live
+
+Once you are done testing your integration, ensure that all KYC and legal agreements are submitted. Contact Setu for getting enabled on production.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment/apis.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment/apis.mdx
new file mode 100644
index 00000000..981c177d
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment/apis.mdx
@@ -0,0 +1,183 @@
+---
+sidebar_title: Required APIs
+page_title: BBPS Billpay APIs for custom payment
+order: 1
+visible_in_sidebar: true
+---
+
+## APIs required for custom payment
+
+APIs for integrating your own payment gateway
+
+
+
+### Webhook
+
+The following API needs to be integrated by you, and is sent in the case of a successful or failed payment. Please build retry mechanisms to account for network & http errors. The API is idempotent on our end.
+
+**URL**
+
+`/webhooks/payment-event`
+
+**Headers**
+
+
+ {`Content-type: application/json`}
+
+
+**Request**
+
+
+ {`{
+ "orderId": "COUWLje9V7wWs9N3w",
+ "transactionId": "UNIQUE_PAYMENT_TRANSACTION_ID",
+ "paymentDateTime": "YYYY-MM-DD HH:MM:SS in UTC",
+ "amount": "100.00",
+ "paymentMode": "CASH|UPI|IMPS|NEFT|AEPS|ACCOUNT TRANSFER|INTERNET BANKING|WALLET|DEBIT CARD|CREDIT CARD|PREPAID CARD|Bharat QR|USSD",
+ "paymentStatus": "SUCCESS|FAILURE"
+}`}
+
+
+The `orderId` is always prefixed with `COUWL` to identify Setu payment requests.
+
+**Response**
+
+
+ {`{
+ "status": "acknowledged"
+}`}
+
+
+
+
+### APIs you need to support
+
+These APIs are needed to handle various payment scenarios and let Setu know about payment status.
+
+##### Get payment status
+
+**URL**
+
+As provided by you, with the suffix `/setu/v1/getPaymentStatus`.
+
+For example, if the URL provided by you is `https://example.com`, the URL for this API will be `https://example.com/setu/v1/getPaymentStatus`.
+
+**Headers**
+
+
+ {`X-SETU-BILLPAY-API-KEY: 77kxHrhbKNYXMwzHWFranymXV2xRkSRE
+Content-Type: application/json`}
+
+
+**Request**
+
+
+ {`{
+ "orderId": "COUWLje9V7wWs9N3w"
+}`}
+
+
+**Response**
+
+
+ {`{
+ "status": "success/invalid-order-id",
+ "message": "",
+ "data": {
+ "orderId": "COUWLje9V7wWs9N3w",
+ "transactionId": "UNIQUE_PAYMENT_TRANSACTION_ID",
+ "paymentDateTime": "YYYY-MM-DD HH:MM:SS in UTC",
+ "amount": "100.00",
+ "paymentMode": "CASH|UPI|IMPS|NEFT|AEPS|ACCOUNT TRANSFER|INTERNET BANKING|WALLET|DEBIT CARD|CREDIT CARD|PREPAID CARD|Bharat QR|USSD",
+ "paymentStatus": "SUCCESS|FAILURE"
+ }
+}`}
+
+
+
+
+##### Refund
+
+This API should be be idempotent on your end.
+
+**URL**
+
+As provided by you, with the suffix `/setu/v1/refund`.
+
+For example, if the URL provided by you is `https://example.com`, the URL for this API will be `https://example.com/setu/v1/refund`.
+
+**Headers**
+
+
+ {`X-SETU-BILLPAY-API-KEY: 77kxHrhbKNYXMwzHWFranymXV2xRkSRE
+Content-Type: application/json`}
+
+
+**Request**
+
+
+ {`{
+ "orderId": "COUWLje9V7wWs9N3w",
+ "amount": "100.00",
+ "transactionId": "UNIQUE_PAYMENT_TRANSACTION_ID"
+}`}
+
+
+**Response**
+
+
+ {`{
+ "status": "success/failure",
+ "message": "Accepted/Reason for rejection",
+ "data": {
+ "orderId": "COUWLje9V7wWs9N3w",
+ "transactionId": "UNIQUE_PAYMENT_TRANSACTION_ID",
+ "refundId": "UNIQUE_REFUND_ID"
+ }
+}`}
+
+
+
+
+##### Refund status — optional webhook
+
+**URL**
+
+`/webhooks/refund-event`
+
+**Headers**
+
+
+ {`Content-type: application/json
+x-api-user: api user name issued by Setu
+x-api-password: api password issued by Setu`}
+
+
+**Request**
+
+
+ {`{
+ "orderId": "COUWLje9V7wWs9N3w",
+ "refundId": "UNIQUE_REFUND_ID",
+ "refundStatus": "success/failure",
+ "refundDateTime": "YYYY-MM-DD HH:MM:SS in UTC"
+}`}
+
+
+**Response**
+
+
+ {`{
+ "status": "acknowledged"
+}`}
+
+
+See API reference for more information.
+
+
+
+### Listen to user events
+
+You can optionally listen to events sent by Setu. Please check supported user events.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment/cross-platform.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment/cross-platform.mdx
new file mode 100644
index 00000000..dd98078b
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment/cross-platform.mdx
@@ -0,0 +1,208 @@
+---
+sidebar_title: Cross platform
+page_title: BBPS Billpay cross-platform integration for custom payment
+order: 3
+visible_in_sidebar: true
+---
+
+## Cross platform integration with your own payment gateway
+
+
+ This quickstart explains how to integrate when you opt for your own payment
+ gateway. Use{" "}
+
+ this guide
+ {" "}
+ for Setu’s default UPI payment option.
+
+
+
+
+In case you are using a cross platform solution—like **Flutter, React Native, Ionic**—for your Android and iOS apps, you can refer to the code snippets provided below for a custom payment integration. The integration process remains the same, but changes as per the language you use.
+
+The code snippets provided below deal specifically with how the web view is loaded and dismissed within your Android/iOS app. Usage of the Create Link API will remain unaffected.
+
+### Flutter
+
+#### Step 1 - Implement webview in your app
+
+The following steps need to be taken for webview integration—
+
+1. Get link from the backend
+2. Open the link in `InAppWebView` and attach a `WebViewController`
+3. Execute payment flow and redirect back to the `InWebView` post payment
+
+##### Switch control from your app to Setu
+
+The link returned by the Create link API should be loaded within the Webview. Our sample below uses the [flutter_inappwebview](https://pub.dev/packages/flutter_inappwebview) plugin for webviews. Feel free to use a plugin as per your requirements.
+
+The `controller` will need to implement two JavaScript handlers -
+
+- `initiatePayment` - Used to initiate payment & transfer control from Setu webview to the flutter application.
+- `unload` - Used by the parent app to dismiss the webview
+
+
+ Special use case: This unload
function can also be used for dismissing the webview and redirecting a user back to your native app once a bill payment journey is completed (i.e. payment is successful) via a CTA from the Setu webview. Please let our team know if you would like to enable this use case for your app.
+
+
+
+
+ Note: For downloading and saving transaction receipts from the webview, the webview will need to handle a onDownloadStartRequest
(or a similar function as per your webview plugin). Our sample below uses the flutter_downloader and path_provider plugins for downloading and saving transaction receipts. Please follow the plugin specific documentation for implementation. Make sure you have added necessary permissions in your AndroidManifest.xml
and Info.plist
files for downloading and saving files.
+
+
+
+
+{`
+ import 'dart:io';
+ import 'dart:isolate';
+ import 'dart:ui';
+ import 'package:flutter/material.dart';
+ import 'package:url_launcher/url_launcher.dart';
+ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
+ import 'package:flutter_downloader/flutter_downloader.dart';
+ import 'package:path_provider/path_provider.dart';
+ Future main() async {
+ WidgetsFlutterBinding.ensureInitialized();
+ await FlutterDownloader.initialize(
+ debug: true, // optional: set false to disable printing logs to console
+ );
+ runApp(new MyApp());
+ }
+ class MyApp extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ home: RpWebPage(
+ link: 'https://billpay.setu.co/1234',
+ ), // Replace with the actual URL
+ );
+ }
+ }
+ class RpWebPage extends StatefulWidget {
+ const RpWebPage({super.key, required this.link});
+ final String link;
+ @override
+ State createState() => _RpWebPageState();
+ }
+ class _RpWebPageState extends State {
+ late InAppWebViewController webView;
+ bool isButtonClicked = false;
+ @override
+ void initState() {
+ super.initState();
+ }
+ void _loadUrl() {
+ setState(() {
+ isButtonClicked = true;
+ });
+ }
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text('Bill Payments'),
+ ),
+ body: Column(
+ children: [
+ if (!isButtonClicked)
+ ElevatedButton(
+ onPressed: _loadUrl,
+ child: Text('Load webview'),
+ ),
+ Expanded(
+ child: isButtonClicked
+ ? InAppWebView(
+ initialSettings: InAppWebViewSettings(
+ allowFileAccess: true,
+ allowFileAccessFromFileURLs: true
+ ),
+ initialUrlRequest: URLRequest(url: WebUri.uri(Uri.parse(widget.link))),
+ onWebViewCreated: (InAppWebViewController controller) {
+ webView = controller;
+ },
+ onLoadStop: (controller, url) async {
+ controller.addJavaScriptHandler(
+ handlerName: 'initiatePayment',
+ callback: (args) async {
+ print('Received from WebView: $args');
+ var paymentData = args[0];
+ print('Payment data: $paymentData');
+ // add your custom payment logic here
+ },
+ );
+ controller.addJavaScriptHandler(
+ handlerName: 'unload',
+ callback: (args) async {
+ // logic to close webview and return to app
+ },
+ );
+ },
+ // Handle downloading the receipt
+ onDownloadStartRequest: (controller, request) async {
+ print("onDownloadStart $request");
+ final dir = Platform.isAndroid
+ ? (await getExternalStorageDirectory())?.path
+ : (await getApplicationDocumentsDirectory()).uri.path;
+ print("saving in $dir");
+ final taskId = await FlutterDownloader.enqueue(
+ url: request.url.toString(),
+ savedDir: dir!,
+ showNotification: true, // show download progress in status bar (for Android)
+ openFileFromNotification: true, // click on notification to open downloaded file (for Android)
+ saveInPublicStorage: true,
+ allowCellular: true
+ );
+ // Open the downloaded file
+ await FlutterDownloader.open(taskId: taskId!);
+ },
+ )
+ : Container(),
+ ),
+ ],
+ ),
+ );
+ }
+ }
+`}
+
+
+##### Handle payment flow
+
+The `initiatePayment` method in the `controller` takes an object param with the following fields
+
+- `orderId` on the Setu COU System. It always starts with `COUWL`. Example— `COUWLZ7pFtTgr9LtO`
+- `amount` to be paid by the customer. Example — `3522.20`
+- `callback` URL which needs to be loaded in the webview once the payment is completed. Example —`https://billpay.setu.co/payment-callback/68c7217b-8fa7-4c1f-8e5f-317ff3027668`
+- `beneVpa` to which amount is to be transferred—this is relevant only if you can transfer in real time using UPI rails.
+- `remarks` used to communicate information between mobile app and webview
+- `mobileNumber` mobile number used for the session. Example - `9876543210`
+- `refId` BBPS reference ID linked to a particular bill (only available for fetch billers). Example - `CMA0I65RCU2I32C3L0H0KNYQYAG40021831`
+- `customerId` linked to a particular session. Example - `cust@1234`
+- `allowedPaymentModes` comma separated list of modes allowed for this payment. One of these should be sent in the `paymentMode` in the payment confirmation webhook.
+
+When initiate_payment case is called by the webview, your app needs to do the following—
+
+1. Remove the webview
+2. Initiate the payment flow
+3. Send Setu the webhook event for payment—this need not be done for UPI transfers in real time
+4. Once payment is executed, load the webview again with the callback URL
+
+
+
+#### Step 2 — Optionally configure webhook
+
+You may optionally want to listen to user events—like successful or failed bill fetch, bill payment status and more—through webhooks. Refer to this guide for more information.
+
+
+
+#### Step 3 — Get Production credentials and go live
+
+Once you are done testing your integration, ensure that all KYC and legal agreements are submitted. Contact Setu for getting enabled on production.
+
+
+
+
+ We are updating the docs for custom payment based integration for other cross platform frameworks like React native
Please bear with us for a while.
+
+
+
\ No newline at end of file
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment/iOS.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment/iOS.mdx
new file mode 100644
index 00000000..c1eb8a0d
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment/iOS.mdx
@@ -0,0 +1,203 @@
+---
+sidebar_title: iOS
+page_title: BBPS Billpay iOS integration for custom payment
+order: 4
+visible_in_sidebar: true
+---
+
+## iOS integration with your own payment gateway
+
+
+ This quickstart explains how to integrate when you opt for your own payment
+ gateway. Use{" "}
+
+ this guide
+ {" "}
+ for Setu’s default UPI payment option.
+
+
+
+
+Setu provides ready to use URLs for iOS integration. Contact Setu to update your logo, colours, fonts as per your branding. You can reach out to billpay.support@setu.co for any further clarifications. This quickstart page provides the sample code for the following specs—
+
+- **Programming language** — Swift 5.\* (Latest version 5.3)
+- **Interface** — Storyboard
+- **Life Cycle delegation** — UI Kit
+- **iOS versions supported** — 12+ (Latest version 14.4)
+
+
+
+### Step 1 — Implement web view in your app
+
+The following steps need to be taken for webview integration—
+
+1. Get link from the backend
+2. Open the link in `WKWebView` and attach a `userContentController`
+3. Execute payment flow and redirect back to the `WKWebView` on success/failure
+
+
+
+##### Get link from the backend
+
+This step gives a one time Setu URL to be used by your customer for the bill fetch or payment flow. The Create link API needs to be called when Android app wants to obtain a one time link to load Setu’s screen flow inside a webview.
+
+
+ None of the parameters aside from mobile number are mandatory, but depending
+ on what is passed the returned link will display different UI.
+
+
+
+
+You can have the following scenarios—
+
+- If no other input is passed, it will take the user to the home page with all BBPS categories.
+- If category code is passed, it will show user a list of billers in that category.
+- If category code and biller ID is passed, it will show the bill fetch form where a customer can enter their identifers (biller specified parameters)
+- If the category code, biller ID and parameters are passed, it will show the bill directly.
+
+
+ All query parameters should be url-encoded to escape special characters
+
+
+
+
+The above request will return URL based on the input params. Here’s a sample—
+
+
+ {`{
+ "link": "https://billpay-qa.setu.co/1238993883748223",
+ "sessionId": "1238993883748223",
+ "success": true,
+ "traceId": "GHSUU99128DBVU"
+}`}
+
+
+
+
+##### Switch control from your app to Setu
+
+The link returned by the API should be loaded within `WKWebView` in a `ViewController` which implements `UIViewController`, and `WKScriptMessageHandler`. The controller must also extend and use a custom `WKNavigationDelegate` class to intercept and download PDF files.
+
+The `userContentController` will need to implement two functions—
+
+- `initiate_payment` — Used to initiate payment and transfer control from webview to iOS application
+- `unload` — Used by the parent app to dismiss the webview
+
+
+ Special use case: This unload
function can also be used for dismissing the webview and redirecting a user back to your native app once a bill payment journey is completed (i.e. payment is successful) via a CTA from the Setu webview. Please let our team know if you would like to enable this use case for your app.
+
+
+
+
+
+{`// The iOS observer function
+func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
+ guard let dict = message.body as ? [String: AnyObject]
+ else {
+ return
+ }
+ let functionToPerform: String = dict["function"] as ? String ?? ""
+
+ switch functionToPerform {
+ case "initiate_payment":
+ let successLink = dict["data"]?["callback"] as! String
+ let remarks = dict["data"]?["remarks"] as! String
+ let billAmount = dict["data"]?["amount"] as! String
+ let orderID = dict["data"]?["orderId"] as! String
+ let beneficiaryVPA = dict["data"]?["beneficiaryVPA"] as! String
+ let mobileNumber = dict["data"]?["mobileNumber"] as! String
+ let refId = dict["data"]?["refId"] as! String
+ let customerId = dict["data"]?["customerId"] as! String
+ let allowedPaymentModes = dict["data"]?["allowedPaymentModes"] as! String
+
+ let vc = PaymentViewController(
+ successLink: successLink + successParams,
+ remarks: remarks,
+ billAmount: billAmount,
+ orderID: orderID,
+ beneficiaryVPA: beneficiaryVPA,
+ mobileNumber: mobileNumber,
+ refId: refId,
+ customerId: customerId,
+ allowedPaymentModes: allowedPaymentModes
+ )
+
+ let navVC = UINavigationController(rootViewController: vc)
+ present(navVC, animated: true)
+ case "unload": closeView()
+ default: break
+ }
+}`}
+
+
+
+The `WKWebviewDownloadHelper` which downloads our PDF file is used as below
+
+
+ {`override func viewDidLoad() {
+ super.viewDidLoad()
+ let mimeTypes = [MimeType(type: "pdf", fileExtension: "pdf")]
+ helper = WKWebviewDownloadHelper(webView: webView, mimeTypes: mimeTypes, delegate: self)
+ webView.configuration.userContentController.add(self, name: "ios_observer")
+}`}
+
+
+`WKWebviewDownloadHelper` is dependent on the custom `WKNavigationDelegate` class
+
+
+ {`extension WebViewController: WKWebViewDownloadHelperDelegate {
+ func fileDownloadedAtURL(url: URL) {
+ DispatchQueue.main.async {
+ let activityVC = UIActivityViewController(activityItems: [url], applicationActivities: nil)
+ activityVC.popoverPresentationController?.sourceView = self.view
+ activityVC.popoverPresentationController?.sourceRect = self.view.frame
+ activityVC.popoverPresentationController?.barButtonItem = self.navigationItem.rightBarButtonItem
+ self.present(activityVC, animated: true, completion: nil)
+ }
+ }
+}`}
+
+
+
+
+##### Handle payment flow
+
+The `initiate_payment` case in the the `userContentController` takes the following parameters
+
+- `orderId` on the Setu COU System. It always starts with `COUWL`. Example— `COUWLZ7pFtTgr9LtO`
+- `amount` to be paid by the customer. Example — `3522.20`
+- `callback` URL which needs to be loaded in the webview once the payment is completed. Example — `https://billpay.setu.co/payment-callback/68c7217b-8fa7-4c1f-8e5f-317ff3027668`
+- `beneficiaryVPA` to which amount is to be transferred—this is relevant only if you can transfer in real time using UPI rails.
+- `remarks` used to communicate information between mobile app and webview.
+- `mobileNumber` mobile number used for the session. Example - `9876543210`
+- `refId` BBPS reference ID linked to a particular bill (only available for fetch billers). Example - `CMA0I65RCU2I32C3L0H0KNYQYAG40021831`
+- `customerId` linked to a particular session. Example - `cust@1234`
+- `allowedPaymentModes` comma separated list of modes allowed for this payment. One of these should be sent in the `paymentMode` in the payment confirmation webhook.
+
+When `initiate_payment` case is called by the `webview`, your app needs to do the following-
+
+1. Remove the webview
+2. Initiate the payment flow
+3. Send Setu the webhook event for payment—this need not be done for UPI transfers in real time
+4. Once payment is executed, load the webview again with the callback URL
+
+
+ Note that any ViewController
relating to the payment flow, will
+ need to set the property isModalInPresentation
as{" "}
+ true
—to prevent user from scrolling back to the previous screen
+ while the transfer of control is in process.
+
+
+
+
+### Step 2 — Optionally configure webhook
+
+You may optionally want to listen to user events—like successful or failed bill fetch, bill payment status and more—through webhooks. Refer to this guide for more information.
+
+
+
+### Step 3 — Get Production credentials and go live
+
+Once you are done testing your integration, ensure that all KYC and legal agreements are submitted. Contact Setu for getting enabled on production.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment/website.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment/website.mdx
new file mode 100644
index 00000000..c2b76d5f
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment/website.mdx
@@ -0,0 +1,92 @@
+---
+sidebar_title: Website
+page_title: BBPS Billpay website integration for custom payment
+order: 2
+visible_in_sidebar: true
+---
+
+## Web integration with your own payment gateway
+
+
+ This quickstart explains how to integrate when you opt for your own payment
+ gateway. Use{" "}
+
+ this guide
+ {" "}
+ for Setu’s default UPI payment option.
+
+
+### The payment flow
+
+The following steps describe a typical payment scenario—
+
+1. User initiates bill payment on Setu’s pre-built screen
+2. Setu calls the Get payment link API from Setu backend to your backend—you give us a one time link where we can redirect your customer for payment
+3. User is redirected to the one time link, and the payment is handled by you
+4. User completes payment
+5. We get webhook event confirming payment
+6. You redirect the user back to the post payment URL, depending on success or failure of payment.
+
+
+
+
+
+#### Get payment link API
+
+You need to implement the following API for this purpose
+
+**URL**
+
+As you provided by you, with the suffix: `/setu/v1/getPaymentLink`.
+
+For example, if the URL provided by you is `https://example.com`, the URL for this API will be `https://example.com/setu/v1/getPaymentLink`.
+
+**Headers**
+
+
+ {`X-SETU-BILLPAY-API-KEY: 77kxHrhbKNYXMwzHWFranymXV2xRkSRE
+Content-Type: application/json`}
+
+
+Note that the API key is issued by you
+
+**Request**
+
+
+ {`{
+ "orderId": "je9V7wWs9N3w",
+ "amount": 1201.00,
+ "customerMobileNumber": "9481773053",
+ "postPaymentUrl": "https://billpay.setu.co/payment/post-payment/c4e154e6-7b2b-4e0a-9749-60499b61ce93",
+ "allowedPaymentModes": [
+ "CASH", "UPI", "CREDIT CARD" // list of allowed values for "paymentMode" in webhooks
+ ]
+}`}
+
+
+**Response**
+
+
+ {`{
+ "code": "success",
+ "data": {
+ "link": "https://example.com/onetimepayment-link"
+ }
+}`}
+
+
+The following codes are supported by Setu—
+
+- `success`
+- `invalid-mobile-number`
+- `insufficient-balance`
+
+The user will proceed to pay on the link. Once the payment is done, the following steps need to be completed by you—
+
+1. Send Setu the webhook event for payment.
+2. Redirect the user to post payment page at `postPaymentUrl` provided above.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/quickstart.mdx b/content/payments/billpay/v1/pre-built-screens/quickstart.mdx
new file mode 100644
index 00000000..874fa84e
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/quickstart.mdx
@@ -0,0 +1,24 @@
+---
+sidebar_title: Quickstart
+page_title: BBPS Billpay Quickstart
+order: 1
+visible_in_sidebar: true
+---
+
+## Quickstart—Pre-built screens
+
+We offer this product in different integration modes. Choose how you’d like to integrate and get started right away.
+
+
+
+
+
+
+ Setu’s pre-built screens—for website, iOS and Android—come with in-built UPI
+ payment option. However, if you’d like to integrate your own payment gateway,
+ please refer to{" "}
+
+ these guides
+ {" "}
+ too.
+
\ No newline at end of file
diff --git a/content/payments/billpay/v1/pre-built-screens/quickstart/android.mdx b/content/payments/billpay/v1/pre-built-screens/quickstart/android.mdx
new file mode 100644
index 00000000..829172ec
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/quickstart/android.mdx
@@ -0,0 +1,179 @@
+---
+sidebar_title: Android
+page_title: BBPS Billpay Android integration
+order: 2
+visible_in_sidebar: true
+---
+
+## Android integration
+
+Setu provides ready to use URLs for the Android integration. Contact Setu to update your logo, colours, fonts as per your branding. You can reach out to billpay.support@setu.co for any further clarifications.
+
+
+ This quickstart provides the integration guidelines for Android integration
+ with Setu’s default UPI payment option. If you’d like to use your own
+ payment gateway, please refer to{" "}
+
+ this guide
+ {" "}
+ instead.
+
+
+
+
+### Step 1 — Implement web view in your app
+
+The following steps need to be taken for Android integration—
+
+1. Get link from the backend
+2. Open a webview and attach the Android interface
+
+
+
+#### Get link from the backend
+
+This step gives a one time Setu URL to be used by your customer for the bill fetch or payment flow. The Create link API needs to be called when Android app wants to obtain a one time link to load Setu’s screen flow inside a webview.
+
+
+ None of the parameters aside from mobile number are mandatory, but depending
+ on what is passed the returned link will display different UI.
+
+
+
+
+You can have the following scenarios, depending on what you choose to send along with the customer’s mobile number—
+
+- If no other input is passed, it will take the user to the home page with all BBPS categories.
+- If category code is passed, it will show user a list of billers in that category.
+- If category code and biller ID is passed, it will show the bill fetch form where a customer can enter their identifers (biller specified parameters)
+- If the category code, biller ID and parameters are passed, it will show the bill directly.
+
+
+ All query parameters should be url-encoded to escape special characters
+
+
+
+
+The above request will return URL based on the input params. Here’s a sample—
+
+
+ {`{
+ "link": "https://billpay-qa.setu.co/1238993883748223",
+ "sessionId": "1238993883748223",
+ "success": true,
+ "traceId": "GHSUU99128DBVU"
+}`}
+
+
+
+
+#### Switch control from your app to Setu
+
+The link returned by the API should be loaded within Android in an activity class with a webview component.
+
+If you’re using a cross platform solution—like Flutter, React Native, Ionic—look at the code snippets provided here.
+
+
+ {`public class DisplayWebView extends AppCompatActivity {
+ WebView myWebView;
+ public static final String LINK = "com.example.axispayemulator.LINK";
+ private class MyWebViewClient extends WebViewClient {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ if (Uri.parse(url).getHost().contains(".setu.co")) {
+ return false;
+ }
+ // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ startActivity(intent);
+ return true;
+ }
+ }
+ @Override
+ public void onBackPressed(){
+ if(myWebView.canGoBack()){
+ myWebView.goBack();
+ } else {
+ super.onBackPressed();
+ }
+ }
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ // Check if the key event was the Back button and if there's history
+ if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
+ myWebView.goBack();
+ return true;
+ }
+ // If it wasn't the Back key or there's no web page history, bubble up to the default
+ // system behavior (probably exit the activity)
+ return super.onKeyDown(keyCode, event);
+ }
+ @SuppressLint({"SetJavaScriptEnabled", "AddJavascriptInterface"})
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_display_web_view);
+ Intent intent = getIntent();
+ myWebView = findViewById(R.id.pswebview);
+ WebSettings webSettings = myWebView.getSettings();
+ webSettings.setJavaScriptEnabled(true);
+ MyWebViewClient client = new MyWebViewClient();
+ myWebView.setWebViewClient(client);
+ // Please make sure to keep the interface name Android
+ myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
+ String link = intent.getStringExtra(DisplayWebView.LINK);
+ myWebView.loadUrl(link);
+ myWebView.setDownloadListener(new DownloadListener() {
+ public void onDownloadStart(String url, String userAgent,
+ String contentDisposition, String mimetype,
+ long contentLength) {
+ Intent i = new Intent(Intent.ACTION_VIEW);
+ i.setData(Uri.parse(url));
+ startActivity(i);
+ }
+ });
+ }
+}`}
+
+
+
+Here is a sample of the Java Interface class needed by the webview
+
+
+ {`public class WebAppInterface extends AppCompatActivity {
+ Context mContext;
+ /** Instantiate the interface and set the context */
+ WebAppInterface(Context c) {
+ mContext = c;
+ }
+ /** Unload webview */
+ @JavascriptInterface
+ public void unload() {
+ Intent intent = new Intent(mContext, MainActivity.class);
+ mContext.startActivity(intent);
+ }
+}`}
+
+
+
+The interface will contain 1 method—
+
+- `unload` This should be used by the your app to dismiss the webview.
+
+
+ Special use case: This unload
function can also be used for dismissing the webview and redirecting a user back to your native app once a bill payment journey is completed (i.e. payment is successful) via a CTA from the Setu webview. Please let our team know if you would like to enable this use case for your app.
+
+
+
+
+### Step 2 — Optionally configure webhook
+
+You may optionally want to listen to user events—like successful or failed bill fetch, bill payment status and more—through webhooks. Refer to this guide for more information.
+
+
+
+### Step 3 — Get Production credentials and go live
+
+Once you are done testing your integration, ensure that all KYC and legal agreements are submitted. Contact Setu for getting enabled on production.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/quickstart/api.mdx b/content/payments/billpay/v1/pre-built-screens/quickstart/api.mdx
new file mode 100644
index 00000000..d377ff49
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/quickstart/api.mdx
@@ -0,0 +1,152 @@
+---
+sidebar_title: API
+page_title: BBPS Billpay API
+order: 2
+visible_in_sidebar: true
+---
+
+## API integration
+
+Setu BillPay allows you to register as an agent on the BBPS network and enable BBPS bill payments on your app or website. All approvals are done by Setu, our bank partner and BBPS.
+
+This quickstart covers how you can integrate with our APIs, develop corresponding screen flows and go live with BBPS payments.
+
+
+
+### How to integrate
+
+
+ Use provided{" "}
+
+ API reference
+ {" "}
+ to start integration. Request for a detailed API run through from Setu team,
+ if needed. Contact us at billpay.support@setu.co, should you
+ need any help during integration.
+
+
+A summary of the integration process—
+
+1. Get UAT credentials and start integration
+2. Share screens for NPCI approval
+3. Run and submit test cases
+4. Submit details for agent ID creation
+5. Get production credentials and go live
+
+Each of these steps are described in detail below.
+
+
+ Look at the{" "}
+
+ polling mechanism
+ {" "}
+ that should be implemented to correctly retrieve API results.
+
+
+
+
+#### Step 1 — Get UAT credentials and start integration
+
+UAT credentials are issued after Setu and the bank complete evaluation of your agent application. Using the UAT credentials you can access the Mock / UAT environments.
+
+
+ Use the mock and UAT environment to test your implementation end to end with
+ sample data.{" "}
+
+
+##### Mock environment
+
+The mock environment is provided by Setu to mimic all error codes you would encounter in the live environment, so that you can get a consistent experience while doing development. Use the integration process outlined here.
+
+##### UAT environment
+
+The UAT environment is a fully integrated environment involving Setu, the bank, BBPS UAT & biller systems.
+
+
+ There is a small chance that the all components may not have uptime since it
+ is UAT.
+
+
+
+
+#### Step 2 — Share screens for NPCI approval
+
+The screens you build as part of your app needs to conform to BBPS guidelines. You should submit a document with screenshots for the following screens—
+
+- **Category list screen**, on which all BBPS categories are listed.
+- **Biller list screen**, on which all billers under a selected category are listed.
+- **Customer input screen**, where a customer enters identifiers specific to a selected biller, before their bill can be fetched.
+- **Payment confirmation screen**, on which the customer confirms bill amount and proceeds with payment.
+- **Payment status screen**, when payment is being processed and is finally either successful or failed.
+- **Confirmation SMS**, this is the text that is sent after a payment is successful or failed.
+- **Bill receipt screen**, through which a customer can view and download receipt for a successful transaction.
+- **Raise complaint screen**, where a customer can raise complaint. Complaints are raised against specific transaction IDs.
+- **Complaint status screen**, where a customer can see the latest status associated with registered complaint.
+
+
+ You may use the BBPS logo and branding guidelines provided{" "}
+
+ here
+
+ .{" "}
+
+
+
+
+
+ Here is a{" "}
+
+ BBPS-compliant UX flow
+ {" "}
+ and a quick summary of BBPS guidelines to keep in mind—,
+
+
+- The app / website UI must contain a button for “Pay bills” with the BBPS logo shown.
+- BBPS logo must be present on top right corner of all screens used by customer during search of biller or bill and also for screens relating to payment of bill.
+- BBPS assured logo must always be shown on the payment sucessful and payment receipt pages. The regular BBPS logo can be removed from these.
+
+
+
+#### Step 3 — Run and submit test cases
+
+Run test cases mentioned in this document and submit documented results using a copy of the provided file. The results will verified by Setu and the bank to generate production credentials.
+
+
+ Postman logs not considered valid. Share results only once screen integration
+ is complete.{" "}
+
+
+
+
+#### Step 4 — Submit details for agent ID creation
+
+To operate on BBPS as an agent you need to create an agent ID. You need to submit details in a format specified by Setu, and you will get agent ID corresponding to one of the following agent categories—
+
+- Internet banking
+- Internet application
+- Mobile banking
+- Mobile application
+- Business correspondent
+- Bank branch
+- ATM
+- Kiosk
+- Offline agent
+
+
+ If you wish to support any offline collections, you will need to create agent
+ IDs for all your offline collection points.
+
+
+
+
+#### Step 5 — Get Production credentials and go live
+
+You will receive production credentials once all the approvals and agreements are done. On receiving the production credentials, you can verify your integration and go live.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/quickstart/cross-platform.mdx b/content/payments/billpay/v1/pre-built-screens/quickstart/cross-platform.mdx
new file mode 100644
index 00000000..7a4d8df9
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/quickstart/cross-platform.mdx
@@ -0,0 +1,229 @@
+---
+sidebar_title: Cross platform
+page_title: BBPS Billpay cross platform integration
+order: 4
+visible_in_sidebar: true
+---
+
+## Cross platform implementation
+
+In case you are using a cross platform solution—like Flutter, React Native, Ionic—for your Android and iOS apps, you can refer to the code snippets provided below. The integration process remains the same, but changes as per the language you use.
+
+The code snippets provided below deal specifically with how the web view is loaded and dismissed within your Android/iOS app. Usage of the Create Link API will remain unaffected.
+
+
+
+### Flutter
+
+##### Switch control from your app to Setu
+The link returned by the Create link API should be loaded within a webview. Our sample below uses the [flutter_inappwebview](https://pub.dev/packages/flutter_inappwebview) plugin for webviews. Feel free to use a plugin as per your requirements.
+
+The webview `controller` will need to implement one JavaScript handler -
+
+- `unload` - Used by the parent app to dismiss the webview
+
+
+ Special use case: This unload
function can also be used for dismissing the webview and redirecting a user back to your native app once a bill payment journey is completed (i.e. payment is successful) via a CTA from the Setu webview. Please let our team know if you would like to enable this use case for your app.
+
+
+
+Make sure you are handling these functionalities in your webview for a seamless user experience:
+
+- If you are integrating with our default UPI payment option, the webview needs to handle UPI app specific intents using a `shouldOverrideUrlLoading` (or a similar function as per your webview plugin). This function is used to handle UPI app specific schemes and open the UPI app.
+
+- For downloading and saving transaction receipts from the webview, the webview will need to handle a `onDownloadStartRequest` (or a similar function as per your webview plugin). Our sample below uses the [flutter_downloader](https://pub.dev/packages/flutter_downloader) and [path_provider](https://pub.dev/packages/path_provider) plugins for downloading and saving transaction receipts. Please follow the plugin specific documentation for implementation. Make sure you have added necessary permissions in your `AndroidManifest.xml` and `Info.plist` files for downloading and saving files.
+
+
+{`
+ import 'dart:io';
+ import 'dart:isolate';
+ import 'dart:ui';
+ import 'package:flutter/material.dart';
+ import 'package:url_launcher/url_launcher.dart';
+ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
+ import 'package:flutter_downloader/flutter_downloader.dart';
+ import 'package:path_provider/path_provider.dart';
+ Future main() async {
+ WidgetsFlutterBinding.ensureInitialized();
+ await FlutterDownloader.initialize(
+ debug: true, // optional: set false to disable printing logs to console
+ );
+ runApp(new MyApp());
+ }
+ class MyApp extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ home: RpWebPage(
+ link: 'https://billpay.setu.co/1234',
+ ), // Replace with the actual URL
+ );
+ }
+ }
+ class RpWebPage extends StatefulWidget {
+ const RpWebPage({super.key, required this.link});
+ final String link;
+ @override
+ State createState() => _RpWebPageState();
+ }
+ class _RpWebPageState extends State {
+ late InAppWebViewController webView;
+ bool isButtonClicked = false;
+ @override
+ void initState() {
+ super.initState();
+ }
+ void _loadUrl() {
+ setState(() {
+ isButtonClicked = true;
+ });
+ }
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text('Bill Payments'),
+ ),
+ body: Column(
+ children: [
+ if (!isButtonClicked)
+ ElevatedButton(
+ onPressed: _loadUrl,
+ child: Text('Load webview'),
+ ),
+ Expanded(
+ child: isButtonClicked
+ ? InAppWebView(
+ initialSettings: InAppWebViewSettings(
+ allowFileAccess: true,
+ allowFileAccessFromFileURLs: true
+ ),
+ initialUrlRequest: URLRequest(url: WebUri.uri(Uri.parse(widget.link))),
+ onWebViewCreated: (InAppWebViewController controller) {
+ webView = controller;
+ },
+ onLoadStop: (controller, url) async {
+ controller.addJavaScriptHandler(
+ handlerName: 'unload',
+ callback: (args) async {
+ // logic to close webview and return to app
+ },
+ );
+ },
+ // Handle opening UPI apps from UPI app specific intents
+ shouldOverrideUrlLoading: (controller, navigationAction) async {
+ final uri = navigationAction.request.url!;
+ if (["phonepe", "upi"].contains(uri.scheme) ||
+ uri.toString().contains("upi")) {
+ if (await canLaunchUrl(uri)) {
+ // Launch the App
+ await launchUrl(
+ uri,
+ );
+ // and cancel the request
+ return NavigationActionPolicy.CANCEL;
+ }
+ }
+ return NavigationActionPolicy.ALLOW;
+ },
+ // Handle downloading the receipt
+ onDownloadStartRequest: (controller, request) async {
+ print("onDownloadStart $request");
+ final dir = Platform.isAndroid
+ ? (await getExternalStorageDirectory())?.path
+ : (await getApplicationDocumentsDirectory()).uri.path;
+ print("saving in $dir");
+ final taskId = await FlutterDownloader.enqueue(
+ url: request.url.toString(),
+ savedDir: dir!,
+ showNotification: true, // show download progress in status bar (for Android)
+ openFileFromNotification: true, // click on notification to open downloaded file (for Android)
+ saveInPublicStorage: true,
+ allowCellular: true
+ );
+ // Open the downloaded file
+ await FlutterDownloader.open(taskId: taskId!);
+ },
+ )
+ : Container(),
+ ),
+ ],
+ ),
+ );
+ }
+ }
+`}
+
+
+
+
+
+### React Native
+
+Below are the steps to embed the pre-built screens into React Native app,
+
+- Implement a web view. We recommend to use the WebView component from react-native-webview library. You’re free to choose any other library for implementing this.
+
+- Pass the webview URL into the `uri` parameter on the WebView component. Ideally, this URL can be sent as a parameter from the previous screen to the WebView screen.
+
+- WebView component exposes a function `onNavigationStateChange` which is called every time there is a change in the navigation of web view.
+
+
+{`
+ import React, { useRef, useEffect } from "react";
+ import { SafeAreaView, ActivityIndicator, StyleSheet } from "react-native";
+ import WebView from "react-native-webview"; // Load WebView from "react-native-webview"
+ export default function WebView({ navigation }) {
+ const webviewRef = useRef(null);
+ // Check if webview URI contain .setu.co
+ useEffect(() => {
+ if(!webViewUri.includes('.setu.co')){
+ console.log('Blocking navigation');
+ navigation.navigate("Start");
+ }
+ });
+ // Function to check the navigation state inside webview
+ const onNavigation = (navState) => {
+ let url = navState.url;
+ };
+ return (
+
+ (
+
+ )}
+ ref={webviewRef}
+ onNavigationStateChange={onNavigation}
+ style={styles.margin}
+ // Whitelist UPI app specific schemes for handling app specific intents
+ originWhitelist={['*.setu.co','*://upi/*','phonepe://*']}
+ mixedContentMode="always"
+ allowFileAccess
+ allowFileAccessFromFileURLs
+ allowUniversalAccessFromFileURLs
+ javaScriptEnabled
+ nestedScrollEnabled // optional: in case you are loading WebView inside a ScrollView
+ scrollEnabled
+ onFileDownload={(event) => {
+ // Handle downloading the receipt (iOS only)
+ }}
+ />
+
+ );
+ }
+ // Styles
+ const styles = StyleSheet.create({
+ flexContainer: {
+ flex: 1,
+ },
+ margin: {
+ marginTop: 50,
+ },
+ });
+`}
+
+
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/quickstart/iOS.mdx b/content/payments/billpay/v1/pre-built-screens/quickstart/iOS.mdx
new file mode 100644
index 00000000..5c1cbd3c
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/quickstart/iOS.mdx
@@ -0,0 +1,192 @@
+---
+sidebar_title: iOS
+page_title: BBPS Billpay iOS integration
+order: 3
+visible_in_sidebar: true
+---
+
+## iOS integration
+
+Setu provides ready to use URLs for iOS integration. Contact Setu to update your logo, colours, fonts as per your branding. You can reach out to billpay.support@setu.co for any further clarifications. This quickstart page provides the sample code for the following specs—
+
+- **Programming language** — Swift 5.\* (Latest version 5.3)
+- **Interface** — Storyboard
+- **Life Cycle delegation** — UI Kit
+- **iOS versions supported** — 12+ (Latest version 14.4)
+
+
+ This quickstart provides the integration guidelines for iOS integration with
+ Setu’s default UPI payment option. If you’d like to use your own payment
+ gateway, please refer to{" "}
+
+ this guide
+ {" "}
+ instead.
+
+
+
+
+### Step 1 — Implement web view in your app
+
+The following steps need to be taken for webview integration—
+
+1. Get link from the backend
+2. Open a webview and attach the iOS interface
+
+
+
+##### Get link from the backend
+
+This step gives a one time Setu URL to be used by your customer for the bill fetch or payment flow. The Create link API needs to be called when the iOS app wants to obtain a one time link to load Setu’s screen flow inside a webview.
+
+
+ None of the parameters aside from mobile number are mandatory, but depending
+ on what is passed the returned link will display different UI.
+
+
+
+You can have the following scenarios, depending on what you choose to send along with the customer’s mobile number—
+
+- If no other input is passed, it will take the user to the home page with all BBPS categories.
+- If category code is passed, it will show user a list of billers in that category.
+- If category code and biller ID is passed, it will show the bill fetch form where a customer can enter their identifers (biller specified parameters)
+- If the category code, biller ID and parameters are passed, it will show the bill directly.
+
+
+ All query parameters should be url-encoded to escape special characters
+
+
+
+
+The above request will return URL based on the input params. Here’s a sample—
+
+
+ {`{
+ "link": "https://billpay-qa.setu.co/1238993883748223",
+ "sessionId": "1238993883748223",
+ "success": true,
+ "traceId": "GHSUU99128DBVU"
+}`}
+
+
+
+
+##### Switch control from your app to Setu
+
+The link returned by the API should be loaded within a `WKWebView`, facilitated by SwiftUI's `WebView`. `ContentView` controls the main view, which incorporates navigation controls and a custom back button. `WebViewCoordinator` manages navigation actions and delegates for smooth interaction with web content.
+
+If you’re using a cross platform solution—like Flutter, React Native, Ionic—look at the code snippets provided here.
+
+Here’s a sample code for the same -
+
+
+ {`
+import SwiftUI
+import WebKit
+struct ContentView: View {
+ var body: some View {
+ NavigationView {
+ WebView(urlString: "https://billpay.setu.co/1234") // Replace with the actual URL
+ .navigationBarItems(leading: WebViewBackButton())
+ .onAppear {
+ NotificationCenter.default.addObserver(forName: Notification.Name("GoBack"), object: nil, queue: .main) { _ in
+ WebViewCoordinator.shared.goBack()
+ }
+ }
+ }
+ }
+}
+struct WebViewBackButton: View {
+ var body: some View {
+ Button(action: {
+ NotificationCenter.default.post(name: Notification.Name("GoBack"), object: nil)
+ }) {
+ Text(Image(systemName: "chevron.left"))
+ }
+ }
+}
+class WebViewCoordinator: NSObject, ObservableObject, WKNavigationDelegate, WKScriptMessageHandler {
+ static let shared = WebViewCoordinator()
+ var webView: WKWebView?
+ func goBack() {
+ webView?.goBack()
+ }
+ // Handle navigation actions, including opening "upi" or "phonepe" URLs
+ func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
+ if let url = navigationAction.request.url, ["upi", "phonepe"].contains(where: { url.absoluteString.contains($0) }) {
+ UIApplication.shared.open(url)
+ decisionHandler(.cancel)
+ } else {
+ decisionHandler(.allow)
+ }
+ }
+}
+struct WebView: UIViewRepresentable {
+ let urlString: String
+ @EnvironmentObject var coordinator: WebViewCoordinator
+ func makeUIView(context: Context) -> WKWebView {
+ let webView = WKWebView()
+ webView.navigationDelegate = context.coordinator
+ // Register script message handler
+ webView.configuration.userContentController.add(context.coordinator, name: "ios_observer")
+ context.coordinator.webView = webView
+ return webView
+ }
+ func updateUIView(_ uiView: WKWebView, context: Context) {
+ if let url = URL(string: urlString) {
+ uiView.load(URLRequest(url: url))
+ }
+ }
+ func makeCoordinator() -> WebViewCoordinator {
+ WebViewCoordinator.shared
+ }
+}
+#if DEBUG
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView().environmentObject(WebViewCoordinator.shared)
+ }
+}
+#endif
+ `}
+
+
+Here is a sample of the Swift class designed to handle the `unload` event
+
+
+{`
+// Setup to handle messages from JavaScript
+func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
+ if message.name == "ios_observer", let messageBody = message.body as? [String: String] {
+ if messageBody["function"] == "unload" {
+ handleUnload()
+ }
+ }
+}
+private func handleUnload() {
+ // logic to close webview and return to app
+}`
+}
+
+
+The class will contain 1 method—
+- `unload` This should be used by the your app to dismiss the webview.
+
+
+ Special use case: This unload
function can also be used for dismissing the webview and redirecting a user back to your native app once a bill payment journey is completed (i.e. payment is successful) via a CTA from the Setu webview. Please let our team know if you would like to enable this use case for your app.
+
+
+
+
+### Step 2 — Optionally configure webhook
+
+You may optionally want to listen to user events—like successful or failed bill fetch, bill payment status and more—through webhooks. Refer to this guide for more information.
+
+
+
+### Step 3 — Get Production credentials and go live Once you are done testing your
+
+integration, ensure that all KYC and legal agreements are submitted. Contact Setu
+for getting enabled on production.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/quickstart/website.mdx b/content/payments/billpay/v1/pre-built-screens/quickstart/website.mdx
new file mode 100644
index 00000000..85fa7168
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/quickstart/website.mdx
@@ -0,0 +1,95 @@
+---
+sidebar_title: Website
+page_title: BBPS Billpay website
+order: 1
+visible_in_sidebar: true
+---
+
+## Website integration
+
+Setu provides ready to use screens for the website integration. Contact Setu to update your logo, colours, fonts as per your branding. You can reach out to billpay.support@setu.co for any further clarifications.
+
+
+ This quickstart provides the integration guidelines for website integration
+ with Setu’s default UPI payment option. If you’d like to use your own
+ payment gateway, please refer to{" "}
+
+ this guide
+ {" "}
+ too.
+
+
+
+
+There are 2 options for website integration, depending on how you interact with your users—
+
+- If you do not verify your users with mobile based OTP login, use **Option 1 — Get static URL**. In this scenario, Setu will share a static link with you, which can be added/embedded in your website. Setu will handle mobile OTP verification for your customer’s number.
+- If you already verify your customers through login, you can use **Option 2 — Get dynamic URL**. In this scenario, it is assumed that you have already verified the mobile number of your user. Use the **Create link API** to get this URL and bypass Setu’s OTP verification.
+
+
+
+### Option 1 — Get static URL
+
+##### Step 1 — Get link for bill payment
+
+Get a ready-to-use Setu URL, with your branding. You can simply embed this link on your website, without any further integration. This option comes with a pre-built mobile-OTP module that can verify your customers, to prevent malicious mass bill fetch / pay requests.
+
+
+
+##### Step 2 — Optionally configure webhook
+
+You may optionally want to listen to user events—like successful or failed bill fetch, bill payment status and more—through webhooks. Refer to this guide for more information.
+
+
+
+##### Step 3 — Get Production credentials and go live
+
+Once you are done testing your integration, ensure that all KYC and legal agreements are submitted. Contact Setu
+for getting enabled on production.
+
+
+
+### Option 2 — Get dynamic URL
+
+##### Step 1 — Get link for bill payment
+
+This step gives a one time Setu URL to be used by your customer for the bill fetch or payment flow. Generate this link uniquely for each of your customers and make sure you get a new link each time your customer wants to get back to the bill payment journey.
+
+The Create link API needs to be called when you want to obtain a one time link to load Setu’s bill payment screens.
+
+
+ {`POST https://qa-coudc.setu.co/api/v1/ethereal/link`}
+
+
+
+ None of the parameters in this request, aside from mobile number, are
+ mandatory. However, depending on what is passed the returned link will
+ display different UI.
+
+
+
+
+You can have the following scenarios, depending on what you choose to send along with the customer’s mobile number—
+
+- If no other input is passed, it will take the user to the home page with all BBPS categories.
+- If category code is passed, it will show user a list of billers in that category.
+- If category code and biller ID is passed, it will show the bill fetch form where a customer can enter their identifers (biller specified parameters)
+- If the category code, biller ID and parameters are passed, it will show the bill directly.
+
+
+ All query parameters should be url-encoded to escape special characters
+
+
+
+
+##### Step 2 — Optionally configure webhook
+
+You may optionally want to listen to user events—like successful or failed bill fetch, bill payment status and more—through webhooks. Refer to this guide for more information.
+
+
+
+##### Step 3 — Get Production credentials and go live
+
+Once you are done testing your integration, ensure that all KYC and legal agreements are submitted. Contact Setu for getting enabled on production.
+
+
diff --git a/content/payments/billpay/v1/pre-built-screens/webhooks.mdx b/content/payments/billpay/v1/pre-built-screens/webhooks.mdx
new file mode 100644
index 00000000..e5676db8
--- /dev/null
+++ b/content/payments/billpay/v1/pre-built-screens/webhooks.mdx
@@ -0,0 +1,1400 @@
+---
+sidebar_title: Webhooks
+page_title: BBPS Billpay webhooks
+order: 2
+visible_in_sidebar: true
+---
+
+## Webhooks/Notifications
+
+A webhook can be configured to listen to users’ events and log them for analytics and re-engagement purposes.
+
+
+ This feature is opt-in and is configured only when a partner requests for it
+ to be enabled. This supports use cases like getting real-time payment status
+ and related details after bill payment is done by customer.
+
+
+
+
+
+
+### Pre-requisites
+
+You need to do the following to configure a Setu provided webhook—
+
+1. Share the webhook URL. A URL that can accept `JSON` data over `POST`.
+2. API Key _(optional)_—It can also be generated by Setu, for you.
+3. Take steps to handle the notification
+
+
+
+##### Share the webhook URL
+
+This step requires setting up and sharing a webhook URL to Setu which is capable of receiving the transaction notifications. The URL to setup this webhook must be shared with Setu via email to billpay.support@setu.co.
+
+
+
+##### Handle the notification
+
+The notification consists of body an authentication header as well as a body/payload. The authentication header will be sent as `X-BILL-WEBHOOK-API-KEY`. The value for the same shall be communicated over email.
+
+
+
+### List of notifications
+
+The following events are supported in the bill payment journey—
+
+- `bill_fetch_success`
+- `bill_fetch_failure`
+- `bill_payment_success`
+- `bill_payment_failure`
+- `bill_collection_failure`
+- `bill_payment_refunded`
+- `dispute_raised`
+- `dispute_status_change`
+
+Below are the parameter tables and sample payloads for the listed events. Note that we may add additional parameters at a later stage. However, we will ensure backwards compatibility and no keys will be removed.
+
+
+
+
+ All the values in the response payload are strings
+
+
+
+
+
+
+
+
+
+ bill_fetch_success
— Notification when bill-fetch
+ request is successful
+
+
+
+ {`{
+ "mobileNumber": "9481773053",
+ "status": "FETCH_SUCCESS",
+ "billId": "490a8940-886e-45ed-bfd1-21dbed064373",
+ "billNumber": "6657801290", // if available
+ "billerId": "MAHI00000NATIC",
+ "billerName": "Mahindra Rural Housing Finance Ltd",
+ "billerCategory": "Loan-Repayment",
+ "billAmount": "101.0",
+ "billDate":"2024-03-01" // if available
+ "dueDate": "2024-03-20", // if available
+ "customerName": "Ram Charan", // if available
+ "customerId": "cust@1234" // if available
+ "sessionId": "7f6de02a-0061-403f-bd65-47d4b5f72c87",
+ "event": "bill_fetch_success",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831",
+ "additionalInfo": [
+ {
+ "name": "example",
+ "value": "ABC"
+ }
+ ],
+ "billDetails": [
+ {
+ "billAmount": "101.0",
+ "billNumber": "6657801290",
+ "billDate": "2024-03-01",
+ "customerName": "Ram Charan",
+ "dueDate": "2024-03-20"
+ }
+ ]
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the bill-fetch request |
+
+ 9481773053
+ |
+
+
+ status |
+ String |
+ Status of the bill-fetch request |
+
+ FETCH_SUCCESS
+ |
+
+
+ billId |
+ String |
+
+ Unique identifier for the bill. It is generated by the
+ biller. Not applicable where
+ there is no bill.
+ |
+
+ 490a8940-886e-45ed-bfd1-21dbed064373
+ |
+
+
+ billNumber |
+ String |
+
+ Unique identifier for the bill as sent by NPCI. Not applicable where
+ there is no bill.
+ |
+
+ 490a8940-886e-45ed-bfd1-21dbed064373
+ |
+
+
+ billerId |
+ String |
+
+ Unique identifier (Biller ID in BBPS) allocated to the
+ Biller
+ |
+
+ MAHI00000NATIC
+ |
+
+
+ billerName |
+ String |
+ Name of the biller as registered with BBPS |
+
+ Mahindra Rural Housing Finance Ltd
+ |
+
+
+ billerCategory |
+ String |
+
+ Category of the biller as registered with BBPS. There are
+ more than 25 biller categories.
+ |
+
+
+ Loan-Repayment; Electricity; Landline-Postpaid etc.
+
+ |
+
+
+ billAmount |
+ String (Number) |
+ Amount of the bill in rupees (INR) |
+
+ 101.55
+ |
+
+
+ billDate |
+ String (Date) |
+ Date of bill generation. Format is YYYY-MM-DD. |
+
+ 2023-05-02
+ |
+
+
+ dueDate |
+ String (Date) |
+ Due date of the bill. Format is YYYY-MM-DD. |
+
+ 2023-05-20
+ |
+
+
+ customerId |
+ String |
+ Unique identifier for the customerId used for this session |
+
+ cust@1234
+ |
+
+
+ sessionId |
+ String |
+ Unique identifier for the session used for this request |
+
+ 7f6de02a-0061-403f-bd65-47d4b5f72c87
+ |
+
+
+ event |
+ String |
+ Name of the event to identify this user event |
+
+ bill_fetch_success
+ |
+
+
+ additionalInfo |
+ String |
+
+ Additional info available to Agent Institutions basis the
+ additional info passed by the biller.
+ |
+
+ name:"example" value:"ABC"
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+ billDetails |
+ Array of Objects |
+
+ Contains details of bills fetched. For 'SINGLE' billers, this array will have 0 or 1 element. For 'LIST' billers, it may contain multiple elements.
+ |
+
+ [{"billAmount": "101.0", "billNumber": "6657801290", "billDate": "2024-03-01", "customerName": "Ram Charan", "dueDate": "2024-03-20"}]
+ |
+
+
+
+ Note: The billDetails array is now the primary source for bill details, replacing individual bill fields (billAmount, billNumber, billDate, customerName, dueDate). These individual fields are deprecated and will be removed in future versions. Always use billDetails for accessing bill information.
+ |
+
+
+
+
+
+
+
+
+
+
+
+ bill_fetch_failure
— Notification when bill-fetch
+ request is not successful
+
+
+
+ {`{
+ "mobileNumber": "9481773053",
+ "status": "FETCH_FAILURE",
+ "billId": "",
+ "billerId": "MAHI00000NATIC",
+ "billerName": "Mahindra Rural Housing Finance Ltd",
+ "billerCategory": "Loan-Repayment",
+ "sessionId": "7f6de02a-0061-403f-bd65-47d4b5f72c87",
+ "customerId": "cust@1234" // if available
+ "event": "bill_fetch_failure",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831",
+ "fetchErrorCode": "ERR001",
+ "error": {
+ "code": "ERR001",
+ "message": "Unable to get details"
+ }
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the bill-fetch request |
+
+ 9481773053
+ |
+
+
+ status |
+ String |
+ Status of the bill-fetch request |
+
+ FETCH_FAILURE
+ |
+
+
+ billId |
+ String |
+
+ Unique identifier for the bill. It is generated by the
+ biller. Also called as billNumber. Not applicable where
+ there is no bill.
+ |
+
+ 69a1fbc0-b5d1-4cbf-ac6d-c4244e3e7e0c
+ |
+
+
+ billerId |
+ String |
+
+ Unique identifier (Biller ID in BBPS) allocated to the
+ Biller
+ |
+
+ MAHI00000NATIC
+ |
+
+
+ billerName |
+ String |
+ Name of the biller as registered with BBPS |
+
+ Mahindra Rural Housing Finance Ltd
+ |
+
+
+ billerCategory |
+ String |
+
+ Category of the biller as registered with BBPS. There are
+ more than 25 biller categories.
+ |
+
+ Loan-Repayment
+ |
+
+
+ sessionId |
+ String |
+ Unique identifier for the session used for this request |
+
+ 7f6de02a-0061-403f-bd65-47d4b5f72c87
+ |
+
+
+ customerId |
+ String |
+ Unique identifier for the customerId used for this session |
+
+ cust@1234
+ |
+
+
+ event |
+ String |
+ Name of the event to identify this user event |
+
+ bill_fetch_failure
+ |
+
+
+ fetchErrorCode |
+ String |
+ Error codes for the failure |
+
+ ERR001
+ |
+
+
+ error |
+ |
+ Error array containing details of the error |
+ |
+
+
+ code |
+ String |
+ Error code |
+
+ ERR001
+ |
+
+
+ message |
+ String |
+ Error description |
+
+ Unable to get details
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+
+
+
+
+
+
+
+
+
+ bill_payment_success
— Notification when
+ bill-payment request is successful
+
+
+
+ {`{
+ "txnId": "AXO101557980",
+ "mobileNumber": "9481773053",
+ "status": "PAYMENT_SUCCESS",
+ "billId": "dfeeaf14-e43a-4196-90d0-41089e979ad5",
+ "billerId": "MAHI00000NATIC",
+ "billerName": "Mahindra Rural Housing Finance Ltd",
+ "billerCategory": "Loan-Repayment",
+ "sessionId": "7f6de02a-0061-403f-bd65-47d4b5f72c87",
+ "customerId": "cust@1234" // if available
+ "billAmount": "105.0",
+ "dueDate": "2021-05-23", // if available
+ "amountPaid": "601.00",
+ "orderId": "H001234566666",
+ "event": "bill_payment_success",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831",
+ "paidOn": "02-01-2006 15:04:05",
+ "billDetails": [
+ {
+ "billAmount": "101.0",
+ "billNumber": "6657801290",
+ "billDate": "2024-03-01",
+ "customerName": "Ram Charan",
+ "dueDate": "2024-03-20"
+ }
+ ]
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ txnId |
+ String |
+
+ Unique identifier for the transaction generated by COU, here
+ Setu. Also known as BBPS transaction ID.
+ |
+
+ AXO101557980
+ |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the bill-payment request |
+
+ 9481773053
+ |
+
+
+ status |
+ String |
+ Status of the bill-payment request |
+
+ PAYMENT_SUCCESS
+ |
+
+
+ billId |
+ String |
+
+ Unique identifier for the bill. It is generated by the
+ biller. Also called as billNumber. Not applicable where
+ there is no bill.
+ |
+
+ dfeeaf14-e43a-4196-90d0-41089e979ad5
+ |
+
+
+ billerId |
+ String |
+
+ Unique identifier (Biller ID in BBPS) allocated to the
+ Biller
+ |
+
+ MAHI00000NATIC
+ |
+
+
+ billerName |
+ String |
+ Name of the biller as registered with BBPS |
+
+ Mahindra Rural Housing Finance Ltd
+ |
+
+
+ billerCategory |
+ String |
+
+ Category of the biller as registered with BBPS. There are
+ more than 25 biller categories.
+ |
+
+ Loan-Repayment
+ |
+
+
+ sessionId |
+ String |
+ Unique identifier for the session used for this request |
+
+ 7f6de02a-0061-403f-bd65-47d4b5f72c87
+ |
+
+
+ customerId |
+ String |
+ Unique identifier for the customerId used for this session |
+
+ cust@1234
+ |
+
+
+ billAmount |
+ String (Number) |
+ Amount of the bill in rupees (INR) |
+
+ 601.75
+ |
+
+
+ dueDate |
+ String (Date) |
+ Due date of the bill. Format is YYYY-MM-DD. |
+
+ 2023-05-02
+ |
+
+
+ amountPaid |
+ String (Number) |
+
+ Amount paid by the user in rupees (INR). This is especially
+ applicable for billers where there is no billAmount, eg.
+ Fastag
+ |
+
+ 601.75
+ |
+
+
+ orderId |
+ String |
+
+ Unique identifier for a payment request. Generated by Setu.
+ |
+
+ H001234566666
+ |
+
+
+ event |
+ String |
+ Name of the event to identify this user event |
+
+ bill_payment_success
+ |
+
+
+ paidOn |
+ String (DateTime) |
+ Time of transaction |
+
+ 02-01-2006 15:04:05
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+ billDetails |
+ Array of Objects |
+
+ Contains details of bills paid. For 'SINGLE' billers, this array will have 0 or 1 element. For 'LIST' billers, it may contain multiple elements.
+ |
+
+ [{"billAmount": "101.0", "billNumber": "6657801290", "billDate": "2024-03-01", "customerName": "Ram Charan", "dueDate": "2024-03-20"}]
+ |
+
+
+
+ Note: The billDetails array is now the primary source for bill details, replacing individual bill fields (billAmount, billNumber, billDate, customerName, dueDate). These individual fields are deprecated and will be removed in future versions. Always use billDetails for accessing bill information.
+ |
+
+
+
+
+
+
+
+
+
+
+
+ bill_payment_failure
— Notification when
+ bill-payment request is not successful
+
+
+
+ {`{
+ "txnId": "AXO101557980",
+ "mobileNumber": "9481773053",
+ "status": "PAYMENT_FAILED",
+ "billId": "dfeeaf14-e43a-4196-90d0-41089e979ad5",
+ "billerId": "MAHI00000NATIC",
+ "billerName": "Mahindra Rural Housing Finance Ltd",
+ "billerCategory": "Loan-Repayment",
+ "sessionId": "7f6de02a-0061-403f-bd65-47d4b5f72c87",
+ "customerId": "cust@1234" // if available
+ "orderId": "Q00ABCDEFGHZOQ",
+ "billAmount": "105.0",
+ "dueDate": "2021-05-23", // if available
+ "amountPaid": "601.00",
+ "event": "bill_payment_failure",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831"
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ txnId |
+ String |
+
+ Unique identifier for the transaction generated by COU, here
+ Setu. Also known as BBPS transaction ID.
+ |
+
+ AX0101557980
+ |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the bill-payment request |
+
+ 9481773053
+ |
+
+
+ status |
+ String |
+ Status of the bill-payment request |
+
+ PAYMENT_FAILED
+ |
+
+
+ billId |
+ String |
+
+ Unique identifier for the bill. It is generated by the
+ biller. Also called as billNumber. Not applicable where
+ there is no bill.
+ |
+
+ dfeeaf14-e43a-4196-90d0-41089e979ad5
+ |
+
+
+ billerId |
+ String |
+
+ Unique identifier (Biller ID in BBPS) allocated to the
+ Biller
+ |
+
+ MAHI00000NATIC
+ |
+
+
+ billerName |
+ String |
+ Name of the biller as registered with BBPS |
+
+ Mahindra Rural Housing Finance Ltd
+ |
+
+
+ billerCategory |
+ String |
+
+ Category of the biller as registered with BBPS. There are
+ more than 25 biller categories.
+ |
+
+ Loan-Repayment
+ |
+
+
+ sessionId |
+ String |
+ Unique identifier for the session used for this request |
+
+ 7f6de02a-0061-403f-bd65-47d4b5f72c87
+ |
+
+
+ customerId |
+ String |
+ Unique identifier for the customerId used for this session |
+
+ cust@1234
+ |
+
+
+ orderId |
+ String |
+
+ Unique identifier for a payment request. Generated by Setu.
+ |
+
+ Q00ABCDEFGHZOQ
+ |
+
+
+ billAmount |
+ String (Number) |
+ Amount of the bill in rupees (INR) |
+
+ 101.55
+ |
+
+
+ dueDate |
+ String (Date) |
+ Due date of the bill. Format is YYYY-MM-DD. |
+
+ 2023-05-02
+ |
+
+
+ amountPaid |
+ String (Number) |
+
+ Amount paid by the user in rupees (INR). This is applicable
+ for billers where there is no bill generated, eg. Fastag
+ |
+
+ 601.75
+ |
+
+
+ event |
+ String |
+ Name of the event to identify this user event |
+
+ bill_payment_failure
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+
+
+
+
+
+
+
+
+
+ bill_collection_failure
— Notification when
+ bill-collection from the user's account is not successful
+
+
+
+ {`{
+ "txnId": null,
+ "mobileNumber": "9481773053",
+ "status": "COLLECTION_FAILURE",
+ "billId": "dfeeaf14-e43a-4196-90d0-41089e979ad5",
+ "billerId": "MAHI00000NATIC",
+ "billerName": "Mahindra Rural Housing Finance Ltd",
+ "billerCategory": "Loan-Repayment",
+ "billAmount": "105.0",
+ "dueDate": "2021-05-23", // if available
+ "sessionId": "7f6de02a-0061-403f-bd65-47d4b5f72c87",
+ "customerId": "cust@1234" // if available
+ "amountPaid": 601.0,
+ "amount": null,
+ "event": "bill_collection_failure",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831"
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ txnId |
+ |
+
+ Unique identifier for the transaction generated by COU. Not
+ generated here because Setu does not post the bill-payment
+ request to BBPS.
+ |
+
+ null
+ |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the bill-payment request |
+
+ 9481773053
+ |
+
+
+ status |
+ String |
+ Status of the bill-payment request |
+
+ COLLECTION_FAILURE
+ |
+
+
+ billId |
+ String |
+
+ Unique identifier for the bill. It is generated by the
+ biller. Also called as billNumber. Not applicable where
+ there is no bill.
+ |
+
+ dfeeaf14-e43a-4196-90d0-41089e979ad5
+ |
+
+
+ billerId |
+ String |
+
+ Unique identifier (Biller ID in BBPS) allocated to the
+ Biller
+ |
+
+ MAHI00000NATIC
+ |
+
+
+ billerName |
+ String |
+ Name of the biller as registered with BBPS |
+
+ Mahindra Rural Housing Finance Ltd
+ |
+
+
+ billerCategory |
+ String |
+
+ Category of the biller as registered with BBPS. There are
+ more than 25 biller categories.
+ |
+
+ Loan-Repayment
+ |
+
+
+ billAmount |
+ String (Number) |
+ Amount of the bill in rupees (INR) |
+
+ 101.55
+ |
+
+
+ dueDate |
+ String (Date) |
+ Due date of the bill. Format is YYYY-MM-DD. |
+
+ 2023-05-02
+ |
+
+
+ sessionId |
+ String |
+ Unique identifier for the session used for this request |
+
+ 7f6de02a-0061-403f-bd65-47d4b5f72c87
+ |
+
+
+ customerId |
+ String |
+ Unique identifier for the customerId used for this session |
+
+ cust@1234
+ |
+
+
+ amountPaid |
+ String (Number) |
+
+ Amount paid by the user in rupees (INR). This is applicable
+ for billers where there is no bill generated, eg. Fastag.
+ Will be null for this event.
+ |
+
+ 601.75
+ |
+
+
+ amount |
+ |
+ |
+
+ null
+ |
+
+
+ event |
+ String |
+ Name of the event to identify this user event |
+
+ bill_collection_failure
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+
+
+
+
+
+
+
+
+
+ bill_payment_refunded
— Notification when
+ bill-payment has to be refunded. This event is invoked when
+ bill-payment request to BBPS has failed, after collection of
+ funds from the user.
+
+
+
+ {`{
+ "txnId": "AXO101557980",
+ "mobileNumber": "9481773053",
+ "status": "PAYMENT_REFUNDED",
+ "billId": "dfeeaf14-e43a-4196-90d0-41089e979ad5",
+ "billerId": "MAHI00000NATIC",
+ "billerName": "Mahindra Rural Housing Finance Ltd",
+ "billerCategory": "Loan-Repayment",
+ "sessionId": "7f6de02a-0061-403f-bd65-47d4b5f72c87",
+ "customerId": "cust@1234" // if available
+ "billAmount": "105.0",
+ "dueDate": "2021-05-23", // if available
+ "orderId": "H001234566666",
+ "amountPaid": "601.00",
+ "event": "bill_payment_refunded",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831"
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ txnId |
+ String |
+ Unique identifier for the transaction generated by COU. |
+
+ AX0101557980
+ |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the bill-payment request |
+
+ 9481773053
+ |
+
+
+ status |
+ String |
+ Status of the bill-payment request |
+
+ PAYMENT_REFUNDED
+ |
+
+
+ billId |
+ String |
+
+ Unique identifier for the bill. It is generated by the
+ biller. Also called as billNumber
+ |
+
+ dfeeaf14-e43a-4196-90d0-41089e979ad5
+ |
+
+
+ billerId |
+ String |
+
+ Unique identifier (Biller ID in BBPS) allocated to the
+ Biller
+ |
+
+ MAHI00000NATIC
+ |
+
+
+ billerName |
+ String |
+ Name of the biller as registered with BBPS |
+
+ Mahindra Rural Housing Finance Ltd
+ |
+
+
+ billerCategory |
+ String |
+
+ Category of the biller as registered with BBPS. There are
+ more than 25 biller categories.
+ |
+
+ Loan-Repayment
+ |
+
+
+ sessionId |
+ String |
+ Unique identifier for the session used for this request |
+
+ 7f6de02a-0061-403f-bd65-47d4b5f72c87
+ |
+
+
+ customerId |
+ String |
+ Unique identifier for the customerId used for this session |
+
+ cust@1234
+ |
+
+
+ billAmount |
+ String (Number) |
+ Amount of the bill in rupees (INR) |
+
+ 601.75
+ |
+
+
+ dueDate |
+ String (Date) |
+ Due date of the bill. Format is YYYY-MM-DD. |
+
+ 2023-05-02
+ |
+
+
+ orderId |
+ String |
+
+ Unique identifier for a payment request. Generated by Setu.
+ |
+
+ H001234566666
+ |
+
+
+ amountPaid |
+ String (Number) |
+
+ Amount paid by the user in rupees (INR). This is applicable
+ for billers where there is no bill generated, eg. Fastag
+ |
+
+ 601.75
+ |
+
+
+ event |
+ String |
+ Status to identify this user event |
+
+ bill_payment_refunded
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+
+
+
+
+
+
+
+
+
+ dispute_raised
— Notification when
+ dispute/complaint is raised from the user
+
+
+
+ {`{
+ "txnId": "AXO198058515",
+ "txnDate": "2021-06-24",
+ "issueType": "1",
+ "description": "What the customer tells the issue is",
+ "mobileNumber": "8971302465",
+ "referenceId": "ksyTnYVLor/YQ6IRBxzbYp88LuknxVT/2021-06-24",
+ "status": "submitted",
+ "event": "dispute_raised",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831"
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ txnId |
+ String |
+
+ Unique identifier for the transaction generated by COU, here
+ Setu. Also known as BBPS transaction ID.
+ |
+
+ AX0198058515
+ |
+
+
+ txnDate |
+ String (Date) |
+ Date of the transaction. Format is YYYY-MM-DD. |
+
+ 2021-06-24
+ |
+
+
+ issueType |
+ String |
+ |
+
+ 1
+ |
+
+
+ description |
+ String |
+ Description as entered by the user. |
+
+ Message entered by the user
+ |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the dispute |
+
+ 8971302465
+ |
+
+
+ referenceId |
+ String |
+
+ Unique identifer for the dispute raised, generated by Setu.
+ |
+
+ ksyTnYVLor/YQ6IRBxzbYp88LuknxVT/2021-06-24
+ |
+
+
+ status |
+ String |
+ Status of the dispute |
+
+ submitted
+ |
+
+
+ event |
+ String |
+ Status to identify this user event |
+
+ dispute_raised
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+
+
+
+
+
+
+
+
+
+ dispute_status_change
— Notification when the
+ status of a dispute has changed
+
+
+
+ {`{
+ "txnId": "AXO198058515",
+ "txnDate": "2021-06-24",
+ "issueType": "1",
+ "description": "What the customer tells the issue is",
+ "mobileNumber": "8971302465",
+ "referenceId": "ksyTnYVLor/YQ6IRBxzbYp88LuknxVT/2021-06-24",
+ "status": "closed/unknown",
+ "event": "dispute_status_change",
+ "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831"
+}`}
+
+
+
+ Parameter |
+ Data Type |
+ Description |
+ Example |
+
+
+ txnId |
+ String |
+
+ Unique identifier for the transaction generated by COU, here
+ Setu. Also known as BBPS transaction ID.
+ |
+
+ AX0198058515
+ |
+
+
+ txnDate |
+ String (Date) |
+ Date of the transaction. Format is YYYY-MM-DD. |
+
+ 2023-05-02
+ |
+
+
+ issueType |
+ String |
+ |
+
+ 1
+ |
+
+
+ description |
+ String |
+ Description as entered by the user. |
+
+ Message entered by the user
+ |
+
+
+ mobileNumber |
+ String (Number) |
+ Mobile number used to generate the dispute |
+
+ 8971302465
+ |
+
+
+ referenceId |
+ String |
+
+ Unique identifer for the dispute raised, generated by Setu.
+ |
+
+ ksyTnYVLor/YQ6IRBxzbYp88LuknxVT/2021-06-24
+ |
+
+
+ status |
+ String |
+ Status of the dispute |
+
+ closed/unknown
+ |
+
+
+ event |
+ String |
+ Status to identify this user event |
+
+ dispute_status_change
+ |
+
+
+ refId |
+ String |
+ BBPS Reference ID |
+
+ CMA0I65RCU2I32C3L0H0KNYQYAG40021831
+ |
+
+
+
+
+
+