diff --git a/api-references/data/account-aggregator.json b/api-references/data/account-aggregator.json index 26905300..6818c503 100644 --- a/api-references/data/account-aggregator.json +++ b/api-references/data/account-aggregator.json @@ -752,12 +752,12 @@ } ] }, - "/v2/sessions/refresh/{session_id}": { + "/v2/sessions/refresh/{consent_id}": { "get": { "parameters": [ { "in": "path", - "name": "session_id", + "name": "consent_id", "required": true, "description": "The unique identifier of the session to be refreshed", "schema": { @@ -799,7 +799,7 @@ } }, "summary": "Refresh Data Pull", - "description": "This API refreshes an existing FI data session using the session ID. Optionally, the session can be restarted if the `restart` query parameter is provided.", + "description": "This API refreshes an existing FI data session using the consent ID. Optionally, the session can be restarted if the `restart` query parameter is provided.", "tags": [ "FI data fetch V2 APIs" ] @@ -808,7 +808,7 @@ "parameters": [ { "in": "path", - "name": "session_id", + "name": "consent_id", "required": true, "description": "The unique identifier of the session to be refreshed", "schema": { @@ -856,7 +856,7 @@ } }, "summary": "Data fetch for custom range", - "description": "This API refreshes an existing FI data session using the session ID and allows specifying a custom data range for the session.", + "description": "This API refreshes an existing FI data session using the consent ID and allows specifying a custom data range for the session.", "tags": [ "FI data fetch V2 APIs" ] diff --git a/api-references/data/bav/reverse-penny-drop.json b/api-references/data/bav/reverse-penny-drop.json index 044698c9..7cc63f28 100644 --- a/api-references/data/bav/reverse-penny-drop.json +++ b/api-references/data/bav/reverse-penny-drop.json @@ -314,19 +314,32 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Success13" - }, - { - "example": { - "$ref": "#/components/schemas/rdp_success_response01" - } - } - ] + "$ref": "#/components/schemas/Success13" }, - "example": { - "$ref": "#/components/schemas/rdp_success_response01" + "examples": { + "Success": { + "summary": "Successful Payment", + "value": { + "$ref": "#/components/schemas/rdp_success_response01" + } + }, + "Purged": { + "summary": "PII Purged", + "value": { + "additionalData": { + "key1": "value1", + "key2": "value2" + }, + "data": null, + "id": "1af36b4e-681e-48a2-a15c-3b92da00e4c3", + "shortUrl": "https://sandbox.bills.pe/vnl056cniwrk", + "status": "BAV_REVERSE_PENNY_DROP_PII_PURGED", + "traceId": "1-6348f366-55c47bbe132d78441bbe4623", + "upiBillId": "1005100812449350916", + "upiLink": "upi://pay?pa=bauvatest@kaypay&pn=BauvaTest&am=1.00&tr=1005100812449350916&tn=Account%20Verification&cu=INR&mode=04", + "validUpto": "2022-10-14T05:30:23.683631" + } + } } } } @@ -472,7 +485,7 @@ "status": { "type": "string", "description": "Status of the request", - "enum": ["BAV_REVERSE_PENNY_DROP_CREATED", "BAV_REVERSE_PENNY_DROP_EXPIRED", "BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL", "BAV_REVERSE_PENNY_DROP_PAYMENT_FAILED", "BAV_REVERSE_PENNY_DROP_ERROR", "BAV_REVERSE_PENNY_DROP_FAILED"] + "enum": ["BAV_REVERSE_PENNY_DROP_CREATED", "BAV_REVERSE_PENNY_DROP_EXPIRED", "BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL", "BAV_REVERSE_PENNY_DROP_PAYMENT_FAILED", "BAV_REVERSE_PENNY_DROP_ERROR", "BAV_REVERSE_PENNY_DROP_FAILED", "BAV_REVERSE_PENNY_DROP_PII_PURGED"] }, "traceId": { "type": "string", @@ -614,7 +627,8 @@ "$ref": "#/components/schemas/AdditionalData" }, "data": { - "$ref": "#/components/schemas/Data3" + "$ref": "#/components/schemas/Data3", + "nullable": true }, "id": { "type": "string", @@ -627,7 +641,7 @@ "status": { "type": "string", "description": "Status of the request", - "enum": ["BAV_REVERSE_PENNY_DROP_CREATED", "BAV_REVERSE_PENNY_DROP_EXPIRED", "BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL", "BAV_REVERSE_PENNY_DROP_PAYMENT_FAILED", "BAV_REVERSE_PENNY_DROP_ERROR", "BAV_REVERSE_PENNY_DROP_FAILED"] + "enum": ["BAV_REVERSE_PENNY_DROP_CREATED", "BAV_REVERSE_PENNY_DROP_EXPIRED", "BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL", "BAV_REVERSE_PENNY_DROP_PAYMENT_FAILED", "BAV_REVERSE_PENNY_DROP_ERROR", "BAV_REVERSE_PENNY_DROP_FAILED", "BAV_REVERSE_PENNY_DROP_PII_PURGED"] }, "traceId": { "type": "string", diff --git a/api-references/payments/billpay.json b/api-references/payments/billpay.json index c9f139c3..4285c579 100644 --- a/api-references/payments/billpay.json +++ b/api-references/payments/billpay.json @@ -146,7 +146,7 @@ "ip": { "type": "string", "example": "124.170.23.24", - "description": "Mandatory if channel is `INT`, `INTB`. Not required for others." + "description": "Mandatory if channel is `INT`, `INTB`, `MOB`, `MOBB`. Not required for others." }, "imei": { "type": "string", diff --git a/api-references/payments/billpay/api-integration.json b/api-references/payments/billpay/api-integration.json index 662ded14..5abd25eb 100644 --- a/api-references/payments/billpay/api-integration.json +++ b/api-references/payments/billpay/api-integration.json @@ -286,7 +286,7 @@ }, "ip": { "type": "string", - "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.", + "description": "Mandatory if channel is `INT`, `INTB`, `MOB`, `MOBB`. Not required for others.", "format": "ipv4", "example": "124.170.23.24" }, @@ -3073,7 +3073,7 @@ }, "ip": { "type": "string", - "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.", + "description": "Mandatory if channel is `INT`, `INTB`, `MOB`, `MOBB`. Not required for others.", "format": "ipv4", "example": "124.170.23.24" }, @@ -3241,6 +3241,15 @@ "refId": { "type": "string", "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + }, + "paymentType": { + "type": "string", + "description": "Indicates if the payment is being made for an FX mandate.", + "enum": [ + "MANDATE_AND_PAY" + ], + "example": "MANDATE_AND_PAY", + "x-omitempty": true } }, "x-omitempty": true @@ -5685,6 +5694,30 @@ ], "example": "DISPUTE" }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-20" + }, + "disposition": { + "type": "string", + "enum": [ + "D11", + "D12", + "D13", + "D21", + "D22", + "D23", + "D31", + "D32" + ], + "example": "D11" + }, + "responseReason": { + "type": "string", + "example": "Dispute assigned to appropriate resolver for investigation" + }, "assignedTo": { "type": "string", "example": "ICICI BOU" @@ -5694,7 +5727,12 @@ "description": "BBPS Complaint status", "example": "ASSIGNED", "enum": [ - "ASSIGNED" + "ASSIGNED", + "RESOLVED", + "REJECTED", + "DEFAULT_RESOLVED", + "REFUNDED", + "PENDING_REFUND" ] }, "disputeId": { @@ -5943,6 +5981,12 @@ ], "example": "DISPUTE" }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-20" + }, "assignedTo": { "type": "string", "example": "ICICI BOU" @@ -6215,6 +6259,12 @@ ], "example": "DISPUTE" }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-20" + }, "assignedTo": { "type": "string", "example": "ICICI BOU" @@ -12750,6 +12800,1405 @@ } ] } + }, + "/api/v2/bbps/valadd/{requestType}/request": { + "post": { + "tags": [ + "Val Add APIs" + ], + "description": "Initiate a Val Add operation", + "parameters": [ + { + "name": "requestType", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "GetCustomerId", + "GenerateOTP", + "ValidateOTP", + "GetBankMarkup", + "FetchBestPrice" + ] + } + }, + { + "name": "X-PARTNER-ID", + "in": "header", + "description": "Partner ID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "pattern": "^Bearer [a-zA-Z0-9\\-\\._~\\+\\/]+=*$" + }, + "description": "Bearer token for authentication. Format: `Bearer `", + "example": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "agent", + "biller", + "inputParams" + ], + "type": "object", + "properties": { + "agent": { + "required": [ + "channel", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "AX01AX26INBU00000001" + }, + "channel": { + "type": "string", + "example": "INTB" + }, + "ip": { + "type": "string", + "example": "124.170.23.24" + }, + "mac": { + "type": "string", + "example": "48-4D-7E-CB-DB-6F" + } + } + }, + "biller": { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "FXRE00000KER3U" + } + } + }, + "inputParams": { + "type": "array", + "description": "Input parameters required by the biller for this request.", + "items": { + "required": [ + "name", + "value" + ], + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "mobileNumber" + }, + "value": { + "type": "string", + "example": "9812000000" + } + } + } + } + } + }, + "examples": { + "getCustomerId": { + "summary": "Get Customer ID", + "value": { + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "9812000000" + } + ] + } + }, + "generateOtp": { + "summary": "Generate OTP", + "value": { + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "8838151414" + }, + { + "name": "emailId", + "value": "jayasurya.s_tra@npci.org.in" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "bankName", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "bankAccountNumber", + "value": "150002000" + }, + { + "name": "customerAccountType", + "value": "Savings" + }, + { + "name": "ifsc", + "value": "ZSBL0000341" + }, + { + "name": "accountHolderName", + "value": "jayasurya" + }, + { + "name": "customerType", + "value": "ResidentIndividual" + }, + { + "name": "pan", + "value": "JS00024252" + }, + { + "name": "panValidated", + "value": "true" + } + ] + } + }, + "validateOtp": { + "summary": "Validate OTP", + "value": { + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "9182583612" + }, + { + "name": "emailId", + "value": "pragna.n@npci.org.in" + }, + { + "name": "mobileOTP", + "value": "870398" + }, + { + "name": "emailOTP", + "value": "806963" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "bankName", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "bankAccountNumber", + "value": "150002000" + }, + { + "name": "customerAccountType", + "value": "Savings" + }, + { + "name": "ifsc", + "value": "ZSBL0000341" + }, + { + "name": "accountHolderName", + "value": "Pragna" + }, + { + "name": "customerType", + "value": "ResidentIndividual" + }, + { + "name": "pan", + "value": "NP00024253" + }, + { + "name": "panValidated", + "value": "true" + }, + { + "name": "tcFlag", + "value": "true" + } + ] + } + }, + "getBankMarkup": { + "summary": "Get Bank Markup", + "value": { + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "7075465595" + }, + { + "name": "customerId", + "value": "IN0025000217" + }, + { + "name": "pan", + "value": "NB00024252" + } + ] + } + }, + "fetchBestPrice": { + "summary": "Fetch Best Price", + "value": { + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "RBFX00000KARDG" + }, + "inputParams": [ + { + "name": "bankBranch", + "value": "SHIVAJI NAGAR" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "currency", + "value": "USD" + }, + { + "name": "customerId", + "value": "IN0025000213" + }, + { + "name": "deliveryMode", + "value": "Currency" + }, + { + "name": "ifsc", + "value": "ZSBL0000341" + }, + { + "name": "instrumentType", + "value": "CASH" + }, + { + "name": "markup", + "value": "0.5" + }, + { + "name": "mobileNumber", + "value": "8838151414" + }, + { + "name": "orderQuantity", + "value": "1000" + }, + { + "name": "pan", + "value": "JS00024252" + }, + { + "name": "relationshipBank", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "tcFlag", + "value": "true" + }, + { + "name": "transactionType", + "value": "PURCHASE" + }, + { + "name": "units", + "value": "fixed" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Request acknowledged", + "content": { + "application/json": { + "schema": { + "required": [ + "data", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "Processing" + }, + "data": { + "required": [ + "refId" + ], + "type": "object", + "properties": { + "refId": { + "type": "string", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + } + } + }, + "traceId": { + "type": "string", + "example": "CV4PE82LTNJE9O014OE1" + } + } + } + } + } + }, + "400": { + "description": "Bad request" + }, + "500": { + "description": "Internal server error" + } + }, + "security": [ + { + "Production": [ + "bbps:partner" + ] + }, + { + "Sandbox": [ + "bbps:partner" + ] + }, + { + "QA": [ + "bbps:partner" + ] + } + ] + } + }, + "/api/v2/bbps/valadd/{requestType}/response": { + "post": { + "tags": [ + "Val Add APIs" + ], + "description": "Poll for the result of a Val Add operation, as a fallback for webhooks.", + "parameters": [ + { + "name": "requestType", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "GetCustomerId", + "GenerateOTP", + "ValidateOTP", + "GetBankMarkup", + "FetchBestPrice" + ] + } + }, + { + "name": "X-PARTNER-ID", + "in": "header", + "description": "Partner ID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "pattern": "^Bearer [a-zA-Z0-9\\-\\._~\\+\\/]+=*$" + }, + "description": "Bearer token for authentication. Format: `Bearer `", + "example": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "refId" + ], + "type": "object", + "properties": { + "refId": { + "type": "string", + "description": "The COU-generated refId for the Val Add operation.", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Result retrieved", + "content": { + "application/json": { + "schema": { + "required": [ + "refId", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Current state of the Val Add operation.", + "example": "Success" + }, + "refId": { + "type": "string", + "description": "COU-generated reference ID for the Val Add operation.", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + }, + "traceId": { + "type": "string", + "example": "CV4PE82LTNJE9O014OE0" + }, + "data": { + "type": "object", + "description": "Val Add result payload (varies by requestType). On success, contains `billerResponse`. On failure, contains `errors`.", + "properties": { + "billerResponse": { + "type": "array", + "description": "Key-value pairs returned by the biller for the Val Add operation. Present when status is `Success`.", + "items": { + "required": [ + "name", + "value" + ], + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "customerId" + }, + "value": { + "type": "string", + "example": "IN0025000213" + } + } + } + }, + "errors": { + "type": "array", + "description": "Error details. Present when status is `Failure`.", + "items": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Error code identifying the failure reason.", + "example": "CUS007" + }, + "message": { + "type": "string", + "description": "Human-readable error description.", + "example": "Customer does not exist" + } + } + } + } + } + } + } + } + , + "examples": { + "exampleGetCustomerIdSuccess": { + "summary": "Get Customer ID Success", + "value": { + "status": "Success", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV4PE82LTNJE9O014OE0", + "data": { + "billerResponse": [ + { + "name": "customerId", + "value": "IN0025000213" + }, + { + "name": "customerType", + "value": "RESIDENTINDIVIDUAL" + } + ] + } + } + }, + "exampleGenerateOtpSuccess": { + "summary": "Generate OTP Success", + "value": { + "status": "Success", + "refId": "OTPGENREF1234567890ABCDEFGHIJKLMNOPQ", + "traceId": "CV4PE82LTNJE9O014OTP", + "data": { + "billerResponse": [ + { + "name": "mobileNumber", + "value": "9812000000" + }, + { + "name": "emailId", + "value": "jane.doe@gmail.com" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "bankName", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "bankAccountNumber", + "value": "150002000" + }, + { + "name": "customerAccountType", + "value": "Savings" + }, + { + "name": "ifsc", + "value": "ICIC0006720" + }, + { + "name": "accountHolderName", + "value": "jayasurya" + }, + { + "name": "customerType", + "value": "Individual" + }, + { + "name": "pan", + "value": "BPEPS55XXX" + }, + { + "name": "panValidated", + "value": "true" + }, + { + "name": "authenticationMethod", + "value": "OTP" + } + ] + } + } + }, + "exampleValidateOtpSuccess": { + "summary": "Validate OTP Success", + "value": { + "status": "Success", + "refId": "OTPVALREF1234567890RSTUVWXYZABCDEFG", + "traceId": "CV4PE82LTNJE9O01VAL", + "data": { + "billerResponse": [ + { + "name": "customerId", + "value": "IN0025000219" + }, + { + "name": "customerType", + "value": "RESIDENTINDIVIDUAL" + } + ] + } + } + }, + "exampleGetBankMarkupSuccess": { + "summary": "Get Bank Markup Success", + "value": { + "status": "Success", + "refId": "MARKUPREF1234567890HIJKLMNOPQRSTUV", + "traceId": "CV4PE82LTNJE9O0MARK", + "data": { + "billerResponse": [ + { + "name": "relationshipBank", + "value": "INDIA POST PAYMENTS BANK LIMITED", + "billerSpecificInfo": { + "billerId": "BBPSRELATIONSHIPBANK1", + "rate": "0.5", + "units": "fixed", + "indicativePrice": "8500", + "bankId": "10128", + "homeBranchIFSC": "ZSBL0000341" + } + }, + { + "name": "relationshipBank", + "value": "AXIS Bank", + "billerSpecificInfo": { + "billerId": "BBPSRELATIONSHIPBANK2", + "rate": "10.12", + "units": "fixed", + "indicativePrice": "8515", + "bankId": "AX01", + "homeBranchIFSC": "AXIS00006720" + } + }, + { + "name": "relationshipBank", + "value": "ICICI Bank", + "billerSpecificInfo": { + "billerId": "BBPSRELATIONSHIPBANK3", + "rate": "1.325", + "units": "percentage", + "indicativePrice": "8540", + "bankId": "IC01", + "homeBranchIFSC": "ICICI0006720" + } + } + ], + "additionalInfo": [ + { + "name": "accountHolderName", + "value": "Pragna" + }, + { + "name": "tcFlag", + "value": "true" + } + ] + } + } + }, + "exampleFetchBestPriceSuccess": { + "summary": "Fetch Best Price Success", + "value": { + "status": "Success", + "refId": "BESTPRCREF123456789WXYZABCDEFGHIJKL", + "traceId": "CV4PE82LTNJE9O0BEST", + "data": { + "billerResponse": [ + { + "name": "currency", + "value": "USD" + }, + { + "name": "dateOfDelivery", + "value": "2025-05-22" + }, + { + "name": "orderQuantity", + "value": "1000" + }, + { + "name": "bestPrice", + "value": "8505.5" + }, + { + "name": "markup", + "value": "0.5" + }, + { + "name": "units", + "value": "fixed" + }, + { + "name": "totalPayableAmount", + "value": "8506000" + } + ] + } + } + }, + "exampleProcessing": { + "summary": "Operation Still Processing", + "value": { + "status": "Processing", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV4PE82LTNJE9O014OE3", + "data": null + } + }, + "exampleFailureInvalidMobile": { + "summary": "Failure (Generic)", + "value": { + "status": "Failure", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV4PE82LTNJE9O014OE0", + "data": { + "errors": [ + { + "code": "error-code", + "message": "Error message" + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "required": [ + "error", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "Failed" + }, + "traceId": { + "type": "string", + "example": "CV4PE82LTNJE9O014OE0" + }, + "error": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "validation-error" + }, + "message": { + "type": "string", + "example": "Input is invalid" + } + } + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "required": [ + "error", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "Failed" + }, + "traceId": { + "type": "string", + "example": "CV4PE82LTNJE9O014OE0" + }, + "error": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "not-found" + }, + "message": { + "type": "string", + "example": "Resource not found" + } + } + } + } + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "required": [ + "error", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "Failed" + }, + "traceId": { + "type": "string", + "example": "CV4PE82LTNJE9O014OE0" + }, + "error": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "internal-server-error" + }, + "message": { + "type": "string", + "example": "Internal server error" + } + } + } + } + } + } + } + } + }, + "security": [ + { + "Production": [ + "bbps:partner" + ] + }, + { + "Sandbox": [ + "bbps:partner" + ] + }, + { + "QA": [ + "bbps:partner" + ] + } + ] + } + }, + "/api/v2/bbps/bills/mandate/request": { + "post": { + "tags": [ + "Mandate API" + ], + "description": "Partner App requests COU to book an FX mandate after customer confirmation of the best price. For CASH transactions, this effectively means the mandate is placed.", + "parameters": [ + { + "name": "X-PARTNER-ID", + "in": "header", + "description": "Partner ID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "pattern": "^Bearer [a-zA-Z0-9\\-\\._~\\+\\/]+=*$" + }, + "description": "Bearer token for authentication. Format: `Bearer `", + "example": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "agent", + "biller", + "customer", + "mandate" + ], + "type": "object", + "properties": { + "agent": { + "required": [ + "channel", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "AX01AX26INBU00000001" + }, + "channel": { + "type": "string", + "example": "INTB" + }, + "ip": { + "type": "string", + "example": "124.170.23.24" + }, + "mac": { + "type": "string", + "example": "48-4D-7E-CB-DB-6F" + } + } + }, + "biller": { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "HD5140000NAT02" + } + } + }, + "customer": { + "required": [ + "customerParams" + ], + "type": "object", + "properties": { + "customerParams": { + "type": "array", + "items": { + "required": [ + "name", + "value" + ], + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "customerId" + }, + "value": { + "type": "string", + "example": "IN0025000213" + } + } + } + } + } + }, + "mandate": { + "required": [ + "amount", + "mandateRefId", + "mode" + ], + "type": "object", + "properties": { + "mode": { + "type": "string", + "example": "UPI" + }, + "amount": { + "type": "integer", + "example": 8260000 + }, + "mandateRefId": { + "type": "string", + "example": "d30eb5d76250a2faa76c5a2a59c76cc3" + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "FX Mandate booking request initiated", + "content": { + "application/json": { + "schema": { + "required": [ + "data", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "Processing" + }, + "data": { + "required": [ + "refId" + ], + "type": "object", + "properties": { + "refId": { + "type": "string", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + } + } + }, + "traceId": { + "type": "string", + "example": "CV6PG04MUNJG9P126QG3" + } + } + } + } + } + }, + "400": { + "description": "Bad request" + }, + "500": { + "description": "Internal server error" + } + }, + "security": [ + { + "Production": [ + "bbps:partner" + ] + }, + { + "Sandbox": [ + "bbps:partner" + ] + }, + { + "QA": [ + "bbps:partner" + ] + } + ] + } + }, + "/api/v2/bbps/bills/mandate/response": { + "post": { + "tags": [ + "Mandate API" + ], + "description": "Partner App polls COU for the status and result of a previously initiated FX Mandate booking operation.", + "parameters": [ + { + "name": "X-PARTNER-ID", + "in": "header", + "description": "Partner ID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "pattern": "^Bearer [a-zA-Z0-9\\-\\._~\\+\\/]+=*$" + }, + "description": "Bearer token for authentication. Format: `Bearer `", + "example": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "refId" + ], + "type": "object", + "properties": { + "refId": { + "type": "string", + "description": "The COU-generated refId for the Mandate booking operation.", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Status retrieved", + "content": { + "application/json": { + "schema": { + "required": [ + "refId", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Current state of the mandate booking operation.", + "example": "Success" + }, + "refId": { + "type": "string", + "description": "COU-generated reference ID for the mandate booking operation.", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + }, + "traceId": { + "type": "string", + "example": "CV6PG04MUNJG9P126QG3" + }, + "data": { + "type": "object", + "description": "Mandate booking result payload.", + "properties": { + "billerRefId": { + "type": "string", + "description": "Biller reference ID (when available).", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + }, + "transactionId": { + "type": "string", + "description": "Transaction identifier (when available).", + "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + }, + "billerResponse": { + "type": "object", + "description": "Response object returned by the biller.", + "properties": { + "amount": { + "type": "string", + "description": "Amount for the mandate (as returned by biller).", + "example": "8260000" + } + } + }, + "additionalInfo": { + "type": "object", + "description": "Additional biller-provided context (keys may vary).", + "properties": { + "currency": { + "type": "string", + "example": "USD" + }, + "dateOfDelivery": { + "type": "string", + "example": "2025-05-22" + }, + "orderQuantity": { + "type": "string", + "example": "1000" + }, + "bestPrice": { + "type": "string", + "example": "8499.75" + }, + "markup": { + "type": "string", + "example": "0.5" + }, + "units": { + "type": "string", + "example": "fixed" + }, + "deliveryMode": { + "type": "string", + "example": "Currency" + } + } + } + } + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "required": [ + "error", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "Failed" + }, + "traceId": { + "type": "string", + "example": "CV6PG04MUNJG9P126QG3" + }, + "error": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "not-found" + }, + "message": { + "type": "string", + "example": "Resource not found" + } + } + } + } + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "required": [ + "error", + "status", + "traceId" + ], + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "Failed" + }, + "traceId": { + "type": "string", + "example": "CV6PG04MUNJG9P126QG3" + }, + "error": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "internal-server-error" + }, + "message": { + "type": "string", + "example": "Internal server error" + } + } + } + } + } + } + } + } + }, + "security": [ + { + "Production": [ + "bbps:partner" + ] + }, + { + "Sandbox": [ + "bbps:partner" + ] + }, + { + "QA": [ + "bbps:partner" + ] + } + ] + } } }, "components": { diff --git a/api-references/payments/billpay/mobile-prepaid-recharge.json b/api-references/payments/billpay/mobile-prepaid-recharge.json index b4daab0d..aed0713e 100644 --- a/api-references/payments/billpay/mobile-prepaid-recharge.json +++ b/api-references/payments/billpay/mobile-prepaid-recharge.json @@ -1098,7 +1098,7 @@ "properties": { "error": { "type": [ - "string", + "object", "null" ], "example": null, @@ -1147,8 +1147,8 @@ }, "status": { "type": "string", - "example": "Success", - "description": "Status of the recharge transaction.\n\nPossible values:\n- `Success`\n- `Processing`\n- `Failure`" + "example": "Successful", + "description": "Status of the recharge transaction.\n\nPossible values:\n- `Successful`\n- `Processing`\n- `Failure`" }, "operatorRefId": { "type": "string", @@ -1565,8 +1565,8 @@ }, "status": { "type": "string", - "example": "Success", - "description": "Status of the recharge transaction.\n\nPossible values:\n- `Success`\n- `Processing`\n- `Failure`" + "example": "Successful", + "description": "Status of the recharge transaction.\n\nPossible values:\n- `Successful`\n- `Processing`\n- `Failure`" }, "operatorRefId": { "type": "string", @@ -1732,15 +1732,106 @@ ] } }, - "/wallet/balance": { - "get": { + "/recharge/validate": { + "post": { "tags": [ - "Wallet" + "Recharge" + ], + "summary": "API to validate a prepaid recharge request for a mobile number", + "consumes": [ + "application/json" ], - "summary": "API to fetch the balance of the wallet", "produces": [ "application/json" ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "customer", + "paymentDetails" + ], + "properties": { + "customer": { + "type": "object", + "required": [ + "billParameters", + "mobile" + ], + "properties": { + "billParameters": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "description": "The display name of the parameter. Must be one of: 'Mobile Number', 'Operator', or 'Location'.", + "example": "Mobile Number" + }, + "value": { + "type": "string", + "description": "The value for the parameter. For 'Mobile Number': 10-digit number. For 'Operator': lowercase operator name (e.g., 'jio', 'airtel', 'vi', 'bsnl', 'mtnl'). For 'Location': exact circle name." + } + } + }, + "description": "Parameters for the recharge validation. This array should contain three objects with names: 'Mobile Number', 'Operator', and 'Location'." + }, + "mobile": { + "type": "string", + "description": "The 10-digit mobile number of the user initiating the recharge. This may or may not be the same as the number being recharged." + } + }, + "description": "Details needed for identifying the customer and the recharge validation" + }, + "paymentDetails": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "number", + "description": "Recharge amount in paise (1/100 of a rupee). For example, 1100 paise = 11 INR.", + "example": 1100 + } + }, + "description": "Details of the payment for the recharge validation" + } + } + }, + "example": { + "customer": { + "billParameters": [ + { + "name": "Mobile Number", + "value": "7975766912" + }, + { + "name": "Operator", + "value": "jio" + }, + { + "name": "Location", + "value": "Himachal Pradesh" + } + ], + "mobile": "7566628882" + }, + "paymentDetails": { + "amount": 1100 + } + } + } + } + }, "responses": { "200": { "content": { @@ -1756,115 +1847,398 @@ "success": { "type": "boolean", "example": true, - "description": "Status of the API call" + "description": "Status of API call" }, "data": { "type": "object", "properties": { - "balance": { - "type": "number", - "example": 1500.75, - "description": "Current wallet balance available" + "error": { + "$ref": "#/components/schemas/ValidationError", + "nullable": true, + "description": "Error details if any, otherwise null" }, - "currency": { + "details": { + "type": "object", + "properties": { + "mobile_number": { + "type": "string", + "example": "7249649345", + "description": "Mobile number associated with the validation" + }, + "provider": { + "type": "string", + "example": "Airtel", + "description": "Provider name(Airtel, Jio, Vi, BSNL, MTNL)" + }, + "service_type": { + "type": "string", + "example": "M", + "description": "Represents the service type. Always set to `M` for Mobile recharge." + }, + "is_special": { + "type": "boolean", + "example": false, + "description": "Indicates if this is a special service" + } + }, + "description": "Additional details about the recharge validation" + }, + "amount": { + "type": "integer", + "example": 2200, + "description": "Recharge amount in paise" + }, + "ValidationRefNo": { "type": "string", - "example": "INR", - "description": "Currency of the wallet balance" + "example": "LXMREN493393852", + "description": "Unique validation reference number for the transaction" + }, + "status": { + "type": "string", + "example": "Successful", + "description": "Status of the recharge validation. Possible values: `Validation Successful`, `Validation Failed`" } }, - "description": "Details of the wallet balance" + "description": "Details of the recharge validation" }, - "traceId": { + "trace_id": { "type": "string", - "example": "dMXpKMx4TBKsu8ro1559WeYZS21Og5", - "description": "Identifier associated with this response for debug purposes" + "example": "0466a81f4d4a1c336dcbc", + "description": "Identifier associated with this response for debugging purposes" + } + } + }, + "examples": { + "validation-success": { + "value": { + "data": { + "error": null, + "details": { + "mobile_number": "7249649345", + "provider": "Airtel", + "service_type": "M", + "is_special": false + }, + "amount": 2200, + "ValidationRefNo": "LXMREN493393852", + "status": "Validation Successful" + }, + "trace_id": "0466a81f4d4a1c336dcbc", + "success": true + } + }, + "invalid-amount": { + "value": { + "data": { + "error": { + "code": "2", + "message": "Invalid Amount.", + "failureReason": "Invalid Amount" + }, + "details": { + "mobile_number": "7249649345", + "provider": "Airtel", + "service_type": "M", + "is_special": false + }, + "amount": 150, + "ValidationRefNo": "LVSYAHFY389555848", + "status": "Validation Failed" + }, + "trace_id": "d4kll8d2vl64uj1778m0", + "success": true + } + }, + "amount-zero-failure": { + "value": { + "data": { + "error": { + "code": "4", + "message": "Amount Less Or Equalto Zero", + "failureReason": "Amount Less Or Equalto Zero" + }, + "details": { + "mobile_number": "7249649345", + "provider": "Airtel", + "service_type": "M", + "is_special": false + }, + "amount": 0, + "ValidationRefNo": "LVSYTNLY389512894", + "status": "Validation Failed" + }, + "trace_id": "d4klbe52vl649l2047sg", + "success": true + } + }, + "operator-internal-processing-error": { + "value": { + "data": { + "error": { + "code": "2", + "message": "Operator Internal processing error", + "failureReason": "Operator Internal processing error" + }, + "details": { + "mobile_number": "7249649345", + "provider": "Airtel", + "service_type": "M", + "is_special": false + }, + "amount": 0, + "ValidationRefNo": "LVSYTNLY389516789", + "status": "Validation Failed" + }, + "trace_id": "d4kll8d2vl64uj1778m0", + "success": true + } + }, + "error-in-validation-api-call": { + "value": { + "data": { + "error": { + "code": "1", + "message": "Error in Validation API call", + "failureReason": "Error in Validation API call" + }, + "details": { + "mobile_number": "7249649345", + "provider": "Airtel", + "service_type": "M", + "is_special": false + }, + "amount": 0, + "ValidationRefNo": "LVSYTNLY389516789", + "status": "Validation Failed" + }, + "trace_id": "d4kll8d2vl64uj1778m0", + "success": true } } } } }, - "description": "Response containing the wallet balance details" + "description": "Ok" }, - "422": { - "description": "Unprocessable Entity", + "400": { + "description": "Bad Request - Missing Required Parameters", "content": { "application/json": { "schema": { "type": "object", - "required": ["success", "error", "trace_id"], "properties": { - "success": { "type": "boolean", "example": false }, "error": { "type": "object", - "required": ["code", "message", "failureReason"], "properties": { - "code": { "type": "string", "example": "ERR009" }, - "message": { "type": "string", "example": "Invalid Product Instance ID: " }, - "failureReason": { "type": "string", "example": "invalid-instance-id" } + "code": { + "type": "string", + "example": "ERR011" + }, + "failureReason": { + "type": "string", + "example": "input-params-missing" + }, + "message": { + "type": "string", + "example": "Missing required parameters: ['Mobile Number', 'Operator', 'Location']" + } } }, - "trace_id": { "type": "string", "example": "d1m1kslcjsji7vn3b5vg" } + "success": { + "type": "boolean", + "example": false + }, + "trace_id": { + "type": "string", + "example": "TRACE-1234567890" + } } }, "examples": { - "invalid-instance-id": { - "value": { - "success": false, - "error": { - "code": "ERR009", - "message": "Invalid Product Instance ID: b7e2c9a1-5d4f-4c8e-9f3a-2a1b6c7d8e9f", - "failureReason": "invalid-instance-id" - }, - "trace_id": "d1m1kslcjsji7vn3b5vg" - } - }, - "balance-api-unavailable-in-uat": { + "missing-params": { "value": { "success": false, "error": { - "code": "ERR012", - "message": "Balance API is not available in UAT environment", - "failureReason": "balance-api-unavailable-in-uat" + "code": "ERR011", + "message": "Missing required parameters: ['Mobile Number', 'Operator', 'Location']", + "failureReason": "input-params-missing" }, - "trace_id": "d1m1j6kd7qs2b5gbln8g" + "trace_id": "TRACE-1234567890" } } } } } }, - "500": { - "description": "Internal Server Error", + "422": { + "description": "Invalid Request Parameters", "content": { "application/json": { "schema": { "type": "object", - "required": ["success", "error", "trace_id"], "properties": { - "success": { "type": "boolean", "example": false }, "error": { "type": "object", - "required": ["code", "message", "failureReason"], "properties": { - "code": { "type": "string", "example": "ERR100" }, - "message": { "type": "string", "example": "Internal Server Error" }, - "failureReason": { "type": "string", "example": "internal-server-error" } + "code": { + "type": "string", + "example": "ERR011" + }, + "failureReason": { + "type": "string", + "example": "input-params-invalid" + }, + "message": { + "type": "string", + "example": "Invalid operator name" + } } }, - "trace_id": { "type": "string", "example": "d1m1us4d7qs2b5gblne0" } + "success": { + "type": "boolean", + "example": false + }, + "trace_id": { + "type": "string", + "example": "ac14888e-d56d-46e1-83cc-a408c87d32d0" + } } }, - "example": { - "success": false, - "error": { - "code": "ERR100", - "message": "Internal Server Error", - "failureReason": "internal-server-error" - }, - "trace_id": "d1m1us4d7qs2b5gblne0" - } - } - } + "examples": { + "invalid-params": { + "value": { + "error": { + "code": "ERR011", + "failureReason": "input-params-invalid", + "message": "Invalid operator name" + }, + "success": false, + "trace_id": "ac14888e-d56d-46e1-83cc-a408c87d32d0" + } + }, + "invalid-payment-mode": { + "value": { + "error": { + "code": "ERR011", + "message": "Value error, allowed payment modes : ['Internet Banking', 'UPI', 'Debit Card', 'Credit Card', 'Wallet']: paymentDetails.mode", + "failureReason": "input-params-invalid" + }, + "success": false, + "trace_id": "ac14888e-d56d-46e1-83cc-a408c87d32d0" + } + }, + "invalid-instance-id": { + "value": { + "error": { + "code": "ERR009", + "message": "Invalid Product Instance ID: 91b09564-c250-4823-a262-7464c171974eaa", + "failureReason": "invalid-instance-id" + }, + "success": false, + "trace_id": "8ed9fff1-19fb-4ce5-8072-22b02a314d1f" + } + } + } + } + } + }, + "500": { + "description": "Upstream API Connectivity Error", + "headers": { + "content-length": { + "schema": { + "type": "string", + "example": "183" + } + }, + "date": { + "schema": { + "type": "string", + "example": "Mon, 14 Oct 2024 04:22:39 GMT" + } + }, + "server": { + "schema": { + "type": "string", + "example": "uvicorn" + } + }, + "x-trace-id": { + "schema": { + "type": "string", + "example": "45c7e24c-68c2-46ab-84fc-fb2b7fe5b02b" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "ERR999" + }, + "failureReason": { + "type": "string", + "example": "upstream-connectivity-error" + }, + "message": { + "type": "string", + "example": "Upstream API Connectivity Error" + } + } + }, + "success": { + "type": "boolean", + "example": false + }, + "trace_id": { + "type": "string", + "example": "45c7e24c-68c2-46ab-84fc-fb2b7fe5b02b" + } + } + }, + "examples": { + "upstream-connectivity-error": { + "value": { + "error": { + "code": "ERR999", + "failureReason": "upstream-connectivity-error", + "message": "Upstream API Connectivity Error" + }, + "success": false, + "trace_id": "45c7e24c-68c2-46ab-84fc-fb2b7fe5b02b" + } + }, + "duplicate-payment-ref-id": { + "value": { + "success": false, + "error": { + "code": "ERR005", + "message": "Duplicate Payment Reference ID : TEST6291DD4004750702202402", + "failureReason": "duplicate-payment-ref-id" + }, + "trace_id": "3d7bfc34-0f80-43c2-b103-38633bb74f8b" + } + }, + "invalid-instance-id": { + "value": { + "success": false, + "error": { + "code": "ERR009", + "message": "Invalid Product Instance ID: 91b09564-c250-4823-a262-7464c171974eaa", + "failureReason": "invalid-instance-id" + }, + "trace_id": "8ed9fff1-19fb-4ce5-8072-22b02a314d1f" + } + } + } + } + } } }, "parameters": [ @@ -1883,79 +2257,98 @@ "type": "string", "description": "Bearer token for authorization. Format: 'Bearer {token}' where {token} is access token recieved from token API.", "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + }, + { + "in": "body", + "name": "body", + "schema": { + "type": "object", + "required": [ + "customer", + "paymentDetails" + ], + "properties": { + "customer": { + "type": "object", + "required": [ + "billParameters", + "mobile" + ], + "properties": { + "billParameters": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "example": "Mobile Number", + "description": "The display name of the parameter." + }, + "value": { + "type": "string", + "example": "7975766912", + "description": "The value of the customer mobile number or related info like Operator and Location." + } + } + }, + "description": "Parameters for the recharge validation, including Mobile Number, Operator, and Location.", + "example": [ + { + "name": "Mobile Number", + "value": "7975766912" + }, + { + "name": "Operator", + "value": "jio" + }, + { + "name": "Location", + "value": "Himachal Pradesh" + } + ] + }, + "mobile": { + "type": "string", + "example": "7566628882", + "description": "The mobile number initiating the recharge" + } + }, + "description": "Details needed for identifying the customer and the recharge validation" + }, + "paymentDetails": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "number", + "example": 1100, + "description": "Recharge amount in paise (1/100 of a rupee). Must be a positive integer value representing the amount in paise." + } + }, + "description": "Details of the payment for the recharge validation" + } + } + } } ] } }, - "/transaction": { + "/wallet/balance": { "get": { "tags": [ - "Transaction" + "Wallet" ], - "summary": "API to fetch transaction details", + "summary": "API to fetch the balance of the wallet", "produces": [ "application/json" ], - "parameters": [ - { - "in": "query", - "name": "limit", - "required": false, - "type": "integer", - "example": 1, - "description": "Maximum number of transactions to return per page. Default is 100." - }, - { - "in": "query", - "name": "page_number", - "required": false, - "type": "integer", - "example": 18, - "description": "Page number for pagination. Starts from 1. Default is 1 if not specified." - }, - { - "in": "query", - "name": "operator", - "required": false, - "type": "string", - "example": "Jio", - "description": "Filter transactions by operator name. Must be one of: 'Jio', 'Airtel', 'Vi', 'BSNL', or 'MTNL'." - }, - { - "in": "query", - "name": "start_date", - "required": false, - "type": "string", - "format": "date", - "example": "2024-10-07", - "description": "Start date for transaction history in YYYY-MM-DD format. Cannot be more than 90 days in the past." - }, - { - "in": "query", - "name": "end_date", - "required": false, - "type": "string", - "format": "date", - "example": "2024-10-09", - "description": "End date for transaction history in YYYY-MM-DD format. Cannot be in the future or before start_date." - }, - { - "in": "header", - "name": "X-PRODUCT-INSTANCE-ID", - "required": true, - "type": "string", - "description": "Unique identifier provided by Setu that represents your product instance.", - "example": "b7e2c9a1-5d4f-4c8e-9f3a-2a1b6c7d8e9f" - }, - { - "in": "header", - "name": "Authorization", - "required": true, - "type": "string", - "description": "Bearer token for authorization. Format: 'Bearer {token}' where {token} is access token recieved from token API.", - "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." - } - ], "responses": { "200": { "content": { @@ -1974,44 +2367,20 @@ "description": "Status of the API call" }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "transaction_id": { - "type": "string", - "example": "TXN123456789", - "description": "Unique identifier for the transaction" - }, - "mobile_number": { - "type": "string", - "example": "7066573353", - "description": "Mobile number involved in the transaction" - }, - "operator": { - "type": "string", - "example": "Jio", - "description": "Operator name" - }, - "amount": { - "type": "number", - "example": 2900, - "description": "Transaction amount in paise" - }, - "status": { - "type": "string", - "example": "Successful", - "description": "Status of the transaction. Possible values: `Successful`, `Processing`, `Failure`, `Reversed`." - }, - "timestamp": { - "type": "string", - "format": "date-time", - "example": "2024-10-07T13:54:00+05:30", - "description": "Timestamp of when the transaction occurred" - } + "type": "object", + "properties": { + "balance": { + "type": "number", + "example": 1500.75, + "description": "Current wallet balance available" + }, + "currency": { + "type": "string", + "example": "INR", + "description": "Currency of the wallet balance" } }, - "description": "List of transaction details" + "description": "Details of the wallet balance" }, "traceId": { "type": "string", @@ -2022,35 +2391,52 @@ } } }, - "description": "Response containing the list of transactions" + "description": "Response containing the wallet balance details" }, "422": { - "description": "Invalid Request Parameters", + "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "type": "object", + "required": ["success", "error", "trace_id"], "properties": { "success": { "type": "boolean", "example": false }, "error": { "type": "object", + "required": ["code", "message", "failureReason"], "properties": { "code": { "type": "string", "example": "ERR009" }, - "message": { "type": "string", "example": "Invalid Product Instance ID: 71f05a38-7cb6-4907-b7cb-7521c28824d9" }, + "message": { "type": "string", "example": "Invalid Product Instance ID: " }, "failureReason": { "type": "string", "example": "invalid-instance-id" } } }, - "trace_id": { "type": "string", "example": "d1m02ecd7qsdk10rlkn0" } + "trace_id": { "type": "string", "example": "d1m1kslcjsji7vn3b5vg" } } }, - "example": { - "success": false, - "error": { - "code": "ERR009", - "message": "Invalid Product Instance ID: 71f05a38-7cb6-4907-b7cb-7521c28824d9", - "failureReason": "invalid-instance-id" + "examples": { + "invalid-instance-id": { + "value": { + "success": false, + "error": { + "code": "ERR009", + "message": "Invalid Product Instance ID: b7e2c9a1-5d4f-4c8e-9f3a-2a1b6c7d8e9f", + "failureReason": "invalid-instance-id" + }, + "trace_id": "d1m1kslcjsji7vn3b5vg" + } }, - "trace_id": "d1m02ecd7qsdk10rlkn0" + "balance-api-unavailable-in-uat": { + "value": { + "success": false, + "error": { + "code": "ERR012", + "message": "Balance API is not available in UAT environment", + "failureReason": "balance-api-unavailable-in-uat" + }, + "trace_id": "d1m1j6kd7qs2b5gbln8g" + } + } } } } @@ -2061,17 +2447,19 @@ "application/json": { "schema": { "type": "object", + "required": ["success", "error", "trace_id"], "properties": { "success": { "type": "boolean", "example": false }, "error": { "type": "object", + "required": ["code", "message", "failureReason"], "properties": { "code": { "type": "string", "example": "ERR100" }, "message": { "type": "string", "example": "Internal Server Error" }, "failureReason": { "type": "string", "example": "internal-server-error" } } }, - "trace_id": { "type": "string", "example": "d1m02ecd7qsdk10rlkn0" } + "trace_id": { "type": "string", "example": "d1m1us4d7qs2b5gblne0" } } }, "example": { @@ -2081,17 +2469,61 @@ "message": "Internal Server Error", "failureReason": "internal-server-error" }, - "trace_id": "d1m02ecd7qsdk10rlkn0" + "trace_id": "d1m1us4d7qs2b5gblne0" } } } } - } + }, + "parameters": [ + { + "in": "header", + "name": "X-PRODUCT-INSTANCE-ID", + "required": true, + "type": "string", + "description": "Unique identifier provided by Setu that represents your product instance.", + "example": "b7e2c9a1-5d4f-4c8e-9f3a-2a1b6c7d8e9f" + }, + { + "in": "header", + "name": "Authorization", + "required": true, + "type": "string", + "description": "Bearer token for authorization. Format: 'Bearer {token}' where {token} is access token recieved from token API.", + "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + } + ] } } }, "components": { "schemas": { + "ValidationError": { + "type": "object", + "required": [ + "code", + "message", + "failureReason" + ], + "properties": { + "code": { + "type": "string", + "example": "1", + "description": "Validation error code" + }, + "message": { + "type": "string", + "example": "Error in Validation API call Please try again", + "description": "Human-readable explanation of the error" + }, + "failureReason": { + "type": "string", + "example": "Error in Validation API call Please try again", + "description": "Specific failure reason returned by the provider" + } + }, + "description": "Error payload returned by the validation API" + }, "fetchTokenRequest": { "type": "object", "properties": { diff --git a/api-references/payments/billpay_v1/api-integration.json b/api-references/payments/billpay_v1/api-integration.json index 96c8ef70..158440fc 100644 --- a/api-references/payments/billpay_v1/api-integration.json +++ b/api-references/payments/billpay_v1/api-integration.json @@ -237,7 +237,7 @@ }, "ip": { "type": "string", - "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.", + "description": "Mandatory if channel is `INT`, `INTB`, `MOB`, `MOBB`. Not required for others.", "format": "ipv4", "example": "124.170.23.24" }, @@ -1222,7 +1222,7 @@ }, "ip": { "type": "string", - "description": "Mandatory if channel is `INT`, `INTB`. Not required for others.", + "description": "Mandatory if channel is `INT`, `INTB`, `MOB`, `MOBB`. Not required for others.", "format": "ipv4", "example": "124.170.23.24" }, @@ -2148,6 +2148,17 @@ "schema": { "type": "integer" } + }, + { + "name": "Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "pattern": "^Bearer [a-zA-Z0-9\\-\\._~\\+\\/]+=*$" + }, + "description": "Bearer token for authentication. Format: `Bearer `", + "example": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." } ], "requestBody": { @@ -2173,7 +2184,12 @@ "others", "amount-deducted-biller-credited-no-transaction-id", "amount-deducted-biller-not-credited-no-transaction-id", - "amount-deducted-multiple-times" + "amount-deducted-multiple-times", + "service-not-received", + "service-disconnected", + "late-payment-surcharge", + "wrong-amount", + "payment-info-delay" ] } } @@ -2391,19 +2407,31 @@ "schema": { "type": "integer" } + }, + { + "name": "Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "pattern": "^Bearer [a-zA-Z0-9\\-\\._~\\+\\/]+=*$" + }, + "description": "Bearer token for authentication. Format: `Bearer `", + "example": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." } ], "requestBody": { "content": { "application/json": { "schema": { - "required": ["refId"], + "required": [ + "refId" + ], "type": "object", "properties": { "refId": { "type": "string", - "description": "The generated BBPS Reference ID for the request.", - "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + "description": "The generated Reference ID for the request." } }, "x-go-name": "RefIdBasedRequest", @@ -2415,7 +2443,7 @@ }, "responses": { "200": { - "description": "OK", + "description": "Success - Dispute assigned to appropriate resolver for investigation", "headers": { "X-Frame-Options": { "description": "X Frame options", @@ -2463,7 +2491,10 @@ "content": { "application/json": { "schema": { - "required": ["success", "traceId"], + "required": [ + "success", + "traceId" + ], "type": "object", "properties": { "data": { @@ -2476,38 +2507,66 @@ ], "type": "object", "properties": { - "assignedTo": { + "remarks": { "type": "string", - "example": "ICICI BOU" + "example": "Dispute assigned to appropriate resolver for investigation" }, - "disputeId": { + "ticketType": { "type": "string", - "example": "OP0121046567755" + "enum": [ + "DISPUTE", + "COMPLAINT" + ], + "example": "DISPUTE" }, - "refId": { + "ticketTAT": { "type": "string", - "description": "The generated BBPS Reference ID for the request.", - "example": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + "format": "date", + "nullable": true, + "example": "2024-01-20" }, - "remarks": { + "disposition": { + "type": "string", + "enum": [ + "D11", + "D12", + "D13", + "D21", + "D22", + "D23", + "D31", + "D32" + ], + "example": "D11" + }, + "responseReason": { + "type": "string", + "example": "Dispute assigned to appropriate resolver for investigation" + }, + "assignedTo": { "type": "string", - "example": "Resolved in favour of Biller" + "example": "ICICI BOU" }, "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" + "REJECTED", + "DEFAULT_RESOLVED", + "REFUNDED", + "PENDING_REFUND" ] + }, + "disputeId": { + "type": "string", + "example": "OP0121046567755" + }, + "refId": { + "type": "string", + "description": "The generated Reference ID for the request." } }, "x-go-name": "DisputeResponseData" @@ -2527,70 +2586,779 @@ } } }, - "400": { - "description": "Bad request", + "200-dispute-default-resolved": { + "description": "Success - Dispute automatically resolved due to timeout or default process in favour of customer", + "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": ["error", "success", "traceId"], + "required": [ + "success", + "traceId" + ], "type": "object", "properties": { - "traceId": { - "type": "string", - "example": "C3SFG0O6N88R6UI7EQ" - }, - "error": { - "required": ["code", "message"], + "data": { + "required": [ + "assignedTo", + "disputeId", + "refId", + "remarks", + "status" + ], "type": "object", "properties": { - "code": { + "remarks": { "type": "string", - "example": "error-code-if-any" + "example": "Dispute automatically resolved due to timeout or default process in favour of customer" }, - "message": { + "responseReason": { "type": "string", - "example": "error-message-if-any" + "example": "Automatic resolution due to timeout" + }, + "ticketType": { + "type": "string", + "enum": [ + "DISPUTE", + "COMPLAINT" + ], + "example": "DISPUTE" + }, + "assignedTo": { + "type": "string", + "example": "ICICI BOU" + }, + "status": { + "type": "string", + "description": "BBPS Complaint status", + "example": "DEFAULT_RESOLVED", + "enum": [ + "DEFAULT_RESOLVED" + ] + }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-20" + }, + "disposition": { + "type": "string", + "enum": [ + "D11", + "D12", + "D13", + "D21", + "D22", + "D23", + "D31", + "D32" + ], + "example": "D11" + }, + "disputeId": { + "type": "string", + "example": "OP0121046567755" + }, + "refId": { + "type": "string", + "description": "The generated Reference ID for the request." } - } + }, + "x-go-name": "DisputeResponseData" }, "success": { "type": "boolean", - "example": false + "example": true + }, + "traceId": { + "type": "string", + "example": "C3SFG0O6N88R6UI7EQ" } - } + }, + "x-go-name": "CouAgentDisputeResponse", + "x-omitempty": true } } } }, - "500": { - "description": "Bad request", + "200-dispute-pending-refund": { + "description": "Success - Refund approved and currently being processed", + "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": ["error", "success", "traceId"], + "required": [ + "success", + "traceId" + ], "type": "object", "properties": { - "traceId": { - "type": "string", - "example": "C3SFG0O6N88R6UI7EQ" - }, - "error": { - "required": ["code", "message"], + "data": { + "required": [ + "assignedTo", + "disputeId", + "refId", + "remarks", + "status" + ], "type": "object", "properties": { - "code": { + "remarks": { "type": "string", - "example": "error-code-if-any" + "example": "Refund approved and currently being processed" }, - "message": { + "responseReason": { "type": "string", - "example": "error-message-if-any" + "example": "Refund processing in progress" + }, + "ticketType": { + "type": "string", + "enum": [ + "DISPUTE", + "COMPLAINT" + ], + "example": "DISPUTE" + }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-20" + }, + "assignedTo": { + "type": "string", + "example": "ICICI BOU" + }, + "status": { + "type": "string", + "description": "BBPS Complaint status", + "example": "PENDING_REFUND", + "enum": [ + "PENDING_REFUND" + ] + }, + "disposition": { + "type": "string", + "enum": [ + "D11", + "D12", + "D13", + "D21", + "D22", + "D23", + "D31", + "D32" + ], + "example": "D11" + }, + "disputeId": { + "type": "string", + "example": "OP0121046567755" + }, + "refId": { + "type": "string", + "description": "The generated Reference ID for the request." } - } + }, + "x-go-name": "DisputeResponseData" + }, + "success": { + "type": "boolean", + "example": true + }, + "traceId": { + "type": "string", + "example": "C3SFG0O6N88R6UI7EQ" + } + }, + "x-go-name": "CouAgentDisputeResponse", + "x-omitempty": true + } + } + } + }, + "200-dispute-refunded": { + "description": "Success - Refund successfully processed and completed", + "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": [ + "assignedTo", + "disputeId", + "refId", + "remarks", + "status" + ], + "type": "object", + "properties": { + "remarks": { + "type": "string", + "example": "Refund successfully processed and completed" + }, + "responseReason": { + "type": "string", + "example": "Refund initiated as per resolution" + }, + "ticketType": { + "type": "string", + "enum": [ + "DISPUTE", + "COMPLAINT" + ], + "example": "DISPUTE" + }, + "assignedTo": { + "type": "string", + "example": "ICICI BOU" + }, + "status": { + "type": "string", + "description": "BBPS Complaint status", + "example": "REFUNDED", + "enum": [ + "REFUNDED" + ] + }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-20" + }, + "disposition": { + "type": "string", + "enum": [ + "D11", + "D12", + "D13", + "D21", + "D22", + "D23", + "D31", + "D32" + ], + "example": "D11" + }, + "disputeId": { + "type": "string", + "example": "OP0121046567755" + }, + "refId": { + "type": "string", + "description": "The generated Reference ID for the request." + } + }, + "x-go-name": "DisputeResponseData" + }, + "success": { + "type": "boolean", + "example": true + }, + "traceId": { + "type": "string", + "example": "C3SFG0O6N88R6UI7EQ" + } + }, + "x-go-name": "CouAgentDisputeResponse", + "x-omitempty": true + } + } + } + }, + "200-dispute-rejected": { + "description": "Success - Dispute rejected due to insufficient evidence or invalid claims at biller's end", + "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": [ + "assignedTo", + "disputeId", + "refId", + "remarks", + "status" + ], + "type": "object", + "properties": { + "remarks": { + "type": "string", + "example": "Dispute rejected due to insufficient evidence or invalid claims at biller's end" + }, + "responseReason": { + "type": "string", + "example": "Invalid complaint type or missing documentation" + }, + "ticketType": { + "type": "string", + "enum": [ + "DISPUTE", + "COMPLAINT" + ], + "example": "DISPUTE" + }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-20" + }, + "assignedTo": { + "type": "string", + "example": "ICICI BOU" + }, + "status": { + "type": "string", + "description": "BBPS Complaint status", + "example": "REJECTED", + "enum": [ + "REJECTED" + ] + }, + "disposition": { + "type": "string", + "enum": [ + "D11", + "D12", + "D13", + "D21", + "D22", + "D23", + "D31", + "D32" + ], + "example": "D32" + }, + "disputeId": { + "type": "string", + "example": "OP0121046567755" + }, + "refId": { + "type": "string", + "description": "The generated Reference ID for the request." + } + }, + "x-go-name": "DisputeResponseData" + }, + "success": { + "type": "boolean", + "example": true + }, + "traceId": { + "type": "string", + "example": "C3SFG0O6N88R6UI7EQ" + } + }, + "x-go-name": "CouAgentDisputeResponse", + "x-omitempty": true + } + } + } + }, + "200-dispute-resolved": { + "description": "Success - Dispute successfully resolved through investigation in favour of customer", + "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": [ + "assignedTo", + "disputeId", + "refId", + "remarks", + "status" + ], + "type": "object", + "properties": { + "remarks": { + "type": "string", + "example": "Dispute successfully resolved through investigation in favour of customer" + }, + "responseReason": { + "type": "string", + "example": "Customer complaint validated" + }, + "ticketType": { + "type": "string", + "enum": [ + "DISPUTE", + "COMPLAINT" + ], + "example": "DISPUTE" + }, + "assignedTo": { + "type": "string", + "example": "ICICI BOU" + }, + "status": { + "type": "string", + "description": "BBPS Complaint status", + "example": "RESOLVED", + "enum": [ + "RESOLVED" + ] + }, + "ticketTAT": { + "type": "string", + "format": "date", + "nullable": true, + "example": "2024-01-15" + }, + "disposition": { + "type": "string", + "enum": [ + "D11", + "D12", + "D13", + "D21", + "D22", + "D23", + "D31", + "D32" + ], + "example": "D11" + }, + "disputeId": { + "type": "string", + "example": "OP0121046567755" + }, + "refId": { + "type": "string", + "description": "The generated Reference ID for the request." + } + }, + "x-go-name": "DisputeResponseData" + }, + "success": { + "type": "boolean", + "example": true + }, + "traceId": { + "type": "string", + "example": "C3SFG0O6N88R6UI7EQ" + } + }, + "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" } } } diff --git a/content/README.md b/content/README.md index b56e045f..b289d67d 100644 --- a/content/README.md +++ b/content/README.md @@ -118,6 +118,68 @@ Create a similar `mdx` file inside `test-product-2` and we are done!

+# Hiding pages from the sidebar + +You can hide pages, products, or entire categories from the sidebar navigation while keeping them accessible via direct URL. This is useful for: + +- Deprecated pages that shouldn't be discoverable but need to remain accessible for existing links +- Internal or partner-specific documentation +- Draft content not yet ready for public visibility +- Sample/template content + +Use the `visible_in_sidebar` property and set it to `false`. + +--- + +### Hide a specific page + +In the MDX file's frontmatter, set `visible_in_sidebar: false`: + +``` +--- +sidebar_title: Hidden Page +page_title: Hidden Page β€” Setu Docs +order: 0 +visible_in_sidebar: false +--- +``` + +The page will not appear in the sidebar but can still be accessed via its direct URL. + +--- + +### Hide an entire product + +In `endpoints.json`, set `visible_in_sidebar: false` on the product: + +``` +{ + "name": "Hidden Product", + "path": "hidden-product", + "order": 0, + "visible_in_sidebar": false +} +``` + +--- + +### Hide an entire category + +In `endpoints.json`, set `visible_in_sidebar: false` on the category: + +``` +{ + "name": "Hidden Category", + "path": "hidden-category", + "order": 4, + "visible_in_sidebar": false, + "children": [...] +} +``` + +
+
+ # Using React components in MDX files List of all components and their usage can be found by visiting https://docs.setu.co/sample-category/sample-product/sample-page diff --git a/content/data/account-aggregator/consent-object.mdx b/content/data/account-aggregator/consent-object.mdx index e04cef0d..b3e3a0e1 100644 --- a/content/data/account-aggregator/consent-object.mdx +++ b/content/data/account-aggregator/consent-object.mdx @@ -230,10 +230,6 @@ The `context` parameter accepts key-value pairs to customize the consent flow. B ## FIP Selector Screen - - This feature is coming soon and will be available in future releases. - - ### Overview The FIP Selector Screen is a feature that helps improve AA journey success rates by intelligently routing users to the best performing Account Aggregator (AA) - FIP pair. diff --git a/content/data/bav/reverse-penny-drop/api-integration.mdx b/content/data/bav/reverse-penny-drop/api-integration.mdx index 1b0199f7..a3cb40d0 100644 --- a/content/data/bav/reverse-penny-drop/api-integration.mdx +++ b/content/data/bav/reverse-penny-drop/api-integration.mdx @@ -96,6 +96,7 @@ If successful, you will get a JSON response. Two of the fields in the response w - `BAV_REVERSE_PENNY_DROP_FAILED`, something went wrong. A payment should not be attempted with this request id. - `BAV_REVERSE_PENNY_DROP_EXPIRED`, upon expiry of payment link for customer. No payments can be done with expired links. The expiry is triggered as per the specified `validUpto` field or within 24 hours, whichever comes first. - `BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL`, when your user has successfully paid, and Setu’s banking partner has sent a credit alert with bank account details. +- `BAV_REVERSE_PENNY_DROP_PII_PURGED`, Indicates a successful transaction where all PII has been purged. Purge occurs automatically post successful webhook delivery or in batch within 1–2 days. - `BAV_REVERSE_PENNY_DROP_PAYMENT_FAILED`, when an issue occurs during payment by your user or at Setu’s banking partner’s end. The payment, if made, will be auto-refunded. @@ -500,6 +501,45 @@ _The value can be `SAVINGS`, `CURRENT`, `NRO`, `NRE`_ + + Example 3 + + + +
+ + In case of PII purged + +
+ {` +{ + "data": { + "rpd": { + "success": true, + "id": "1af36b4e-681e-48a2-a15c-3b92da00e4c4", + "upiBillId": "1005100812449350916", + "data": null, + "additionalData": { + "key1": value1, + "key2": value2 + }, + "receiptId": "RPD_REC_12345", + "transactionId": "RPD_TXN_67890", + "status": "BAV_REVERSE_PENNY_DROP_PII_PURGED" + } + }, + "event": "RPD_VERIFICATION_UPDATE", + "status": "BAV_REVERSE_PENNY_DROP_PII_PURGED", + "traceId": "1-6348f366-55c47bbe132d78441bbe4623", + "productInstanceId": "prod_inst_123", + "timeStamp": "2023-10-27T10:00:00+05:30" +} + `} + + +
+
+ ##### 2. RPD_DEBIT_ATTEMPT_FAILED Webhook This webhook is sent when the end user tries to make a payments but the debit fails due to some reason. @@ -660,8 +700,8 @@ This is an optional API. This API lets you know the bank verification status.
Response
{`{ - "status": "BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL", // or, BAV_REVERSE_PENNY_DROP_CREATED, BAV_REVERSE_PENNY_DROP_EXPIRED, BAV_REVERSE_PENNY_DROP_PAYMENT_FAILED - "data": { // null if status is BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL and data is not purged + "status": "BAV_REVERSE_PENNY_DROP_PAYMENT_SUCCESSFUL", // or, BAV_REVERSE_PENNY_DROP_CREATED, BAV_REVERSE_PENNY_DROP_EXPIRED, BAV_REVERSE_PENNY_DROP_PII_PURGED, BAV_REVERSE_PENNY_DROP_PAYMENT_FAILED + "data": { // null if status is BAV_REVERSE_PENNY_DROP_PII_PURGED and data is purged "accountType": "BANK_ACCOUNT", "bankAccountType": "SAVINGS" // Optional, can be null "bankAccountIfsc": "SBIN0000539", @@ -705,6 +745,44 @@ This is an optional API. This API lets you know the bank verification status. }, { key: "2", + label: "200", + content: ( + <> + <> +

+ Success Bank + verification status and bank details (if + available). +

+
+
Request
+ + {`GET /api/verify/ban/reverse/:requestId`} + +
+
Response
+ + {`{ + "status": "BAV_REVERSE_PENNY_DROP_PII_PURGED", + "data": null, + "id": "1b740e7a-5a81-4b88-ad43-110a08935286", + "shortUrl": "https://sandbox.bills.pe/wh9kk4mwuktg", + "upiBillId": "1114053970646533628", + "upiLink": "upi://pay?pa=bauvatest@kaypay&pn=BauvaTest&am=1.00&tr=1114053970646533628&tn=Account%20Verification&cu=INR&mode=04", + "validUpto": "2023-03-13T13:20:52.277688" + "traceId": "1-640f228a-4dded97e470971343adae3da", + "additionalData": { + "key1": "value1" + "key2": "value2" + }, +}`} + + + + ), + }, + { + key: "3", label: "404", content: ( <> @@ -732,7 +810,7 @@ This is an optional API. This API lets you know the bank verification status. ), }, { - key: "3", + key: "4", label: "500", content: ( <> diff --git a/content/dev-tools/bridge/glossary.mdx b/content/dev-tools/bridge/glossary.mdx index d58a2eee..667cd103 100644 --- a/content/dev-tools/bridge/glossary.mdx +++ b/content/dev-tools/bridge/glossary.mdx @@ -15,7 +15,7 @@ This is any organisation using the Bridge, and will always be one of the followi |:-------|:------------------------------------------------------------------------| | **Parent Bridge account** | When you sign up on the Bridge, you provide an organisation name and create an account against itβ€”this becomes the parent account within which you can integrate with multiple Setu products. | | **Child sub-org account** | Child sub-org accounts always belong to a parent organisation’s account. When you want to use any product, such as KYC, eNACH, Account Aggregator, or UPI Setu, you need to set up a child sub-org account that contains details for:

1. Your organisation, either reused from sign-up or a relevant subsidiary, for which KYC will be done.

2. The product category you want to use.

Here are a few examples:

β€’ **Account Aggregator FIUs (Financial Information Users):** In the AA ecosystem, entities using financial information, such as personal finance apps or loan providers.

β€’ **UPI merchants:** In the UPI ecosystem, entities collecting payments through UPI.

β€’ **BBPS BOU billers:** Entities collecting repeat payments for their services via BBPS-enabled apps.

β€’ **BBPS COU agents:**Entities offering BBPS-enabled platforms to collect bill payments for BBPS billers. | -| **Aggregator account (coming soon)** | This is a type of parent Bridge account, that is allowed to resell Setu products to its business customers. The Bridge allows additional features for an aggregatorβ€”like viewing combined reports and analytics for all their business customers, or managing their corresponding Parent Bridge accounts with a single login.

If you want to become an aggregator, please contact onboarding@setu.co for more details.| +| **Aggregator account (coming soon)** | This is a type of parent Bridge account, that is allowed to resell Setu products to its business customers. The Bridge allows additional features for an aggregatorβ€”like viewing combined reports and analytics for all their business customers, or managing their corresponding Parent Bridge accounts with a single login.

If you want to become an aggregator, please contact [onboarding@setu.co](mailto:onboarding@setu.co) for more details.| diff --git a/content/menuItems.json b/content/menuItems.json index 83bd9a9e..6ee88935 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,"children":[{"name":"Fetch & Pay","visible_in_sidebar":true,"page_title":"API integration - Fetch & Pay","path":"fetch-pay","order":1},{"name":"Validate & Pay","visible_in_sidebar":true,"page_title":"BBPS - API integration","path":"validate-pay","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,"versions":["v1","v2"],"default_version":"v2","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":13},{"name":"List of APIs","visible_in_sidebar":true,"page_title":"BBPS COU - List of APIs","path":"apis","order":2},{"name":"Paying for options","visible_in_sidebar":true,"page_title":"Paying for alternative options","path":"bill-payment-options","order":7},{"name":"Passing CCF","visible_in_sidebar":true,"page_title":"Customer Convenience Fee (CCF) Integration Guide","path":"customer-convenience-fee","order":6},{"name":"Harmonization of TAT","visible_in_sidebar":true,"page_title":"Harmonization Of TAT (Disputes API)","path":"harmonization_of_tat","order":11},{"name":"Paying for multiple bills","visible_in_sidebar":true,"page_title":"Paying for multiple bills","path":"multi-bill-processing","order":8},{"name":"Objects","visible_in_sidebar":true,"page_title":"BBPS COU - Objects","path":"objects","order":14},{"name":"Paying Bills","visible_in_sidebar":true,"page_title":"BBPS Bill Payment Integration Guide","path":"paying_bills","order":4},{"name":"Paying for plans","visible_in_sidebar":true,"page_title":"Paying for plans","path":"plan-mdm-integration","order":9},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS COU - API integration","path":"quickstart","order":1},{"name":"Passing Remitter Details","visible_in_sidebar":true,"page_title":"Passing Remitter Details","path":"remittance_flows_guide","order":5},{"name":"Integrating with UPMS","visible_in_sidebar":true,"page_title":"BBPS COU - Integrating with UPMS","path":"upms","order":12},{"name":"Migration Guide to v2","visible_in_sidebar":true,"page_title":"BBPS COU - Migration Guide to v2","path":"v2-migration","order":10},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS COU - Webhooks","path":"webhooks","order":3}]},{"name":"API reference","visible_in_sidebar":false,"page_title":"BillPay API reference","path":"api-reference","order":5},{"name":"Prepaid Recharge","visible_in_sidebar":true,"page_title":"BBPS Billpay Prepaid Recharge APIs","path":"mobile-prepaid-recharge","order":3,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Mobile Prepaid Recharge API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Mobile Prepaid Recharge quickstart","path":"quickstart","order":1}]},{"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":5},{"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":false,"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":"Remitter Details","visible_in_sidebar":true,"page_title":"Remitter Details For Bill Payments Integration Guide","path":"remitter-details","order":4},{"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":"webhooks","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":"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":"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":"Secure Data Add-On","visible_in_sidebar":true,"page_title":"Setu Encrypted APIs","path":"encryption","order":2},{"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 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":9},{"name":"Error codes","visible_in_sidebar":true,"page_title":"Aadhaar eSign error codes","path":"error-codes","order":8},{"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":7},{"name":"Overview","visible_in_sidebar":true,"page_title":"Aadhaar eSign overview","path":"overview","order":1},{"name":"PDF templates","visible_in_sidebar":true,"page_title":"Integration guide with pdf templating API's","path":"pdf-templating","order":5},{"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":"Pull Driving Licence","visible_in_sidebar":true,"page_title":"Digilocker Quickstart","path":"pulldrivinglicense","order":2},{"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":"Multi AA gateway","visible_in_sidebar":true,"page_title":"Account Aggregator multi-AA gateway","path":"multi-aa-gateway","order":2},{"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":"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,"versions":["v1","v2","v3"],"default_version":"v3","visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Setu Insights API reference","path":"api-reference","order":4},{"name":"Error codes","visible_in_sidebar":true,"page_title":"Setu Insights error codes","path":"error-code","order":5},{"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}]},{"path":"v1","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}]}]},{"path":"v2","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}]}]},{"name":"ULI","path":"uli","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":"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":2,"visible_in_sidebar":true,"children":[{"name":"The Bridge","path":"bridge","order":0,"versions":["v1","v2"],"default_version":"v2","visible_in_sidebar":true,"children":[{"name":"Analytics and reports","visible_in_sidebar":true,"page_title":"Bridge analytics and reports","path":"analytics-and-reports","order":3},{"name":"Configure products","visible_in_sidebar":true,"page_title":"Bridge explore and configure products","path":"explore-and-configure-products","order":2},{"name":"Glossary","visible_in_sidebar":true,"page_title":"Bridge glossary","path":"glossary","order":1},{"name":"Overview","visible_in_sidebar":true,"page_title":"Bridge overview","path":"overview","order":0},{"name":"Settings","visible_in_sidebar":true,"page_title":"Bridge settings","path":"settings","order":4},{"name":"User profile","visible_in_sidebar":true,"page_title":"Bridge user profile","path":"user-profile","order":5},{"path":"v1","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":3,"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,"children":[{"name":"Fetch & Pay","visible_in_sidebar":true,"page_title":"API integration - Fetch & Pay","path":"fetch-pay","order":1},{"name":"Validate & Pay","visible_in_sidebar":true,"page_title":"BBPS - API integration","path":"validate-pay","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,"versions":["v1","v2"],"default_version":"v2","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":9},{"name":"List of APIs","visible_in_sidebar":true,"page_title":"BBPS COU - List of APIs","path":"apis","order":2},{"name":"FX Retail","visible_in_sidebar":true,"page_title":"BBPS COU - FX Retail (Forex category)","path":"fx-retail","order":8},{"name":"Harmonization of TAT","visible_in_sidebar":true,"page_title":"Harmonization Of TAT (Disputes API)","path":"harmonization_of_tat","order":6},{"name":"Objects","visible_in_sidebar":true,"page_title":"BBPS COU - Objects","path":"objects","order":10},{"name":"Paying Bills","visible_in_sidebar":true,"page_title":"Paying Bills","path":"paying-bills","order":4,"children":[{"name":"Paying for options","visible_in_sidebar":true,"page_title":"Paying for alternative options","path":"bill-payment-options","order":4},{"name":"Passing CCF","visible_in_sidebar":true,"page_title":"Customer Convenience Fee (CCF) Integration Guide","path":"customer-convenience-fee","order":3},{"name":"Paying multiple bills","visible_in_sidebar":true,"page_title":"Paying for multiple bills","path":"multi-bill-processing","order":5},{"name":"Paying for plans","visible_in_sidebar":true,"page_title":"Paying for plans","path":"plan-mdm-integration","order":6},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS Bill Payment Integration Guide","path":"quickstart","order":1},{"name":"Remitter Details","visible_in_sidebar":true,"page_title":"Passing Remitter Details","path":"remittance_flows_guide","order":2}]},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS COU - API integration","path":"quickstart","order":1},{"name":"Integrating with UPMS","visible_in_sidebar":true,"page_title":"BBPS COU - Integrating with UPMS","path":"upms","order":7},{"name":"Migration Guide to v2","visible_in_sidebar":true,"page_title":"BBPS COU - Migration Guide to v2","path":"v2-migration","order":5},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"BBPS COU - Webhooks","path":"webhooks","order":3}]},{"name":"API reference","visible_in_sidebar":false,"page_title":"BillPay API reference","path":"api-reference","order":5},{"path":"mcp","children":[{"name":"Integration Guide","visible_in_sidebar":false,"page_title":"MCP Server for Bill Payments - Integration Guide","path":"integration-guide","order":1},{"name":"Tools and Prompts","visible_in_sidebar":false,"page_title":"MCP Server for Bill Payments - Tools and Prompts","path":"tools-and-prompts","order":2}]},{"name":"Prepaid Recharge","visible_in_sidebar":true,"page_title":"BBPS Billpay Prepaid Recharge APIs","path":"mobile-prepaid-recharge","order":3,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Mobile Prepaid Recharge API reference","path":"api-reference","order":2},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"Mobile Prepaid Recharge quickstart","path":"quickstart","order":1},{"name":"Webhooks","visible_in_sidebar":true,"page_title":"Mobile Prepaid Recharge Webhooks","path":"webhooks","order":3}]},{"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":5},{"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":false,"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":"Remitter Details","visible_in_sidebar":true,"page_title":"Remitter Details For Bill Payments Integration Guide","path":"remitter-details","order":4},{"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":"webhooks","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":"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":"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":"Secure Data Add-On","visible_in_sidebar":true,"page_title":"Setu Encrypted APIs","path":"encryption","order":2},{"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 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":9},{"name":"Error codes","visible_in_sidebar":true,"page_title":"Aadhaar eSign error codes","path":"error-codes","order":8},{"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":7},{"name":"Overview","visible_in_sidebar":true,"page_title":"Aadhaar eSign overview","path":"overview","order":1},{"name":"PDF templates","visible_in_sidebar":true,"page_title":"Integration guide with pdf templating API's","path":"pdf-templating","order":5},{"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":"Pull Driving Licence","visible_in_sidebar":true,"page_title":"Digilocker Quickstart","path":"pulldrivinglicense","order":2},{"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":"Multi AA gateway","visible_in_sidebar":true,"page_title":"Account Aggregator multi-AA gateway","path":"multi-aa-gateway","order":2},{"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":"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,"versions":["v1","v2","v3"],"default_version":"v3","visible_in_sidebar":true,"children":[{"name":"API reference","visible_in_sidebar":true,"page_title":"Setu Insights API reference","path":"api-reference","order":4},{"name":"Error codes","visible_in_sidebar":true,"page_title":"Setu Insights error codes","path":"error-code","order":5},{"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}]},{"path":"v1","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}]}]},{"path":"v2","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}]}]},{"name":"ULI","path":"uli","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":"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":2,"visible_in_sidebar":true,"children":[{"name":"The Bridge","path":"bridge","order":0,"versions":["v1","v2"],"default_version":"v2","visible_in_sidebar":true,"children":[{"name":"Analytics and reports","visible_in_sidebar":true,"page_title":"Bridge analytics and reports","path":"analytics-and-reports","order":3},{"name":"Configure products","visible_in_sidebar":true,"page_title":"Bridge explore and configure products","path":"explore-and-configure-products","order":2},{"name":"Glossary","visible_in_sidebar":true,"page_title":"Bridge glossary","path":"glossary","order":1},{"name":"Overview","visible_in_sidebar":true,"page_title":"Bridge overview","path":"overview","order":0},{"name":"Settings","visible_in_sidebar":true,"page_title":"Bridge settings","path":"settings","order":4},{"name":"User profile","visible_in_sidebar":true,"page_title":"Bridge user profile","path":"user-profile","order":5},{"path":"v1","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":3,"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/api-integration/api-reference.mdx b/content/payments/billpay/api-integration/api-reference.mdx index 575b37d7..ed3fbdf5 100644 --- a/content/payments/billpay/api-integration/api-reference.mdx +++ b/content/payments/billpay/api-integration/api-reference.mdx @@ -1,6 +1,6 @@ --- sidebar_title: API reference page_title: COU Direct Connectivity API reference -order: 13 +order: 9 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/apis.mdx b/content/payments/billpay/api-integration/apis.mdx index 6d0b3e3c..e38106db 100644 --- a/content/payments/billpay/api-integration/apis.mdx +++ b/content/payments/billpay/api-integration/apis.mdx @@ -136,147 +136,516 @@ You may also use the `/bbps/bills/fetch/response` endpoint with above `refId` to In the response you either get the bill details, or "Processing" status if the bill fetch is still in progress. +
+ +### Val Add (Value Added Services) + +Some BBPS billers support **value added services** (Val Add) such as customer onboarding / OTP verification / markup & best-price discovery flows. COU exposes these flows as asynchronous APIs (request + response) β€” with webhooks as the primary mechanism and polling as fallback. + +- **Initiate Val Add operation**: `/bbps/valadd/{requestType}/request` +- **Poll Val Add result**: `/bbps/valadd/{requestType}/response` + +`requestType` is one of: + +- `GetCustomerId` +- `GenerateOTP` +- `ValidateOTP` +- `GetBankMarkup` +- `FetchBestPrice` + -
- - - Sample response - - - {` - { - "data": { - "additionalInfo": [ - { - "name": "Distributor Contact", - "value": "Cockatoojelly" - }, - { - "name": "Distributor Name", - "value": "Frightstripe" - }, - { - "name": "Consumer Number", - "value": "105" - }, - { - "name": "Consumer Address", - "value": "Samuraipsychadelic" - } - ], - "bills": [ - { - "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", - "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" - } - `} -
+
+ + + Sample Request β€” GetCustomerId + + + {` +{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "9812000000" + } + ] +} + `} +
+
+ +
+ + +
+ + + Sample Request β€” GenerateOTP + + + {` +{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { "name": "mobileNumber", "value": "8838151414" }, + { "name": "emailId", "value": "jayasurya.s_tra@npci.org.in" }, + { "name": "bankId", "value": "10128" }, + { "name": "bankName", "value": "INDIA POST PAYMENTS BANK LIMITED" }, + { "name": "bankAccountNumber", "value": "150002000" }, + { "name": "customerAccountType", "value": "Savings" }, + { "name": "ifsc", "value": "ZSBL0000341" }, + { "name": "accountHolderName", "value": "jayasurya" }, + { "name": "customerType", "value": "ResidentIndividual" }, + { "name": "pan", "value": "JS00024252" }, + { "name": "panValidated", "value": "true" } + ] +} + `} +
+
+ +
+ + +
+ + + Sample Request β€” ValidateOTP + + + {` +{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { "name": "mobileNumber", "value": "9182583612" }, + { "name": "emailId", "value": "pragna.n@npci.org.in" }, + { "name": "mobileOTP", "value": "870398" }, + { "name": "emailOTP", "value": "806963" }, + { "name": "bankId", "value": "10128" }, + { "name": "bankName", "value": "INDIA POST PAYMENTS BANK LIMITED" }, + { "name": "bankAccountNumber", "value": "150002000" }, + { "name": "customerAccountType", "value": "Savings" }, + { "name": "ifsc", "value": "ZSBL0000341" }, + { "name": "accountHolderName", "value": "Pragna" }, + { "name": "customerType", "value": "ResidentIndividual" }, + { "name": "pan", "value": "NP00024253" }, + { "name": "panValidated", "value": "true" }, + { "name": "tcFlag", "value": "true" } + ] +} + `} +
+
+ +
+ + +
+ + + Sample Request β€” GetBankMarkup + + + {` +{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { "name": "mobileNumber", "value": "7075465595" }, + { "name": "customerId", "value": "IN0025000217" }, + { "name": "pan", "value": "NB00024252" } + ] +} + `} +
+
+ +
+ + +
+ + + Sample Request β€” FetchBestPrice + + + {` +{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "RBFX00000KARDG" + }, + "inputParams": [ + { "name": "bankBranch", "value": "SHIVAJI NAGAR" }, + { "name": "bankId", "value": "10128" }, + { "name": "currency", "value": "USD" }, + { "name": "customerId", "value": "IN0025000213" }, + { "name": "deliveryMode", "value": "Currency" }, + { "name": "ifsc", "value": "ZSBL0000341" }, + { "name": "instrumentType", "value": "CASH" }, + { "name": "markup", "value": "0.5" }, + { "name": "mobileNumber", "value": "8838151414" }, + { "name": "orderQuantity", "value": "1000" }, + { "name": "pan", "value": "JS00024252" }, + { "name": "relationshipBank", "value": "INDIA POST PAYMENTS BANK LIMITED" }, + { "name": "tcFlag", "value": "true" }, + { "name": "transactionType", "value": "PURCHASE" }, + { "name": "units", "value": "fixed" } + ] +} + `} +
+
+ +
+ +The response will acknowledge the request and provide a `refId`. You’ll receive the final outcome via webhook; alternatively, you can poll using `/bbps/valadd/{requestType}/response`. + + +
+ + + Sample Response + + + {` +{ + "status": "Processing", + "data": { + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + }, + "traceId": "CV4PE82LTNJE9O014OE1" +} + `} +
+
+ +
+ + +
+ + + Sample Response β€” GetCustomerId (Success) + + + {` +{ + "status": "Success", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV4PE82LTNJE9O014OE0", + "data": { + "billerResponse": [ + { "name": "customerId", "value": "IN0025000213" }, + { "name": "customerType", "value": "RESIDENTINDIVIDUAL" } + ] + } +} + `} +
+
+ + +
+ + + Sample Response β€” GenerateOTP (Success) + + + {` +{ + "status": "Success", + "refId": "OTPGENREF1234567890ABCDEFGHIJKLMNOPQ", + "traceId": "CV4PE82LTNJE9O014OTP", + "data": { + "billerResponse": [ + { "name": "mobileNumber", "value": "9812000000" }, + { "name": "emailId", "value": "jane.doe@gmail.com" }, + { "name": "bankId", "value": "10128" }, + { "name": "bankName", "value": "INDIA POST PAYMENTS BANK LIMITED" }, + { "name": "bankAccountNumber", "value": "150002000" }, + { "name": "customerAccountType", "value": "Savings" }, + { "name": "ifsc", "value": "ICIC0006720" }, + { "name": "accountHolderName", "value": "jayasurya" }, + { "name": "customerType", "value": "Individual" }, + { "name": "pan", "value": "BPEPS55XXX" }, + { "name": "panValidated", "value": "true" }, + { "name": "authenticationMethod", "value": "OTP" } + ] + } +} + `} +
+
+ +
+ + +
+ + + Sample Response β€” ValidateOTP (Success) + + + {` +{ + "status": "Success", + "refId": "OTPVALREF1234567890RSTUVWXYZABCDEFG", + "traceId": "CV4PE82LTNJE9O01VAL", + "data": { + "billerResponse": [ + { "name": "customerId", "value": "IN0025000219" }, + { "name": "customerType", "value": "RESIDENTINDIVIDUAL" } + ] + } +} + `} +
+
+ +
+ + +
+ + + Sample Response β€” GetBankMarkup (Success) + + + {` +{ + "status": "Success", + "refId": "MARKUPREF1234567890HIJKLMNOPQRSTUV", + "traceId": "CV4PE82LTNJE9O0MARK", + "data": { + "billerResponse": [ + { + "name": "relationshipBank", + "value": "INDIA POST PAYMENTS BANK LIMITED", + "billerSpecificInfo": { + "billerId": "BBPSRELATIONSHIPBANK1", + "rate": "0.5", + "units": "fixed", + "indicativePrice": "8500", + "bankId": "10128", + "homeBranchIFSC": "ZSBL0000341" + } + } + ], + "additionalInfo": [ + { "name": "accountHolderName", "value": "Pragna" }, + { "name": "tcFlag", "value": "true" } + ] + } +} + `} +
+
+ +
+ + +
+ + + Sample Response β€” FetchBestPrice (Success) + + + {` +{ + "status": "Success", + "refId": "BESTPRCREF123456789WXYZABCDEFGHIJKL", + "traceId": "CV4PE82LTNJE9O0BEST", + "data": { + "billerResponse": [ + { "name": "currency", "value": "USD" }, + { "name": "dateOfDelivery", "value": "2025-05-22" }, + { "name": "orderQuantity", "value": "1000" }, + { "name": "bestPrice", "value": "8505.5" }, + { "name": "markup", "value": "0.5" }, + { "name": "units", "value": "fixed" }, + { "name": "totalPayableAmount", "value": "8506000" } + ] + } +} + `} +
+
+ +
+ + +
+ + + Sample Response β€” Failure (Generic) + + + {` +{ + "status": "Failure", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV4PE82LTNJE9O014OE0", + "data": { + "errors": [ + { "code": "error-code", "message": "Error message" } + ] + } +} + `} +
+
+ +
+ +### FX Mandate booking + +For the FX transaction flow, COU exposes APIs to **book an FX mandate** and to **poll the booking status** (fallback for webhooks). + +- **Book FX mandate**: `/bbps/bills/mandate/request` +- **Poll FX mandate status**: `/bbps/bills/mandate/response` + + +
+ + + Sample Request β€” Book FX mandate + + + {` +{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "HD5140000NAT02" + }, + "customer": { + "customerParams": [ + { "name": "mobileNumber", "value": "8838151414" }, + { "name": "customerId", "value": "IN0025000213" }, + { "name": "currency", "value": "USD" }, + { "name": "instrumentType", "value": "CASH" }, + { "name": "markup", "value": "0.5" }, + { "name": "bestPrice", "value": "8505.5" } + ] + }, + "mandate": { + "mode": "UPI", + "amount": 8260000, + "mandateRefId": "d30eb5d76250a2faa76c5a2a59c76cc3" + } +} + `} +
+
+ +
+ +Similar to other async COU APIs, you get a `refId` in the response, and can poll status using `/bbps/bills/mandate/response` if needed. + +
+ + + Possible Mandate error codes (FX Retail) + + + +| Error Code | Description | +| --- | --- | +| `MOB001` | Mobile number should not be empty | +| `MOB002` | Invalid mobile number | +| `MOB004` | Mobile number does not exist for the customer | +| `CUS002` | Customer status is not active. Current status is `` (e.g., suspend, terminate) | +| `CUS003` | Customer Id should not be empty | +| `CUS004` | Invalid Customer Id | +| `CUS005` | No active bank relationship for the customer | +| `CST002` | Customer type should be `RESIDENTINDIVIDUAL`/`SOLEPROPRIETORSHIP` | +| `CUR001` | Currency should not be empty | +| `CUR002` | Invalid currency | +| `TXN001` | Transaction Type should not be empty | +| `TXN002` | Invalid transaction type | +| `INT001` | Instrument Type should not be empty | +| `INT002` | Invalid instrument type | +| `BNK001` | Bank Name should not be empty | +| `BNK002` | Invalid Bank Name | +| `BNK003` | Bank does not exist | +| `BNK004` | Bank status is not active. Current status is `` (e.g., suspend, terminate) | +| `MRK001` | Markup should not be empty | +| `MRK002` | Invalid Markup | +| `DLM001` | Delivery mode should not be empty | +| `DLM002` | Delivery mode should only be `Currency`, `Forex Card Load`, `Remittance` | +| `ORQ001` | Order Quantity should not be empty | +| `ORQ002` | Order Quantity should be a positive value | +| `ORQ003` | Order Quantity should be greater than zero | +| `ORQ004` | Order Quantity should not be less than Minimum Order Quantity | +| `ORQ005` | Order Quantity should contain only 2 decimals | +| `ORQ006` | Maximum Order Quantity is breached. Allowed maximum value is `` | +| `BRH001` | Bank Branch should not be empty | +| `BRH002` | Invalid Bank Branch | +| `BNK005` | Bank id should not be empty | +| `AMT001` | Amount should not be empty | +| `AMT002` | Invalid Amount | +| `TXN003` | Txn Reference Id should not be empty | +| `TXN004` | Invalid Txn Reference Id | +| `TXN005` | Txn Reference Id should be unique | +| `MRI001` | Mandate Ref Id should not be empty | +| `MRI002` | Invalid Mandate Ref Id | +| `CTS001` | Customer Transaction services are closed for today. Please try again tomorrow during business hours. | +| `CUS007` | Customer does not exist | +| `MAN001` | User level limit price hard check failure | +| `internal-error` | Internal Server Error | +
+
### 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 a payment with the biller. +> **FX Retail (Val Add + Mandate flows)**: When the payment is being initiated as part of the **FX mandate** journey, include `paymentType: "MANDATE_AND_PAY"` in the request body of the Pay bill API. The rest of the Pay bill payload remains the same. +
### Raise dispute @@ -307,6 +676,14 @@ For your convenience, Setu also provides actions to list data in bulk, that can List billers β€”lists all billers on BBPS. +
+ FX Retail fields (present on every biller): +
    +
  • valAddFlag (boolean) β€” indicates if value-added services are enabled for the biller.
  • +
  • valAddCustParams (ValAddCustParamSpec[]) β€” customer parameters required for value-added service flows. Each entry includes requestType (e.g. MANDATE_AND_PAY for FX Retail mandate+pay) and the corresponding customerParams specs.
  • +
  • mandateRequirement (string) β€” mandate requirement for the biller (e.g. MANDATORY). For FX Retail billers, use this to decide whether mandate+pay flow is required.
  • +
  • pseudoBiller (boolean) β€” indicates if the biller is a pseudo biller.
  • +
  • ` from the token API | +| `Content-Type` | `application/json` | + +### Agent object + +Every Val Add and Mandate request includes an `agent` object. See [Agent](/payments/billpay/api-integration/objects#agent) object for the full schema and channel-specific requirements. + +### Bank and branch master list + +The master list of banks and their branches (used in fields like `bankId`, `bankName`, `bankBranch`, and `ifsc`) will be shared manually with AIs for now. + +### Async pattern + +All Val Add and Mandate calls are **asynchronous**. On 200 OK, the initial request returns immediately with a `refId`: + +{`{ + "status": "Processing", + "data": { + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202" + }, + "traceId": "CV4PE82LTNJE9O014OE1" +}`} + +To get the final result, use either: + +- **Webhooks** (preferred) β€” receive the outcome on your registered webhook endpoint. See [Webhooks](/payments/billpay/api-integration/webhooks). +- **Polling** (fallback) β€” call the corresponding `/response` endpoint with the `refId` (each step below lists the exact poll URL). + +For the complete request/response schema and error codes, see the [Val Add API reference](/payments/billpay/api-integration/api-reference#/category~Val%20Add%20APIs) and [Mandate API reference](/payments/billpay/api-integration/api-reference#/category~Mandate%20API). The steps below cover the happy path with example payloads. + +## End-to-end flow (buy flow) + +The FX Retail flow is driven by **Val Add** APIs for onboarding + pricing, followed by **Mandate** booking (order placement), and finally a **Pay bill** request for BBPS/NPCI reconciliation. + +### Step 1 β€” Check if customer is onboarded (GetCustomerId) + +Check if the customer is already registered on the FX Retail platform using the customer's `mobileNumber`. + +- **Request**: `POST /api/v2/bbps/valadd/GetCustomerId/request` +- **Poll**: `POST /api/v2/bbps/valadd/GetCustomerId/response` + +If the customer is registered, the response includes a `customerId` and `customerType`. + +**Request body** + +{`{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "9812000000" + } + ] +}`} + +**Success response** (from `/response` endpoint or webhook) + +{`{ + "status": "Success", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV4PE82LTNJE9O014OE0", + "data": { + "billerResponse": [ + { + "name": "customerId", + "value": "IN0025000213" + }, + { + "name": "customerType", + "value": "RESIDENTINDIVIDUAL" + } + ] + } +}`} + +> If the response is successful, you already have a `customerId` β€” skip to Step 4. Only proceed to Step 2 if the call fails with error code `CUS007` (customer does not exist). + +### Step 2 β€” If not onboarded, generate OTP (GenerateOTP) + +If the customer is not registered, register them by generating OTP(s). + +- **Request**: `POST /api/v2/bbps/valadd/GenerateOTP/request` +- **Poll**: `POST /api/v2/bbps/valadd/GenerateOTP/response` + +Send required details such as: + +- `mobileNumber` +- `emailId` +- bank account details (bankId/bankName/account number/IFSC/account type/account holder name) +- `pan` and `panValidated` + +**Request body** + +{`{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "8838151414" + }, + { + "name": "emailId", + "value": "jayasurya.s_tra@npci.org.in" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "bankName", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "bankAccountNumber", + "value": "150002000" + }, + { + "name": "customerAccountType", + "value": "Savings" + }, + { + "name": "ifsc", + "value": "ZSBL0000341" + }, + { + "name": "accountHolderName", + "value": "jayasurya" + }, + { + "name": "customerType", + "value": "ResidentIndividual" + }, + { + "name": "pan", + "value": "JS00024252" + }, + { + "name": "panValidated", + "value": "true" + } + ] +}`} + +**Success response** (from `/response` endpoint or webhook) + +On successful generation of OTP(s), the response will look like this: + +{`{ + "status": "Success", + "refId": "OTPGENREF1234567890ABCDEFGHIJKLMNOPQ", + "traceId": "CV4PE82LTNJE9O014OTP", + "data": { + "billerResponse": [ + { + "name": "mobileNumber", + "value": "9812000000" + }, + { + "name": "emailId", + "value": "jane.doe@gmail.com" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "bankName", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "bankAccountNumber", + "value": "150002000" + }, + { + "name": "customerAccountType", + "value": "Savings" + }, + { + "name": "ifsc", + "value": "ICIC0006720" + }, + { + "name": "accountHolderName", + "value": "jayasurya" + }, + { + "name": "customerType", + "value": "Individual" + }, + { + "name": "pan", + "value": "BPEPS55XXX" + }, + { + "name": "panValidated", + "value": "true" + }, + { + "name": "authenticationMethod", + "value": "OTP" + } + ] + } +}`} + +### Step 3 β€” Validate OTP + accept T&C (ValidateOTP) + +Validate the OTP(s) received by the customer. + +- **Request**: `POST /api/v2/bbps/valadd/ValidateOTP/request` +- **Poll**: `POST /api/v2/bbps/valadd/ValidateOTP/response` + +Pass: + +- `mobileOTP` and `emailOTP` +- `tcFlag` (terms and conditions acceptance) +- along with the same context previously sent in GenerateOTP (as required by the biller) + +If OTP validation succeeds, the FX Retail platform registers the user and returns the `customerId`. + +**Request body** + +{`{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "9182583612" + }, + { + "name": "emailId", + "value": "pragna.n@npci.org.in" + }, + { + "name": "mobileOTP", + "value": "870398" + }, + { + "name": "emailOTP", + "value": "806963" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "bankName", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "bankAccountNumber", + "value": "150002000" + }, + { + "name": "customerAccountType", + "value": "Savings" + }, + { + "name": "ifsc", + "value": "ZSBL0000341" + }, + { + "name": "accountHolderName", + "value": "Pragna" + }, + { + "name": "customerType", + "value": "ResidentIndividual" + }, + { + "name": "pan", + "value": "NP00024253" + }, + { + "name": "panValidated", + "value": "true" + }, + { + "name": "tcFlag", + "value": "true" + } + ] +}`} + +**Success response** (from `/response` endpoint or webhook) + +{`{ + "status": "Success", + "refId": "OTPVALREF1234567890RSTUVWXYZABCDEFG", + "traceId": "CV4PE82LTNJE9O01VAL", + "data": { + "billerResponse": [ + { + "name": "customerId", + "value": "IN0025000219" + }, + { + "name": "customerType", + "value": "RESIDENTINDIVIDUAL" + } + ] + } +}`} + +> The `customerId` returned here is used in Steps 4 and 5. + +### Step 4 β€” Get bank markup (GetBankMarkup) + +Fetch markup associated with the customer's bank. + +- **Request**: `POST /api/v2/bbps/valadd/GetBankMarkup/request` +- **Poll**: `POST /api/v2/bbps/valadd/GetBankMarkup/response` + +If multiple banks are associated with the customer's FX account, multiple markups can be returned. + +**Request body** + +{`{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "FXRE00000KER3U" + }, + "inputParams": [ + { + "name": "mobileNumber", + "value": "7075465595" + }, + { + "name": "customerId", + "value": "IN0025000217" + }, + { + "name": "pan", + "value": "NB00024252" + } + ] +}`} + +**Success response** (from `/response` endpoint or webhook) + +{`{ + "status": "Success", + "refId": "MARKUPREF1234567890HIJKLMNOPQRSTUV", + "traceId": "CV4PE82LTNJE9O0MARK", + "data": { + "billerResponse": [ + { + "name": "relationshipBank", + "value": "INDIA POST PAYMENTS BANK LIMITED", + "billerSpecificInfo": { + "billerId": "BBPSRELATIONSHIPBANK1", + "rate": "0.5", + "units": "fixed", + "indicativePrice": "8500", + "bankId": "10128", + "homeBranchIFSC": "ZSBL0000341" + } + }, + { + "name": "relationshipBank", + "value": "AXIS Bank", + "billerSpecificInfo": { + "billerId": "BBPSRELATIONSHIPBANK2", + "rate": "10.12", + "units": "fixed", + "indicativePrice": "8515", + "bankId": "AX01", + "homeBranchIFSC": "AXIS00006720" + } + }, + { + "name": "relationshipBank", + "value": "ICICI Bank", + "billerSpecificInfo": { + "billerId": "BBPSRELATIONSHIPBANK3", + "rate": "1.325", + "units": "percentage", + "indicativePrice": "8540", + "bankId": "IC01", + "homeBranchIFSC": "ICICI0006720" + } + } + ], + "additionalInfo": [ + { + "name": "accountHolderName", + "value": "Pragna" + }, + { + "name": "tcFlag", + "value": "true" + } + ] + } +}`} + +> Present these banks to the customer. The selected bank's `bankId`, `homeBranchIFSC`, `rate`, `units`, and `relationshipBank` name are needed for FetchBestPrice. + +### Step 5 β€” Fetch best price (FetchBestPrice) + +Customer selects a bank/markup and then the PSP app fetches the best currency price. + +- **Request**: `POST /api/v2/bbps/valadd/FetchBestPrice/request` +- **Poll**: `POST /api/v2/bbps/valadd/FetchBestPrice/response` + +The response includes the **best price** and a **total payable amount** which typically includes a **buffer** to account for price fluctuations. + +**Request body** + +The following fields are carried over from earlier steps: +- `bankId` β€” from Step 4 `billerSpecificInfo.bankId` +- `customerId` β€” from Step 1 or Step 3 +- `ifsc` β€” from Step 4 `billerSpecificInfo.homeBranchIFSC` +- `markup` β€” from Step 4 `billerSpecificInfo.rate` +- `relationshipBank` β€” from Step 4 `billerResponse[].value` +- `units` β€” from Step 4 `billerSpecificInfo.units` + +{`{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "RBFX00000KARDG" + }, + "inputParams": [ + { + "name": "bankBranch", + "value": "SHIVAJI NAGAR" + }, + { + "name": "bankId", + "value": "10128" + }, + { + "name": "currency", + "value": "USD" + }, + { + "name": "customerId", + "value": "IN0025000213" + }, + { + "name": "deliveryMode", + "value": "Currency" + }, + { + "name": "ifsc", + "value": "ZSBL0000341" + }, + { + "name": "instrumentType", + "value": "CASH" + }, + { + "name": "markup", + "value": "0.5" + }, + { + "name": "mobileNumber", + "value": "8838151414" + }, + { + "name": "orderQuantity", + "value": "1000" + }, + { + "name": "pan", + "value": "JS00024252" + }, + { + "name": "relationshipBank", + "value": "INDIA POST PAYMENTS BANK LIMITED" + }, + { + "name": "tcFlag", + "value": "true" + }, + { + "name": "transactionType", + "value": "PURCHASE" + }, + { + "name": "units", + "value": "fixed" + } + ] +}`} + +**Success response** (from `/response` endpoint or webhook) + +{`{ + "status": "Success", + "refId": "BESTPRCREF123456789WXYZABCDEFGHIJKL", + "traceId": "CV4PE82LTNJE9O0BEST", + "data": { + "billerResponse": [ + { + "name": "currency", + "value": "USD" + }, + { + "name": "dateOfDelivery", + "value": "2025-05-22" + }, + { + "name": "orderQuantity", + "value": "1000" + }, + { + "name": "bestPrice", + "value": "8505.5" + }, + { + "name": "markup", + "value": "0.5" + }, + { + "name": "units", + "value": "fixed" + }, + { + "name": "totalPayableAmount", + "value": "8506000" + } + ] + } +}`} + +> `totalPayableAmount` is in paise and includes a buffer for price fluctuation. This is the amount the PSP should debit in Step 6. + +### Step 6 β€” Debit funds from the customer (PSP-managed) + +The PSP app debits the `totalPayableAmount` (from Step 5) from the customer's account β€” this happens **outside** of BBPS COU APIs. + +### Step 7 β€” Place order by booking mandate (Mandate request/response) + +Initiate the mandate booking request. For FX Retail, this effectively places the order on the FX Retail platform. + +- **Mandate request**: `POST /api/v2/bbps/bills/mandate/request` +- **Mandate response (poll)**: `POST /api/v2/bbps/bills/mandate/response` (fallback for webhooks) + +On success, the mandate result includes the **actual amount utilised** for the order. + +**Important**: the mandate/order can fail if the market price moves above the amount returned during FetchBestPrice. + +**Request body** + +The `customerId` is from Step 1 or Step 3, and `amount` is the `totalPayableAmount` from Step 5 (in paise). + +{`{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "HD5140000NAT02" + }, + "customer": { + "customerParams": [ + { + "name": "customerId", + "value": "IN0025000213" + } + ] + }, + "mandate": { + "mode": "UPI", + "amount": 8506000, + "mandateRefId": "d30eb5d76250a2faa76c5a2a59c76cc3" + } +}`} + +**Success response** (from `/response` endpoint or webhook) + +{`{ + "status": "Success", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV6PG04MUNJG9P126QG3", + "data": { + "billerRefId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "transactionId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "billerResponse": { + "amount": "8260000" + }, + "additionalInfo": { + "currency": "USD", + "dateOfDelivery": "2025-05-22", + "orderQuantity": "1000", + "bestPrice": "8499.75", + "markup": "0.5", + "units": "fixed", + "deliveryMode": "Currency" + } + } +}`} + +> The mandate can fail if the market price moves above the buffered amount. + +### Step 8 β€” Refund the difference (PSP-managed) + +If the customer was debited a buffered amount, the PSP app should: + +- compute the delta between (debited amount) and (amount utilised returned in mandate result) +- refund the difference back to the customer + +Compute: `totalPayableAmount` (Step 5) minus `billerResponse.amount` (Step 7). Refund this delta to the customer. + +This refund happens **outside** of BBPS COU APIs. + +### Step 9 β€” Send Pay bill request for reconciliation (Pay bill) + +Finally, call **Pay bill** to complete BBPS/NPCI reconciliation. For FX Retail mandate flows, the payment has already been collected in the earlier PSP debit + mandate placement, so this API is used for reconciliation and settlement workflows. + +- **Pay bill request**: `POST /api/v2/bbps/bills/payment/request` + +For FX Retail mandate-related payments, include: + +- `paymentType: "MANDATE_AND_PAY"` + +**Request body** + +The `refId` is the mandate's `refId` from Step 7. + +{`{ + "agent": { + "id": "AX01AX26INBU00000001", + "channel": "INTB", + "ip": "124.170.23.24", + "mac": "48-4D-7E-CB-DB-6F" + }, + "biller": { + "id": "HD5140000NAT02" + }, + "customer": { + "mobile": "9812000000", + "customerParams": [ + { + "name": "customerId", + "value": "IN0025000213" + } + ] + }, + "paymentDetails": { + "amount": 8260000, + "mode": "Internet Banking", + "paymentRefId": "BD019181220291", + "timestamp": "2020-12-12T13:12:00+05:30" + }, + "remitter": { + "name": "jayasurya", + "email": "jayasurya.s_tra@npci.org.in", + "pan": "JS00024252" + }, + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "paymentType": "MANDATE_AND_PAY" +}`} + +## Error handling + +When an API call fails, the response follows this format: + +{`{ + "status": "Failure", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "traceId": "CV4PE82LTNJE9O014OE0", + "data": { + "errors": [ + { + "code": "error-code", + "message": "Error message" + } + ] + } +}`} + +Common failure scenarios: + +- **Invalid OTP**: The OTP provided in ValidateOTP is incorrect or expired. Retry GenerateOTP to request a new OTP. +- **Price movement exceeding buffer**: The market price moved above the buffered `totalPayableAmount` between FetchBestPrice and the mandate request. Re-run FetchBestPrice to get updated pricing. +- **Customer not found**: The `customerId` is invalid or does not exist on the FX Retail platform. Verify the customer is registered via GetCustomerId. + +## Webhooks vs polling + +For details on the async pattern, see the [Common requirements](#common-requirements) section above. + +Refer to: + +- **Webhooks**: `/payments/billpay/api-integration/webhooks` +- **List of APIs**: `/payments/billpay/api-integration/apis` + + diff --git a/content/payments/billpay/api-integration/harmonization_of_tat.mdx b/content/payments/billpay/api-integration/harmonization_of_tat.mdx index 3ed7612f..fec2e73f 100644 --- a/content/payments/billpay/api-integration/harmonization_of_tat.mdx +++ b/content/payments/billpay/api-integration/harmonization_of_tat.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Harmonization of TAT page_title: Harmonization Of TAT (Disputes API) -order: 11 +order: 6 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/objects.mdx b/content/payments/billpay/api-integration/objects.mdx index 260db69b..31546260 100644 --- a/content/payments/billpay/api-integration/objects.mdx +++ b/content/payments/billpay/api-integration/objects.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Objects page_title: BBPS COU β€” Objects -order: 14 +order: 10 visible_in_sidebar: true --- @@ -67,6 +67,18 @@ Biller object holds the biller ID. | --------- | -------- | --------------------- | | `id` | `string` | The Biller ID on BBPS | +## Biller (List billers response) + +The List billers API returns a richer biller object. For **FX Retail** flows, the following fields are relevant: + +| parameter | type | description | +| --- | --- | --- | +| `valAddFlag` | `boolean` | Indicates if value-added services are enabled for the biller. | +| `valAddCustParams` | `object` | Customer parameters required for value-added service flows. Each entry is scoped by `requestType`. For FX Retail billers, `requestType` can be `MANDATE_AND_PAY`. | +| `mandateRequirement` | `string` | Mandate requirement for the biller (example: `MANDATORY`). For FX Retail billers, use this to determine if the biller requires the mandate+pay flow. | +| `pseudoBiller` | `boolean` | Indicates if the biller is a pseudo biller. | + + ## Agent Details pertaining to the Agent which initiates the transaction. Values of the field if provided to NPCI has to be matched against it. diff --git a/content/payments/billpay/api-integration/paying-bills.mdx b/content/payments/billpay/api-integration/paying-bills.mdx new file mode 100644 index 00000000..3b8b7fa8 --- /dev/null +++ b/content/payments/billpay/api-integration/paying-bills.mdx @@ -0,0 +1,6 @@ +--- +sidebar_title: Paying Bills +page_title: Paying Bills +order: 4 +visible_in_sidebar: true +--- diff --git a/content/payments/billpay/api-integration/bill-payment-options.mdx b/content/payments/billpay/api-integration/paying-bills/bill-payment-options.mdx similarity index 97% rename from content/payments/billpay/api-integration/bill-payment-options.mdx rename to content/payments/billpay/api-integration/paying-bills/bill-payment-options.mdx index 0fc8ee92..7a84d23d 100644 --- a/content/payments/billpay/api-integration/bill-payment-options.mdx +++ b/content/payments/billpay/api-integration/paying-bills/bill-payment-options.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Paying for options page_title: Paying for alternative options -order: 7 +order: 4 visible_in_sidebar: true --- @@ -182,7 +182,7 @@ Before sending your payment request, validate these requirements to avoid API re If your biller charges CCF, compute it on the final payable amount (base or selected option amount) and include it only in `paymentDetails.custConvFee`. Never add CCF to the `paymentDetails.amount` field. -πŸ“– **Complete CCF implementation β†’ Customer Convenience Fee Guide** +πŸ“– **Complete CCF implementation β†’ Customer Convenience Fee Guide** ## 8. Complete Example: Smart Default in Action @@ -216,7 +216,7 @@ Scenario: Today is 2024‑12‑31 10:00 IST. Your fetch returned a base amount o ## 10. Reference Links -- **Master guide**: Flow 1 implementation details β†’ Paying Bills +- **Master guide**: Flow 1 implementation details β†’ Paying Bills - **API specifications**: Complete endpoint documentation β†’ API Reference - **Real‑time updates**: Payment status webhooks β†’ Webhooks Integration diff --git a/content/payments/billpay/api-integration/customer-convenience-fee.mdx b/content/payments/billpay/api-integration/paying-bills/customer-convenience-fee.mdx similarity index 93% rename from content/payments/billpay/api-integration/customer-convenience-fee.mdx rename to content/payments/billpay/api-integration/paying-bills/customer-convenience-fee.mdx index 36aa5e6f..2eb26fd6 100644 --- a/content/payments/billpay/api-integration/customer-convenience-fee.mdx +++ b/content/payments/billpay/api-integration/paying-bills/customer-convenience-fee.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Passing CCF page_title: Customer Convenience Fee (CCF) Integration Guide -order: 6 +order: 3 visible_in_sidebar: true --- @@ -139,7 +139,12 @@ Note: The values are for illustration purposes only. ### 5.1 Detection Logic -First, identify billers that charge CCF by looking for specific entries in the `interchangeFee` array which have `feeCode: "CCF1"` and `feeDirection: "C2B"`. +Look for `CCF1` + `C2B` entries in the `interchangeFee` array. Zero CCF has two forms, **check for both**: + +1. **Missing** - No `CCF1`/`C2B` entry at all β†’ Zero CCF +2. **Present but inactive** - Entry exists with `flatFee: 0` AND `percentFee: 0` β†’ Zero CCF + +If either is true, you may omit `custConvFee` from your payment request. If a `CCF1`/`C2B` entry exists with any non-zero fee, calculate the CCF using the formula in section 5.2. ### 5.2 CCF Calculation Formula @@ -246,8 +251,8 @@ When using payment options (alternative amounts), calculate CCF on the final sel ## 10. Reference Links -- **Master guide**: Bill payment flows β†’ Paying Bills -- **Payment options**: CCF with alternative amounts β†’ Bill Payment Options +- **Master guide**: Bill payment flows β†’ Paying Bills +- **Payment options**: CCF with alternative amounts β†’ Bill Payment Options - **API specifications**: Complete endpoint documentation β†’ API Reference - **List Billers API**: Biller metadata and fee structure β†’ List Billers diff --git a/content/payments/billpay/api-integration/multi-bill-processing.mdx b/content/payments/billpay/api-integration/paying-bills/multi-bill-processing.mdx similarity index 86% rename from content/payments/billpay/api-integration/multi-bill-processing.mdx rename to content/payments/billpay/api-integration/paying-bills/multi-bill-processing.mdx index ab721736..d317d1e5 100644 --- a/content/payments/billpay/api-integration/multi-bill-processing.mdx +++ b/content/payments/billpay/api-integration/paying-bills/multi-bill-processing.mdx @@ -1,15 +1,15 @@ --- -sidebar_title: Paying for multiple bills +sidebar_title: Paying multiple bills page_title: Paying for multiple bills -order: 8 +order: 5 visible_in_sidebar: true --- # Multi-Bill Processing Integration Guide -**This extends Flow 1 (Bill Fetch β†’ Payment) from the master guide.** Only needed when billers return multiple bills in a single fetch (< 1% of billers). +**This extends Flow 1 (Bill Fetch β†’ Payment) from the master guide.** Only needed when billers return multiple bills in a single fetch (< 1% of billers). -πŸ“– **Start here first β†’ Paying Bills Integration Guide** +πŸ“– **Start here first β†’ Paying Bills Integration Guide** ## 1. When You Need This Guide @@ -130,8 +130,8 @@ function renderBillSelection(fetchResponse) { ## 7. Reference Links πŸ“– **Related Guides:** -- Paying Bills Integration Guide β€” Master guide with Flow 1 implementation -- Paying for alternative options β€” Handle payment options within bills +- Paying Bills Integration Guide β€” Master guide with Flow 1 implementation +- Paying for alternative options β€” Handle payment options within bills - API Reference β€” Complete endpoint specifications - Webhooks Integration β€” Real-time payment status updates diff --git a/content/payments/billpay/api-integration/plan-mdm-integration.mdx b/content/payments/billpay/api-integration/paying-bills/plan-mdm-integration.mdx similarity index 99% rename from content/payments/billpay/api-integration/plan-mdm-integration.mdx rename to content/payments/billpay/api-integration/paying-bills/plan-mdm-integration.mdx index e0734a61..9a060fd5 100644 --- a/content/payments/billpay/api-integration/plan-mdm-integration.mdx +++ b/content/payments/billpay/api-integration/paying-bills/plan-mdm-integration.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Paying for plans page_title: Paying for plans -order: 9 +order: 6 visible_in_sidebar: true --- # When Users Need to Select Plans @@ -10,7 +10,7 @@ visible_in_sidebar: true Some services require your users to choose a plan before payment - like mobile recharge plans, DTH packages, or broadband subscriptions. This guide shows you how to handle these plan selection flows in your app. -πŸ“– **This extends Flow 2: Bill Validation β†’ Payment from the master guide** +πŸ“– **This extends Flow 2: Bill Validation β†’ Payment from the master guide** **What this means for your users:** - Instead of paying a bill amount, they choose from available plans @@ -107,7 +107,7 @@ Check the biller metadata from Bill Validation flow +β†’ Use standard Bill Validation flow
    diff --git a/content/payments/billpay/api-integration/paying_bills.mdx b/content/payments/billpay/api-integration/paying-bills/quickstart.mdx similarity index 92% rename from content/payments/billpay/api-integration/paying_bills.mdx rename to content/payments/billpay/api-integration/paying-bills/quickstart.mdx index 51881343..9276db9a 100644 --- a/content/payments/billpay/api-integration/paying_bills.mdx +++ b/content/payments/billpay/api-integration/paying-bills/quickstart.mdx @@ -1,13 +1,13 @@ --- -sidebar_title: Paying Bills +sidebar_title: Quickstart page_title: BBPS Bill Payment Integration Guide -order: 4 +order: 1 visible_in_sidebar: true --- # Paying Bills -**Scope**: This guide covers using Setu APIs to pay bills through the BBPS (Bharat Bill Payment System) network. For prepaid mobile recharge, refer to the separate prepaid recharge API documentation. +**Scope**: This guide covers using Setu APIs to pay bills through the BBPS (Bharat Bill Payment System) network. For prepaid mobile recharge, refer to the separate prepaid recharge API documentation. This guide works for both v1 and v2 APIs. Key differences: @@ -93,7 +93,7 @@ The "remitter" is the person actually making the payment, which might be differe Different payment methods require specific formattingβ€”UPI needs a Virtual Payment Address, cards need numbers and authorization codes, bank transfers need IFSC and account numbers. The specialized guide covers all these NPCI-compatible formats and when to use each one. -πŸ“– **Complete NPCI formats and examples β†’ Remitter Details Guide** +πŸ“– **Complete NPCI formats and examples β†’ Remitter Details Guide** ### 2.3 When Billers Charge Additional Fees @@ -101,7 +101,7 @@ Some billers charge a Customer Convenience Fee (CCF) on top of the bill amount Most billers have zero CCF, but when it applies, you'll need to calculate the fee separately and include it in your payment request as `custConvFee`. The total amount debited from your user will be the bill amount plus the CCF. -πŸ“– **Complete CCF implementation β†’ Customer Convenience Fee Guide** +πŸ“– **Complete CCF implementation β†’ Customer Convenience Fee Guide** These universal requirements form the foundation of every bill payment request, regardless of which flow you implement. Now you're ready to choose your specific flow based on the biller's `fetchApiType`β€”each flow builds on these universal requirements while adding its own steps for fetching bills, validating accounts, or processing direct payments. @@ -197,7 +197,7 @@ After your fetch completes, check if your response includes a `paymentOptions` a If you see `paymentOptions` in your fetch response, you'll need to handle amount selection and pass the user's choice in your payment request. The complete implementation guide walks through option detection, user interface patterns, time-based defaults for Early/Late payments, and request formatting. -πŸ“– **Complete implementation β†’ Paying for alternative options** +πŸ“– **Complete implementation β†’ Paying for alternative options** ### 3.3 When Billers Return Multiple Bills @@ -205,7 +205,7 @@ Most billers return a single bill per fetch, but occasionally you'll encounter b When this happens, you'll need to implement bill selection logic and modify your payment request to include the specific bills the user wants to pay. The specialized guide covers bill selection patterns, validation rules, and the enhanced request format needed for multi-bill payments. -πŸ“– **Complete multi-bill implementation β†’ Multi-Bill Processing Guide** +πŸ“– **Complete multi-bill implementation β†’ Multi-Bill Processing Guide** ## 4. The Bill Validation β†’ Payment Flow @@ -290,7 +290,7 @@ After your validation succeeds, some service providersβ€”particularly mobile ope Different billers follow different patterns: some expose their full plan catalog upfront, while others return personalized plan options after account validation. Your implementation will need to handle plan selection, user choice, and include the selected plan details in your payment request. -πŸ“– **Complete plan selection implementation β†’ Paying for plans** +πŸ“– **Complete plan selection implementation β†’ Paying for plans** ## 5. Direct Bill Payments @@ -366,10 +366,10 @@ After initiating a payment across any flow, you'll receive responses that requir πŸ“– **Essential References:** - Complete API Documentation β€” Full endpoint specifications -- Paying for alternative options β€” Handle multiple payment amounts -- Plan MDM Integration β€” Plan-based biller patterns -- Multi-Bill Processing Guide β€” Multiple bills handling -- Remitter Details Guide β€” Payment format specifications +- Paying for alternative options β€” Handle multiple payment amounts +- Plan MDM Integration β€” Plan-based biller patterns +- Multi-Bill Processing Guide β€” Multiple bills handling +- Remitter Details Guide β€” Payment format specifications - Webhooks Integration β€” Real-time status updates diff --git a/content/payments/billpay/api-integration/remittance_flows_guide.mdx b/content/payments/billpay/api-integration/paying-bills/remittance_flows_guide.mdx similarity index 98% rename from content/payments/billpay/api-integration/remittance_flows_guide.mdx rename to content/payments/billpay/api-integration/paying-bills/remittance_flows_guide.mdx index 5cfce448..4c57925d 100644 --- a/content/payments/billpay/api-integration/remittance_flows_guide.mdx +++ b/content/payments/billpay/api-integration/paying-bills/remittance_flows_guide.mdx @@ -1,7 +1,7 @@ --- -sidebar_title: Passing Remitter Details +sidebar_title: Remitter Details page_title: Passing Remitter Details -order: 5 +order: 2 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/quickstart.mdx b/content/payments/billpay/api-integration/quickstart.mdx index 414fa36a..4959403f 100644 --- a/content/payments/billpay/api-integration/quickstart.mdx +++ b/content/payments/billpay/api-integration/quickstart.mdx @@ -130,7 +130,7 @@ This would include alerts on businesses that may be delisted from BBPS, or if a ### Step 3 β€” Start API integration -Once you have received your API keys and agent ID for testing, you can start integrating with our APIs. Begin with the Paying Bills Integration Guide which covers the 3 core payment flows: +Once you have received your API keys and agent ID for testing, you can start integrating with our APIs. Begin with the Paying Bills Integration Guide which covers the 3 core payment flows: - **Bill Fetch β†’ Payment** - For customers who want to see current bill amounts - **Bill Validation β†’ Payment** - For account verification before payment diff --git a/content/payments/billpay/api-integration/upms.mdx b/content/payments/billpay/api-integration/upms.mdx index 75250db3..97b2ff26 100644 --- a/content/payments/billpay/api-integration/upms.mdx +++ b/content/payments/billpay/api-integration/upms.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Integrating with UPMS page_title: BBPS COU β€” Integrating with UPMS -order: 12 +order: 7 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/v2-migration.mdx b/content/payments/billpay/api-integration/v2-migration.mdx index 3aaf592f..f2b96cac 100644 --- a/content/payments/billpay/api-integration/v2-migration.mdx +++ b/content/payments/billpay/api-integration/v2-migration.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Migration Guide to v2 page_title: BBPS COU β€” Migration Guide to v2 -order: 10 +order: 5 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/webhooks.mdx b/content/payments/billpay/api-integration/webhooks.mdx index 002eadc0..6deb5e21 100644 --- a/content/payments/billpay/api-integration/webhooks.mdx +++ b/content/payments/billpay/api-integration/webhooks.mdx @@ -121,6 +121,84 @@ If this field is absent or null, the callback corresponds to a manual bill fetch
    +### Val Add webhooks + +Val Add APIs (Value Added Services) are asynchronous. After you initiate a Val Add request using `/bbps/valadd/{requestType}/request`, COU will send you a webhook with the final outcome for that operation. + +Common `event` values include: + +- `VAL_ADD_GET_CUSTOMER_ID` +- `VAL_ADD_GENERATE_OTP` +- `VAL_ADD_VALIDATE_OTP` +- `VAL_ADD_GET_BANK_MARKUP` +- `VAL_ADD_FETCH_BEST_PRICE` + + +
    + + + Val Add sample webhook (success) + + + {`{ + "event": "VAL_ADD_GET_CUSTOMER_ID", + "status": "Success", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "data": { + "billerResponse": [ + { "name": "customerId", "value": "IN0025000213" }, + { "name": "customerType", "value": "RESIDENTINDIVIDUAL" } + ] + }, + "timeStamp": "2025-03-10T17:40:38.163+05:30", + "traceId": "CV4PE82LTNJE9O014OE0" +}`} +
    +
    + +> **Fallback**: If you don’t receive a webhook, you can poll the result using `/bbps/valadd/{requestType}/response` with the `refId`. + +
    + +### FX Mandate result webhook + +After you initiate FX mandate booking using `/bbps/bills/mandate/request`, COU sends the final result using a dedicated webhook. + + +
    + + + FX mandate result webhook (success) + + + {`{ + "event": "BILL_MANDATE", + "status": "Success", + "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "timeStamp": "2025-06-15T10:10:00Z", + "traceId": "CV6PG04MUNJG9P126QG3", + "data": { + "billerRefId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "transactionId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", + "billerResponse": { + "amount": "8260000" + }, + "additionalInfo": { + "currency": "USD", + "orderQuantity": "1000", + "bestPrice": "8499.75", + "markup": "0.5", + "deliveryMode": "Currency" + } + } +}`} +
    +
    + +> **Fallback**: If you don’t receive a webhook, you can poll the booking status using `/bbps/bills/mandate/response` with the `refId`. + +
    + ### Bill payment webhook This informs you that NPCI has received the payment request for a particular bill. It will also pass on @@ -141,7 +219,7 @@ URL : To be provided by partner`} "event": "BILL_PAY", "data": { "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", - "status": "SUCCESS", + "status": "Success", "billerRefId": "ABC1235", "transactionId": "AX01122999900001", "paymentDetails": { @@ -169,7 +247,7 @@ URL : To be provided by partner`} "event": "BILL_PAY", "data": { "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", - "status": "FAILURE", + "status": "Failure", "billerRefId": "ABC1235", "transactionId": "AX01122999900001", "failureReason": { @@ -189,6 +267,34 @@ URL : To be provided by partner`} + +
    + + + Bill payment sample request (Credit Adjustment) + + + + {`{ + "event": "BILL_PAY", + "data": { + "refId": "D4FBHNBFTPVUIF7U2L30zNfa44153241214", + "status": "Credit_Adjustment", + "billerRefId": "AB123456", + "transactionId": "AS015324121535B9bN8t", + "paymentDetails": { + "mode": "Internet Banking/Debit Card/Credit Card/Cash/UPI/Wallet/Prepaid Card/AEPS/Account Transfer/Bharat QR/USSD", + "paymentRefId": "VBPO2511779235981744230279", + "amount": 87150, + "timestamp": "2025-11-20T12:15:36.000+05:30" + }, + "billerId": "INDI00000NATT5" + } +}`} + +
    +
    +
    ### Dispute webhook @@ -755,4 +861,4 @@ URL : To be provided by partner (Skip Payment Callback URL)`} - \ No newline at end of file + diff --git a/content/payments/billpay/mcp/integration-guide.mdx b/content/payments/billpay/mcp/integration-guide.mdx new file mode 100644 index 00000000..82f9a9f7 --- /dev/null +++ b/content/payments/billpay/mcp/integration-guide.mdx @@ -0,0 +1,100 @@ +--- +sidebar_title: Integration Guide +page_title: MCP Server for Bill Payments - Integration Guide +order: 1 +visible_in_sidebar: false +--- + +## Agentic Bill Payments - MCP Server - Integration guide + +Currently live on ChatGPT and Claude, as other LLM providers don't allow for custom connectors. All bill payments require a phone number/OTP to fetch bills. + +### ChatGPT + +Ensure you have a ChatGPT Plus or a higher upgrade account. + +1. **Enable Developer Mode** +
      +
    1. Browse over to Settings under the Profile section.
    2. +
    3. Under Apps and Connectors, scroll down to Advance Settings and expand.
    4. +
    5. On expanding it, you will see an option to enable Developer Mode.
    6. +
    7. Once enabled, you will observe an orange highlight on your chat inputs.
    8. +
    +2. **Add the MCP** +
      +
    1. Once the Developer mode is enabled, go to Apps and Connectors.
    2. +
    3. Click on Create at the top right.
    4. +
    5. Add a name for the Setu MCP β€” say, Setu Bill Payments MCP.
    6. +
    7. In the URL field, add https://billpay-mcp.setu.co/mcp.
    8. +
    9. Under Authentication, select OAuth; check the consent box, and confirm.
    10. +
    +3. **Verify your phone number with an OTP** +
      +
    1. On confirming, you will be taken to a page to enter your phone number and OTP. All bill payments require a phone number to fetch bills.
    2. +
    +4. **Start Chatting!** +
      +
    1. You can also instruct GPT to only use the Setu Bill Payments MCP on the chat window, by clicking on the plus icon and adding the MCP to your chat.
    2. +
    3. It is not mandatory to do so, but could help in some scenarios.
    4. +
    + +**You are ready!** + +**_With this you are ready to now fetch your bills, pay your bills, analyse your payment history, ask your LLM agent to analyse your bills, and more._** + +### Claude + +Ensure you have at least a Claude Pro account, and installed a Claude Desktop. + +1. **Install Claude Desktop** +
      +
    1. Follow the steps on Download Claude to download the relevant desktop version for your system.
    2. +
    3. Install the application by clicking continue and complete the installation successfully.
    4. +
    +2. **Adding the MCP** +
      +
    1. Open Claude Desktop, and under Profile, go to Settings, and click on Connectors.
    2. +
    3. Click on β€œCustom Connector”.
    4. +
    5. Enter the MCP name - Setu Bill Payments MCP, and the MCP URL https://billpay-mcp.setu.co/mcp.
    6. +
    +3. **Start Chatting!** +
      +
    1. You can also instruct Claude to only use the Setu Bill Payments MCP on the chat window, by clicking on the plus icon and adding the MCP to your chat.
    2. +
    3. It is not mandatory to do so, but could help in some scenarios.
    4. +
    + +**You are ready!** + +### Perplexity + +1. Install Perplexity for Mac. +2. Go to settings on bottom left . +3. Click connectors +4. Follow Perplexity instruction to download and install additional package +5. click on Add Connector +6. Go to Advanced and paste the following: + +{` +{ + "args" : [ + "mcp-remote", + "https://billpay-mcp.setu.co/mcp" + ], + "command" : "npx", + "env" : { + }, + "useBuiltInNode" : true +} +`} + +7. On saving, you will be taken to a page to enter your phone number and OTP. All bill payments require a phone number to fetch bills. + +You are ready! + +Claude / ChatGPT and other GUI clients will always implement that OAuth redirect to remote auth service implementations so Client ID or Secret is not to be used there. + +### Using the MCP + +ℹ️ To use any β€œtool”, a service of the MCP, the LLM client (ChatGPT or Claude) will ask you permission to allow to access that tool of the MCP. Please select β€œAlways Allow” for a seamless experience. Currently, all LLM clients ask this permission for the first time each tool is used. + +You can refer our document on the [tools enabled on the MCP server](./tools-and-prompts) and the [prompts](./tools-and-prompts#sample-prompts) you can use to use them. \ No newline at end of file diff --git a/content/payments/billpay/mcp/tools-and-prompts.mdx b/content/payments/billpay/mcp/tools-and-prompts.mdx new file mode 100644 index 00000000..0aa8a08f --- /dev/null +++ b/content/payments/billpay/mcp/tools-and-prompts.mdx @@ -0,0 +1,78 @@ +--- +sidebar_title: Tools and Prompts +page_title: MCP Server for Bill Payments - Tools and Prompts +order: 2 +visible_in_sidebar: false +--- + +## Agentic Bill Payments MCP Server + +The Agentic Bill Payments MCP exposes a set of tools that let an AI agent help you discover bills, fetch amounts, pay bills, and track transactions using natural language. Check out our integration guide on how to integrate this seamlessly. + +You don't need to know which tool exists. Just ask naturally. If you're building or testing agents, the mapping below shows how prompts translate to tools. + +## Tools + +| Tool name | Tool Description | Tool specific prompt | +|-----------|------------------|---------------------| +| List Billers | Shows which billers are supported. | "Is my electricity provider supported?" | +| List Categories | Shows the types of bills you can pay. | "What kinds of bills can I pay here?" | +| Get Saved Bills | Shows the bills you've already paid for once. | "Do I have any pending bills?" | +| Fetch Bill | Fetches the latest amount due for a bill. | "How much is my Credit Card bill?" | +| Pay Bill | Initiates payment for a bill after confirmation. | "I want to recharge my FASTag account with Rs.500." | +| Check Payment Status | Checks whether a payment attempt was successful. | "Did my last payment go through?" | +| Get Transaction Receipt | Provides a receipt for a completed payment. | "Show me the receipt for my last payment." | +| List Payment History | Shows your past bill payments. | "Show all my bill payments from last 3 months." | + +## Sample Prompts + +You can use these prompts directly, and the Agent will know which tool to invoke. For the first time, you might have to allow the Agent to call the tool. These prompts automatically trigger multiple actions behind the scenes. + +### Bill Payments + +Use these to fetch bills, make payments, and track transaction status quickly and securely. + +**Examples:** + +- "Can I pay my electricity bill/broadband bill here?" +- "What kinds of bills can I pay here?" +- "Do I have any bills due?" +- "Pay my electricity bill." +- "I live in Chennai. I want to pay my electricity bill" +- "Did I pay my Credit Card bill this month? Share payment details" + +You can also upload the image of your physical bill or screenshots of your bills from your payments app and watch the Agent fetch your outstanding bills! + +### Analysis and Insights + +Use these to understand why your bills look the way they do, and generate customised insights for you. + +**Examples:** + +- "Show me all the bills I usually pay." +- "Why was my electricity bill higher this summer?" +- "Summarise my bill payments from last month." +- "Show a breakdown of my bill spends by category." +- "Which bills do I spend the most on?" + +### Proactive & Preventive Prompts + +Use these to stay ahead of bills before they become urgent. + +**Examples:** + +- "Do I have any bills due in the next 7 days?" +- "Which bills usually come up around this time of the month?" + +### Planning & Control Prompts + +Use these to plan and budget. + +**Examples:** + +- "How much should I budget for bills every month?" +- "Which of my bills are fixed and which vary?" + + +πŸ“„ Read more about how we came up with this MCP server here! + \ No newline at end of file diff --git a/content/payments/billpay/mobile-prepaid-recharge/webhooks.mdx b/content/payments/billpay/mobile-prepaid-recharge/webhooks.mdx new file mode 100644 index 00000000..ecea2dc4 --- /dev/null +++ b/content/payments/billpay/mobile-prepaid-recharge/webhooks.mdx @@ -0,0 +1,341 @@ +--- +sidebar_title: Webhooks +page_title: Mobile Prepaid Recharge Webhooks +order: 3 +visible_in_sidebar: true +--- + +## Webhooks/Notifications + +This document describes the webhooks that are sent **to your configured webhook URL** when various events occur in the recharge system. + + + This feature is opt-in and is configured only when a partner requests for it to be enabled. These webhooks enable real-time notifications for recharge transactions, wallet events, and status updates. + + +
    + +
    + +### Pre-requisites +You need to do the following to configure a Setu provided webhookβ€” + +- Share the webhook URL. A URL that can accept `JSON` data over `POST`. +- Take steps to handle the notification + +### Configuration + +To configure webhooks, share your webhook URL with Setu via email to support@setu.co. + +
    + + +## Webhook Endpoints + +The system appends specific routes to your base `webhook_url` based on the event type: + +### 1. Payment Status Webhook + +**Endpoint**: `{webhook_url}/payment/status` + +**Description**: Sent when a recharge transaction status is updated (successful, failed, or processing). + +**Request Body**: + +{`{ + "transactionRefId": "string", + "trace_id": "string", + "operatorRefId": "string", + "status": "Successful | Processing | Failure", + "amount": "string", + "mobile_number": "string", + "provider": "string", + "failureReason": "string (optional, only present for failures)", + "timestamp": "ISO 8601 datetime string" +}`} + +**Field Descriptions**: + +| Field | Type | Description | Mandatory? | +|-------|------|-------------|------------| +| `transactionRefId` | string | Transaction reference ID from the original recharge request | Yes | +| `trace_id` | string | System reference number (internal trace ID) | Yes | +| `operatorRefId` | string | Operator transaction ID (if available) | No | +| `status` | string | Transaction status - one of: `"Successful"`, `"Processing"`, `"Failure"` | Yes | +| `amount` | string | Recharge amount (in rupees) | Yes | +| `mobile_number` | string | Mobile number that was recharged | Yes | +| `provider` | string | Service provider name | Yes | +| `failureReason` | string | Reason for failure (only present when status is "Failure") | No | +| `timestamp` | string | ISO 8601 formatted timestamp of the event | Yes | + + +
    + + + Payment status webhook example (Success) + + + + {`{ + "transactionRefId": "TXN123456789", + "trace_id": "SYS-ABC-123", + "operatorRefId": "OP-987654321", + "status": "Successful", + "amount": "99.00", + "mobile_number": "9876543210", + "provider": "Airtel", + "timestamp": "2025-11-13T10:30:00Z" +}`} + +
    +
    + + +
    + + + Payment status webhook example (Failure) + + + + {`{ + "transactionRefId": "TXN123456790", + "trace_id": "SYS-ABC-124", + "status": "Failure", + "amount": "99.00", + "mobile_number": "9876543210", + "provider": "Airtel", + "failureReason": "Insufficient balance", + "timestamp": "2025-11-13T10:31:00Z" +}`} + +
    +
    + +
    + +### 2. Payment Reversal Webhook + +**Endpoint**: `{webhook_url}/payment/reversal` + +**Description**: Sent when a recharge transaction is reversed by the operator. + +**Request Body**: + +{`{ + "transactionRefId": "string", + "trace_id": "string", + "operatorRefId": "string (optional)", + "status": "REVERSED", + "amount": "string", + "mobile_number": "string", + "provider": "string", + "failureReason": "string (optional)", + "timestamp": "ISO 8601 datetime string" +}`} + +**Field Descriptions**: + +- Same fields as Payment Status Webhook, but `status` will always be `"REVERSED"` +- `failureReason`: May contain reason for reversal if provided by operator + +| Field | Type | Description | Mandatory? | +|-------|------|-------------|------------| +| `transactionRefId` | string | Transaction reference ID from the original recharge request | Yes | +| `trace_id` | string | System reference number (internal trace ID) | Yes | +| `operatorRefId` | string | Operator transaction ID (if available) | No | +| `status` | string | Transaction status - `"REVERSED"` | Yes | +| `amount` | string | Recharge amount (in rupees) | Yes | +| `mobile_number` | string | Mobile number that was recharged | Yes | +| `provider` | string | Service provider name | Yes | +| `failureReason` | string | Reason for reversal (if provided by operator) | No | +| `timestamp` | string | ISO 8601 formatted timestamp of the event | Yes | + + +
    + + + Payment reversal webhook example + + + + {`{ + "transactionRefId": "TXN123456789", + "trace_id": "SYS-ABC-123", + "operatorRefId": "OP-987654321", + "status": "REVERSED", + "amount": "99.00", + "mobile_number": "9876543210", + "provider": "Airtel", + "failureReason": "Transaction reversed by operator", + "timestamp": "2025-11-13T10:35:00Z" +}`} + +
    +
    + +
    + +### 3. Wallet Low Balance Webhook + +**Endpoint**: `{webhook_url}/wallet/low_balance` + +**Description**: Sent when the wallet balance falls below the configured threshold or when a low balance alert is received from the vendor. + +**Request Body**: + +{`{ + "event": "wallet.low_balance", + "balance": "string", + "message": "string", + "timestamp": "ISO 8601 datetime string", + "traceId": "string" +}`} + +**Field Descriptions**: + +| Field | Type | Description | Mandatory? | +|-------|------|-------------|------------| +| `event` | string | Always `"wallet.low_balance"` for this webhook type | Yes | +| `balance` | string | Current wallet balance amount (in rupees) | Yes | +| `message` | string | Alert message (typically "Low balance Alert") | Yes | +| `timestamp` | string | ISO 8601 formatted timestamp (UTC) | Yes | +| `traceId` | string | Unique trace ID for this notification | Yes | + + +
    + + + Wallet low balance webhook example + + + + {`{ + "event": "wallet.low_balance", + "balance": "2450.00", + "message": "Low balance Alert", + "timestamp": "2025-11-13T09:15:00Z", + "traceId": "low-balance-webhook-demo-instance-a1b2c3d4" +}`} + +
    +
    + +
    + +### 4. Wallet Topup Webhook + +**Endpoint**: `{webhook_url}/wallet/top_up` + +**Description**: Sent when a wallet top-up is detected or when a top-up notification is received from the vendor. + +**Request Body**: + +{`{ + "event": "wallet.credit", + "amount": "string", + "referenceNumber": "string", + "creditedFrom": "string", + "transactionDate": "ISO 8601 datetime string", + "message": "string", + "traceId": "string", + "currentBalance": "string" +}`} + +**Field Descriptions**: + +| Field | Type | Description | Mandatory? | +|-------|------|-------------|------------| +| `event` | string | Always `"wallet.credit"` for this webhook type | Yes | +| `amount` | string | Top-up amount credited to wallet (in rupees) | Yes | +| `referenceNumber` | string | User reference number for the top-up transaction (may be empty string) | No | +| `creditedFrom` | string | Source of the credit (e.g., "Bank Transfer", may be empty string) | No | +| `transactionDate` | string | ISO 8601 formatted timestamp of the transaction | Yes | +| `message` | string | Transaction message (defaults to "Credit Successful" if not provided) | No | +| `traceId` | string | Unique trace ID for this notification | Yes | +| `currentBalance` | string | Current wallet balance after the top-up (in rupees) | Yes | + + +
    + + + Wallet topup webhook example + + + + {`{ + "event": "wallet.credit", + "amount": "5000.00", + "referenceNumber": "TXN-9090", + "creditedFrom": "Bank Transfer", + "transactionDate": "2025-11-13T09:45:00Z", + "message": "Wallet topped up successfully", + "traceId": "topup-webhook-demo-instance-e5f6g7h8", + "currentBalance": "12450.00" +}`} + +
    +
    + +
    + +## Webhook Response + +Your webhook endpoint should respond with: + +- **HTTP Status Code**: `200-299` for successful receipt +- **Response Body**: Any valid JSON (will be logged but not processed) + +**Example Response**: + +{`{ + "received": true, + "message": "Webhook processed successfully" +}`} + +If your endpoint returns a non-2xx status code or times out, the system will automatically retry according to the retry policy for that webhook type (see [Retry Mechanism](#retry-mechanism) section). + + + Ensure your webhook endpoint is idempotent and can handle duplicate notifications, as retries may result in the same notification being sent multiple times. + + +
    + +### Retry Mechanism + +The system implements automatic retry mechanisms for webhook delivery with different policies based on webhook type: + +#### Payment Webhooks (Transaction Status & Reversal) + +- **Maximum Retries**: 5 attempts +- **Initial Retry Interval**: 2 seconds +- **Maximum Retry Interval**: 2 minutes +- **Backoff Strategy**: Exponential backoff with coefficient of 2.0 +- **Retry Triggers**: + - Non-2xx HTTP status codes + - Network timeouts + - Connection errors + +#### Wallet Webhooks (Low Balance & Topup) + +- **Maximum Retries**: 3 attempts +- **Initial Retry Interval**: 5 seconds +- **Maximum Retry Interval**: 1 minute +- **Backoff Strategy**: Exponential backoff with coefficient of 2.0 +- **Retry Triggers**: + - Non-2xx HTTP status codes + - Network timeouts + - Connection errors + +**Retry Timeline Example (Payment Webhooks)**: + +- Attempt 1: Immediate +- Attempt 2: After 2 seconds +- Attempt 3: After 4 seconds (2 Γ— 2) +- Attempt 4: After 8 seconds (4 Γ— 2) +- Attempt 5: After 16 seconds (8 Γ— 2) +- Attempt 6: After 32 seconds (16 Γ— 2, capped at 2 minutes max) + +After all retries are exhausted, the webhook status is marked as "FAILED" in the system. + + diff --git a/content/payments/billpay/pre-built-screens/webhooks.mdx b/content/payments/billpay/pre-built-screens/webhooks.mdx index 3418eb9c..ae7ca0c9 100644 --- a/content/payments/billpay/pre-built-screens/webhooks.mdx +++ b/content/payments/billpay/pre-built-screens/webhooks.mdx @@ -285,12 +285,11 @@ Below are the parameter tables and sample payloads for the listed events. Note t {`{ "mobileNumber": "9481773053", "status": "FETCH_FAILURE", - "billId": "", "billerId": "MAHI00000NATIC", "billerName": "Mahindra Rural Housing Finance Ltd", "billerCategory": "Loan-Repayment", "sessionId": "1272707270496486911", - "customerId": "cust@1234" // if available + "customerId": "cust@1234", // if available "event": "bill_fetch_failure", "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831", "fetchErrorCode": "ERR001", @@ -323,18 +322,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -663,13 +650,16 @@ Below are the parameter tables and sample payloads for the listed events. Note t "billerName": "Mahindra Rural Housing Finance Ltd", "billerCategory": "Loan-Repayment", "sessionId": "1272707270496486911", - "customerId": "cust@1234" // if available + "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" + "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831", + "error": { + "code": "insufficient-balance", + "message": "Insufficient balance in the bank account. Please ensure sufficient funds are available before retrying.", + "type": "FUND_TRANSFER" + } }`} @@ -774,22 +764,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t Q00ABCDEFGHZOQ - - - - - - - - - - - - @@ -817,6 +791,12 @@ Below are the parameter tables and sample payloads for the listed events. Note t CMA0I65RCU2I32C3L0H0KNYQYAG40021831 + + + + + +
    billAmountString (Number)Amount of the bill in rupees (INR) - 101.55 -
    dueDateString (Date)Due date of the bill. Format is YYYY-MM-DD. - 2023-05-02 -
    amountPaid String (Number)
    errorObjectError details for failure of bill payment[{"code": "insufficient-balance", "message": "66578Insufficient balance in the bank account. Please ensure sufficient funds are available before retrying.01290", "type": "FUND_TRANSFER"]
    @@ -833,19 +813,14 @@ Below are the parameter tables and sample payloads for the listed events. Note t {`{ - "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": "1272707270496486911", - "customerId": "cust@1234" // if available + "customerId": "cust@1234", // if available "amountPaid": 601.0, - "amount": null, "event": "bill_collection_failure", "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831" }`} @@ -857,18 +832,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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) @@ -885,18 +848,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -927,22 +878,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -954,7 +889,7 @@ Below are the parameter tables and sample payloads for the listed events. Note t customerId String - Unique identifier for the customerId used for this session + Unique identifier for the customerId used for this session (if available) cust@1234 @@ -971,14 +906,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 601.75 - - amount - - - - null - - event String @@ -1016,14 +943,11 @@ Below are the parameter tables and sample payloads for the listed events. Note t "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": "1272707270496486911", - "customerId": "cust@1234" // if available - "billAmount": "105.0", - "dueDate": "2021-05-23", // if available + "customerId": "cust@1234", // if available "orderId": "H001234566666", "amountPaid": "601.00", "event": "bill_payment_refunded", @@ -1061,17 +985,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -1113,27 +1026,11 @@ Below are the parameter tables and sample payloads for the listed events. Note t customerId String - Unique identifier for the customerId used for this session + Unique identifier for the customerId used for this session (if available) 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 diff --git a/content/payments/billpay/v1/pre-built-screens/webhooks.mdx b/content/payments/billpay/v1/pre-built-screens/webhooks.mdx index 3fe83353..a0ce5cc8 100644 --- a/content/payments/billpay/v1/pre-built-screens/webhooks.mdx +++ b/content/payments/billpay/v1/pre-built-screens/webhooks.mdx @@ -255,12 +255,11 @@ Below are the parameter tables and sample payloads for the listed events. Note t {`{ "mobileNumber": "9481773053", "status": "FETCH_FAILURE", - "billId": "", "billerId": "MAHI00000NATIC", "billerName": "Mahindra Rural Housing Finance Ltd", "billerCategory": "Loan-Repayment", "sessionId": "1272707270496486911", - "customerId": "cust@1234" // if available + "customerId": "cust@1234", // if available "event": "bill_fetch_failure", "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831", "fetchErrorCode": "ERR001", @@ -293,17 +292,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -598,10 +586,8 @@ Below are the parameter tables and sample payloads for the listed events. Note t "billerName": "Mahindra Rural Housing Finance Ltd", "billerCategory": "Loan-Repayment", "sessionId": "1272707270496486911", - "customerId": "cust@1234" // if available + "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" @@ -703,22 +689,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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) @@ -762,19 +732,14 @@ Below are the parameter tables and sample payloads for the listed events. Note t {`{ - "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": "1272707270496486911", - "customerId": "cust@1234" // if available + "customerId": "cust@1234", // if available "amountPaid": 601.0, - "amount": null, "event": "bill_collection_failure", "refId": "CMA0I65RCU2I32C3L0H0KNYQYAG40021831" }`} @@ -786,17 +751,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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) @@ -813,17 +767,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -851,22 +794,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -878,7 +805,7 @@ Below are the parameter tables and sample payloads for the listed events. Note t customerId String - Unique identifier for the customerId used for this session + Unique identifier for the customerId used for this session (if available) cust@1234 @@ -895,14 +822,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 601.75 - - amount - - - - null - - event String @@ -939,14 +858,11 @@ Below are the parameter tables and sample payloads for the listed events. Note t "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": "1272707270496486911", - "customerId": "cust@1234" // if available - "billAmount": "105.0", - "dueDate": "2021-05-23", // if available + "customerId": "cust@1234", // if available "orderId": "H001234566666", "amountPaid": "601.00", "event": "bill_payment_refunded", @@ -984,17 +900,6 @@ Below are the parameter tables and sample payloads for the listed events. Note t 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 @@ -1033,27 +938,11 @@ Below are the parameter tables and sample payloads for the listed events. Note t customerId String - Unique identifier for the customerId used for this session + Unique identifier for the customerId used for this session (if available) 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 diff --git a/content/redirects.json b/content/redirects.json index 09d180de..a0e66c1e 100644 --- a/content/redirects.json +++ b/content/redirects.json @@ -21,6 +21,8 @@ "/payments/billpay-apis": "/payments/billpay-apis/overview", "/payments/billpay/api-integration": "/payments/billpay/api-integration/quickstart", "/payments/billpay/v1/api-integration": "/payments/billpay/v1/api-integration/quickstart", + "/payments/billpay/api-integration/paying-bills": "/payments/billpay/api-integration/paying-bills/quickstart", + "/payments/billpay/v1/api-integration/paying-bills": "/payments/billpay/v1/api-integration/paying-bills/quickstart", "/payments/billpay/quickstart": "/payments/billpay/overview", "/payments/billpay/pre-built-screens": "/payments/billpay/pre-built-screens/quickstart", "/payments/billpay/mobile-prepaid-recharge": "/payments/billpay/mobile-prepaid-recharge/quickstart", @@ -124,5 +126,6 @@ "/biller-quickstart": "/payments/bbps/quickstart", "/sample-category/sample-product": "/sample-category/sample-product/sample-page", "/docs-components": "/sample-category/sample-product/sample-page", - "/setu-bot": "/" + "/setu-bot": "/", + "/payments/billpay/mcp": "/payments/billpay/mcp/integration-guide" }