diff --git a/content/menuItems.json b/content/menuItems.json index 9a466550..4c1809a6 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":11},{"name":"List of APIs","visible_in_sidebar":true,"page_title":"BBPS COU - List of APIs","path":"apis","order":2},{"name":"BBPS V1.1 Features","visible_in_sidebar":true,"page_title":"Learn how to integrate with BBPS V1.1 Features that support multi-bill via Setu's APIs","path":"bbps-v1_1-features","order":8},{"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":"Harmonization of TAT","visible_in_sidebar":true,"page_title":"Harmonization Of TAT (Disputes Api)","path":"harmonization_of_tat","order":9},{"name":"Objects","visible_in_sidebar":true,"page_title":"BBPS COU - Objects","path":"objects","order":3},{"name":"Plans","visible_in_sidebar":true,"page_title":"Learn how to integrate with BBPS billers that support plan-based payments via Setu's APIs","path":"plan-mdm-integration","order":7},{"name":"Quickstart","visible_in_sidebar":true,"page_title":"BBPS COU - API integration","path":"quickstart","order":1},{"name":"Remitter Details","visible_in_sidebar":true,"page_title":"Remitter Details For Bill Payments Integration Guide","path":"remittance_flows_guide","order":6},{"name":"Integrating with UPMS","visible_in_sidebar":true,"page_title":"BBPS COU - Integrating with UPMS","path":"upms","order":10},{"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":4}]},{"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":false,"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},{"path":"fi-data-types"},{"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":13},{"name":"List of APIs","visible_in_sidebar":true,"page_title":"BBPS COU - List of APIs","path":"apis","order":2},{"name":"Paying for alternative options","visible_in_sidebar":true,"page_title":"Paying for alternative options","path":"bill-payment-options","order":6},{"name":"Customer Convenience Fee (CCF)","visible_in_sidebar":true,"page_title":"Customer Convenience Fee (CCF) Integration Guide","path":"customer-convenience-fee","order":7},{"name":"Deprecated APIs","visible_in_sidebar":false,"page_title":"BBPS COU - API integration (deprecated)","path":"deprecated","order":15,"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":"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 diff --git a/content/payments/billpay/api-integration/api-reference.mdx b/content/payments/billpay/api-integration/api-reference.mdx index 1ddd8a2a..575b37d7 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: 11 +order: 13 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/bbps-v1_1-features.mdx b/content/payments/billpay/api-integration/bbps-v1_1-features.mdx deleted file mode 100644 index 54e59a4b..00000000 --- a/content/payments/billpay/api-integration/bbps-v1_1-features.mdx +++ /dev/null @@ -1,1236 +0,0 @@ ---- -sidebar_title: BBPS V1.1 Features -page_title: Learn how to integrate with BBPS V1.1 Features that support multi-bill via Setu's APIs -order: 8 -visible_in_sidebar: true ---- - -# BBPS V1.1 Features Guide - -## Overview - -Setu's BBPS BillPay APIs have been upgraded to align with BBPS V1.1 specifications, introducing powerful new capabilities that enhance flexibility and user experience in bill payment processing. This comprehensive guide covers all new features, implementation patterns, and best practices. - -### Key Highlights - -BBPS V1.1 introduces three major enhancements: - -1. **🔧 Flexible Amount Configuration** - Sophisticated payment amount controls with min/max ranges and increment specifications -2. **💳 Multiple Payment Options** - Support for various payment modes within a single bill (advance payments, partial payments, foreclosure options) -3. **📦 Bulk Operations** - Ability to fetch and process multiple bills simultaneously for streamlined B2B and corporate scenarios - -
- -## What's New in V1.1 - -### Enhanced Payment Flexibility -- Dynamic amount restrictions with `minAmount`, `maxAmount`, and `amountMultiple` controls -- Custom labels for improved bill identification and user experience -- Support for partial payments, advance payments, and custom payment structures - -### Multi-Bill Support -- Fetch multiple bills in a single API call -- Configurable selection types (single, multiple, or all bills) -- Optimized for corporate credit cards, utility bundles, and B2B payment scenarios - -### Improved Transaction Tracking -- Detailed bill-level information in transaction histories -- Enhanced reporting capabilities for multi-bill payments -- Better reconciliation support for complex payment scenarios - -
- -## Biller Configuration & Attributes - -Understanding biller attributes is crucial for implementing the correct payment flow. These attributes are returned in the **List Billers API** response and determine how bill fetch and payment operations should be handled. - -### Response Type - -The `responseType` attribute defines the bill return behavior: - -| Type | Description | Use Case | -|------|-------------|----------| -| `SINGLE` | Returns zero or one bill per fetch request | Traditional utility bills, individual account payments | -| `LIST` | Can return multiple bills in a single fetch | Corporate accounts, bundled services, family plans | - -
- -### Selection Type - -For `LIST` billers, the `selectionType` specifies payment flexibility: - -| Type | Description | Payment Behavior | -|------|-------------|------------------| -| `SINGLE` | Pay one bill from the list | Choose specific bill from multiple options | -| `MULTIPLE` | Pay any combination of bills | Flexible multi-bill payment | -| `ALL` | Must pay all returned bills | Mandatory bundle payment | - -
- -### Configuration Examples - -#### Single Bill Biller - -{` -{ - "id": "ELEC001", - "name": "State Electricity Board", - "responseType": "SINGLE", - "selectionType": null, -} -`} - - -#### Multi-bill Single Selection Biller - -{` -{ - "id": "ELEC001", - "name": "State Electricity Board", - "responseType": "LIST", - "selectionType": "SINGLE", -} -`} - - -#### Multi-Bill Flexible Biller - -{` -{ - "id": "CORP001", - "name": "Corporate Credit Card", - "responseType": "LIST", - "selectionType": "MULTIPLE", -} -`} - -#### Bundle Payment Biller - -{` -{ - "id": "BUNDLE001", - "name": "Telecom Bundle Services", - "responseType": "LIST", - "selectionType": "ALL", -} -`} - - -### Payment Amount Exactness - -The `exactness` field controls payment amount flexibility: - -| Type | Description | Implementation | -|------|-------------|----------------| -| `EXACT` | Must pay the exact bill amount | Standard bill payment | - -> **💡 Key Insight:** The `exactness` field now includes a new option `RANGE`. For `RANGE`, you must use the `minAmount` and `maxAmount` fields (if present) in the bill fetch response to set the allowable payment range. - -
- -## Implementation Patterns - -### Pattern 1: Single Bill Processing - -**Use Case:** Traditional utility bills, individual account payments - -#### Biller Configuration -{` -{ - "responseType": "SINGLE", - "selectionType": null -} -`} -
- - -#### Bill Fetch Response -**Response Handling** -- The `bills` element of fetch response contains the details of the fetched bill. -- If `minAmount`/`maxAmount`/`amountMultiple` are specified, they must be handled as described in the [Amount Configuration](#amount-configuration) section. -- If `paymentOptions` are specified in fetch response, they must be displayed as described in the [Payment Options](#payment-options) section. - - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "billerResponseType": "SINGLE", - "billerSelectionType": null, - "bills": [ - { - "billNumber": "ELEC_001_JUN2025", - "amount": 285000, - "dueDate": "2025-07-15", - "customerName": "Rajesh Kumar", - "label": "Monthly Electricity Bill - June 2025", - "minAmount": 285000, - "maxAmount": 285000 - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -#### Payment Request - -**Building Payment Request** -- No bill details need to be specified in the payment request. -- If `minAmount`/`maxAmount`/`amountMultiple` are specified in fetch response, proper validations must be added prior to bill payment as described in the [Amount Configuration](#amount-configuration) section. -- If `paymentOptions` are specified in fetch response, the payment request must be handled as described in the [Payment Options](#payment-options) section. -- In all other cases, the bill payment request remains unchanged. - - -
- - - Sample Request - - -{` -{ - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "paymentDetails": { - "mode": "UPI", - "paymentRefId": "UPI_REF_123456", - "amount": 285000, - "timestamp": "2025-06-04T14:30:00+05:30" - } -} -`} -
-
-
- -### Pattern 2: Multi-Bill Single Selection - -**Use Case:** Choose one bill from multiple outstanding bills - -#### Biller Configuration - -{` -{ - "responseType": "LIST", - "selectionType": "SINGLE" -} -`} -
- - -#### Bill Fetch Response -**Response Handling** -- The `bills` array in the fetch response contains details of the fetched bill(s). -- Each bill object in the bills array may have its own `minAmount`, `maxAmount`, `amountMultiple`. If specified, they must be handled as described in the [Amount Configuration](#amount-configuration) section. -- If `paymentOptions` are specified in fetch response, the payment request must be handled as described in the [Payment Options](#payment-options) section. - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "billerResponseType": "LIST", - "billerSelectionType": "SINGLE", - "bills": [ - { - "billNumber": "CC_001_MAY2025", - "amount": 125000, - "dueDate": "2025-06-15", - "customerName": "Priya Sharma", - "label": "Credit Card - May 2025" - // ...remainig fields - }, - { - "billNumber": "CC_001_JUN2025", - "amount": 89000, - "dueDate": "2025-07-15", - "customerName": "Priya Sharma", - "label": "Credit Card - June 2025" - // ...remainig fields - } - ] - // ...remainig fields - } -} -`} -
-
-
- -#### Payment Request - -**Building Payment Request** -- Include details of the selected single bill in the `bills` array of the payment request. Ensure only one bill is included in the `bills` array. -- The amount in `paymentDetails` must match the amount of the selected bill. -- If `minAmount`/`maxAmount`/`amountMultiple` are specified for the selected bill in fetch response, proper validations must be added prior to bill payment as described in the [Amount Configuration](#amount-configuration) section. - - -
- - - Sample Request - - -{` -{ - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "bills": [ - { - "billNumber": "CC_001_MAY2025", - "amount": 125000 - } - ], - "paymentDetails": { - "mode": "Net Banking", - "paymentRefId": "NB_REF_789012", - "amount": 125000, - "timestamp": "2025-06-04T15:45:00+05:30" - } -} -`} -
-
-
- -### Pattern 3: Multi-Bill Multiple Selection - -**Use Case:** Corporate payments, family account management - -#### Biller Configuration - -{` -{ - "responseType": "LIST", - "selectionType": "MULTIPLE" -} -`} -
- -#### Bill Fetch Response -**Response Handling** -- The `bills` array in the fetch response contains details of the fetched bill(s). -- Each bill object in the bills array may have its own `minAmount`, `maxAmount`, `amountMultiple`. If specified, they must be handled as described in the [Amount Configuration](#amount-configuration) section. -- If `paymentOptions` are specified in fetch response, the payment request must be handled as described in the [Payment Options](#payment-options) section. - - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "billerResponseType": "LIST", - "billerSelectionType": "MULTIPLE", - "bills": [ - { - "billNumber": "CORP_EMP_001", - "amount": 45000, - "dueDate": "2025-06-30", - "customerName": "Amit Patel", - "label": "Employee Reimbursement - Travel" - // ...remainig fields - }, - { - "billNumber": "CORP_EMP_002", - "amount": 23000, - "dueDate": "2025-06-30", - "customerName": "Sneha Gupta", - "label": "Employee Reimbursement - Medical" - // ...remainig fields - }, - { - "billNumber": "CORP_EMP_003", - "amount": 67000, - "dueDate": "2025-06-30", - "customerName": "Vikram Singh", - "label": "Employee Reimbursement - Training" - // ...remainig fields - } - ] - // ...remainig fields - } -} -`} -
-
-
- -#### Payment Request (Selective Payment) - -**Building Payment Request** -- Include details of all selected bills in the `bills` array of the payment request. -- The amount in `paymentDetails` must be the sum of amounts of all selected bills. -- If `minAmount`/`maxAmount`/`amountMultiple` are specified for the selected bill in fetch response, proper validations must be added prior to bill payment as described in the [Amount Configuration](#amount-configuration) section. - - -
- - - Sample Request - - -{` -{ - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "bills": [ - { - "billNumber": "CORP_EMP_001", - "amount": 45000 - }, - { - "billNumber": "CORP_EMP_003", - "amount": 67000 - } - ], - "paymentDetails": { - "mode": "RTGS", - "paymentRefId": "RTGS_REF_345678", - "amount": 112000, - "timestamp": "2025-06-04T16:20:00+05:30" - } -} -`} -
-
-
- -### Pattern 4: Mandatory Bundle Payment - -**Use Case:** Service bundles, family plans that must be paid together - -#### Biller Configuration - -{` -{ - "responseType": "LIST", - "selectionType": "ALL" -} -`} -
- -#### Bill Fetch Response -**Response Handling** -- The `bills` array in the fetch response contains details of the fetched bill(s). -- Each bill object in the bills array may have its own `minAmount`, `maxAmount`, `amountMultiple`. If specified, they must be handled as described in the [Amount Configuration](#amount-configuration) section. -- If `paymentOptions` are specified in fetch response, the payment request must be handled as described in the [Payment Options](#payment-options) section. - - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "billerResponseType": "LIST", - "billerSelectionType": "ALL", - "bills": [ - { - "billNumber": "BUNDLE_MOBILE_001", - "amount": 85000, - "dueDate": "2025-06-30", - "customerName": "Amit Patel", - "label": "AIRTEL POST PAID" - // ...remainig fields - }, - { - "billNumber": "BUNDLE_MOBILE_002", - "amount": 120000, - "dueDate": "2025-06-30", - "customerName": "Sneha Gupta", - "label": "AIRTEL POST PAID" - // ...remainig fields - }, - { - "billNumber": "BUNDLE_MOBILE_003", - "amount": 65000, - "dueDate": "2025-06-30", - "customerName": "Vikram Singh", - "label": "AIRTEL POST PAID" - // ...remainig fields - } - ] - // ...remainig fields - } -} -`} -
-
-
- - -#### Payment Request (All Bills Required) - -**Building Payment Request** -- Include details of all bills from the fetch response in the `bills` array of the payment request. The array must contain all bills returned in the fetch response. -- The amount in `paymentDetails` must be the sum of amounts of all bills. -- If `minAmount`/`maxAmount`/`amountMultiple` are specified for the selected bill in fetch response, proper validations must be added prior to bill payment as described in the [Amount Configuration](#amount-configuration) section. - - -
- - - Sample Request - - -{` -{ - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "bills": [ - { - "billNumber": "BUNDLE_MOBILE_001", - "amount": 85000 - }, - { - "billNumber": "BUNDLE_MOBILE_002", - "amount": 120000 - }, - { - "billNumber": "BUNDLE_MOBILE_003", - "amount": 65000 - } - ], - "paymentDetails": { - "mode": "Debit Card", - "paymentRefId": "DC_REF_901234", - "amount": 270000, - "timestamp": "2025-06-04T17:10:00+05:30" - } -} -`} -
-
-
- -
- -## Amount Configuration - -BBPS V1.1 introduces flexible amount configuration for bills. This allows billers to set specific constraints on payment amounts. - -### New Fields - -The bill fetch response now includes the following new fields for each bill: - -| Field | Purpose | Usage | -|-------|---------|-------| -| `label` | Human-readable bill description | Display to users for better bill identification | -| `minAmount` | Minimum payable amount | Enforce minimum payment threshold | -| `maxAmount` | Maximum payable amount | Enforce maximum payment threshold | -| `amountMultiple` | Required payment increments | Ensure payments in specific denominations | - -
- -### Using New Fields - -#### label -> **Purpose**: Display this text to provide additional context about the bill -> -> **Usage**: Optional descriptive text that appears alongside the bill information - - -#### amountMultiple -> **Purpose**: Ensure the payment amount is a multiple of this value -> -> **Example**: If `amountMultiple` is 100, valid payments could be: -> - ✅ 100, 200, 300, 400... -> - ❌ 150, 250, 350... - - -#### minAmount & maxAmount - -| Scenario | Rule | Description | -|----------|------|-------------| -| **Both present** | `minAmount ≤ payment ≤ maxAmount` | Allow payments only within this range | -| **Only minAmount** | `payment ≥ minAmount` | Allow payments at or above this amount | -| **Only maxAmount** | `payment ≤ maxAmount` | Allow payments at or below this amount | -| **Neither present** | No restrictions | Allow any payment amount | - -
- -### Sample Responses - -**Biller doesn't put restrictions on payment amount** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": null, - "maxAmount": null, - "amountMultiple": null - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -**Biller sets a minimum payment amount** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": 500000, - "maxAmount": null, - "amountMultiple": null - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -**Biller sets a maximum payment amount** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": null, - "maxAmount": 1500000, - "amountMultiple": null - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -**Biller requires payments in specific increments** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": null, - "maxAmount": null, - "amountMultiple": 100000 - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -**Biller sets a payment range** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": 500000, - "maxAmount": 1500000, - "amountMultiple": null - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -**Biller sets a minimum payment and requires specific increments** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": 500000, - "maxAmount": null, - "amountMultiple": 100000 - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -**Biller sets a maximum payment and requires specific increments** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": null, - "maxAmount": 1500000, - "amountMultiple": 100000 - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -**Biller sets a payment range and requires specific increments** - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "SINGLE", - "billerSelectionType": "null", - "bills": [ - { - "amount": 1000000, - "minAmount": 500000, - "maxAmount": 1500000, - "amountMultiple": 100000 - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -### Additional Notes - -In all scenarios, the `amount` field represents the actual bill amount. The constraints (`minAmount`, `maxAmount`, `amountMultiple`) define the acceptable payment amounts, which may differ from the bill amount. - -#### Validation Rules - -Validate payment amounts using these rules: - -- If `minAmount` is set: `payment >= minAmount` -- If `maxAmount` is set: `payment <= maxAmount` -- If `amountMultiple` is set: `payment % amountMultiple == 0` - -#### Additional Constraints - -- **Effective minAmount** = `max(billMinAmount, paymentChannel minAmount, paymentMode minAmount)` -- **Effective maxAmount** = `min(billMaxAmount, paymentChannel maxAmount, paymentMode maxAmount)` - -### Multiple Bills Support - -All the amount configuration rules and implementation guidelines discussed above apply equally to scenarios where the fetch response contains multiple bill objects or single bill object in bills array. - -#### Example of fetch response with multiple bills - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "billerResponseType": "LIST", - "billerSelectionType": "MULTIPLE", - "bills": [ - { - "amount": 1000000, - "minAmount": 500000, - "maxAmount": 1500000, - "amountMultiple": 100000 - // ...remaining fields - }, - { - "amount": 500000, - "minAmount": 250000, - "maxAmount": null, - "amountMultiple": 50000 - // ...remaining fields - } - ] - // ...remaining fields - } -} -`} -
-
-
- -#### Handling Multiple Bills - -When handling multiple bills: - -- Apply the validation rules to each bill individually -- Ensure that the total payment amount respects the constraints of all selected bills -- Allow users to select and pay for multiple bills based on the biller's `selectionType` - -
- -## Payment Options - -A new field called `paymentOptions` may be included in each bill within the `bills` array of the bill fetch response. This field appears when the biller provides multiple payment methods for a single bill. - -### Sample Bill Fetch Response - - -
- - - Sample Response - - -{` -{ - "success": true, - "traceId": "CSJ1BSREA37IGH20GIQ0", - "data": { - "status": "SUCCESS", - "refId": "CSJ1BPJEA37IGH20GILGDfl3qOd43071737", - "billerResponseType": "LIST", - "billerSelectionType": "SINGLE", - "bills": [ - { - "amount": 200000, - "billNumber": "LOAN001", - "customerName": "Samiksha Sharma", - "dueDate": "2099-12-30", - "paymentOptions": [ - { - "name": "Advance Payment", - "amount": 300000, - "minAmount": 300000, - "maxAmount": 1000000, - "amountMultiple": 50000 - // ...remainig fields - }, - { - "name": "Part Payment", - "amount": 50000, - "minAmount": 50000, - "maxAmount": 300000, - "amountMultiple": null - // ...remainig fields - }, - { - "name": "Foreclosure", - "amount": 500000, - "minAmount": 500000, - "maxAmount": 500000, - "amountMultiple": null - // ...remainig fields - } - ] - } - ] - // ...remainig fields - } -} -`} -
-
-
- -### Attributes - -Each payment option in the `paymentOptions` array may contain the following attributes: - -- **name**: A descriptive name for the payment option (required) -- **amount**: The suggested amount for this payment option (optional) -- **minAmount**: The minimum amount allowed for this option (optional) -- **maxAmount**: The maximum amount allowed for this option (optional) -- **amountMultiple**: The multiple in which the amount should be paid (optional) - -## Selecting a Payment Option - -The `selectedPaymentOptions` field in the payment request is used to specify which payment option the user has chosen, if any. - -This feature is currently only available for single billers (single bill scenarios). - -### Use Cases - -#### Paying Base Bill Amount (No Payment Options Selected) - -1. It can be null or empty when paying the base bill amount. -2. When no specific option is selected, the base bill amount's constraints (`minAmount`, `maxAmount`, `amountMultiple`) apply. - - -
- - - Sample Request - - -{` -{ - "refId": "ABC1234", - "paymentDetails": { - "mode": "Payment Mode", - "paymentRefId": "XYZ123", - "amount": 10000, - "timestamp": "YYYY-MM-DDTHH:MM:SS+05:30" - } -} -`} -
-
-
- -#### Paying for a Specific Option - -Only one of the payment options specified in the fetch response can be selected: - -- The `name` in `selectedPaymentOptions[0]` must match a name from the fetch response's `paymentOptions`. -- The `amount` in `selectedPaymentOptions[0]` must: - - Match `paymentDetails.amount` - - Adhere to `minAmount`, `maxAmount`, and `amountMultiple` of the corresponding option in the fetch response (if provided). - -##### Advance Payment Example - - -
- - - Sample Request - - -{` -{ - "refId": "ABC1234", - "paymentDetails": { - "mode": "Payment Mode", - "paymentRefId": "XYZ123", - "amount": 300000, - "timestamp": "YYYY-MM-DDTHH:MM:SS+05:30", - "selectedPaymentOptions": [ - { - "name": "Advance Payment", - "amount": 300000 - } - ] - } -} -`} -
-
-
- -##### Part Payment Example - - -
- - - Sample Request - - -{` -{ - "refId": "ABC1234", - "paymentDetails": { - "mode": "Payment Mode", - "paymentRefId": "XYZ123", - "amount": 50000, - "timestamp": "YYYY-MM-DDTHH:MM:SS+05:30", - "selectedPaymentOptions": [ - { - "name": "Part Payment", - "amount": 50000 - } - ] - } -} -`} -
-
-
- -##### Foreclosure Example - - -
- - - Sample Request - - -{` -{ - "refId": "ABC1234", - "paymentDetails": { - "mode": "Payment Mode", - "paymentRefId": "XYZ123", - "amount": 500000, - "timestamp": "YYYY-MM-DDTHH:MM:SS+05:30", - "selectedPaymentOptions": [ - { - "name": "Foreclosure", - "amount": 500000 - } - ] - } -} -`} -
-
-
- - -
- - -## Getting details of paid bills - -The List Transactions API response now includes a new `bills` array element, providing detailed information about the bills involved in each transaction. - -### Response - -The `bills` array in the List Transactions API response contains objects with `billNumber` and `amount` for each bill involved in the transaction. - -### Examples - -#### LIST Transactions - -1. The `bills` array in the response matches the `bills` array from the payment request. -2. It includes bills paid in the transaction (as present in payment request), regardless of the selection type. - - -
- - - Sample Response - - -{` -{ - "transactions": [ - { - // ... other transaction details ... - "bills": [ - { "billNumber": "BILL001", "amount": 100000 }, - { "billNumber": "BILL002", "amount": 150000 } - ] - } - ] -} -`} -
-
-
- -### SINGLE Billers (Bill Present in Fetch Response) - -The `bills` array contains one object with the `billNumber` and `amount` of the bill paid. - - -
- - - Sample Response - - -{` -{ - "transactions": [ - { - // ... other transaction details ... - "bills": [ - { "billNumber": "BILL001", "amount": 100000 } - ] - } - ] -} -`} -
-
-
- -### SINGLE Billers (No Bill in Fetch Response) - -An empty `bills` array is returned. - - -
- - - Sample Response - - -{` -{ - "transactions": [ - { - // ... other transaction details ... - "bills": [] - } - ] -} -`} -
-
-
\ No newline at end of file diff --git a/content/payments/billpay/api-integration/bill-payment-options.mdx b/content/payments/billpay/api-integration/bill-payment-options.mdx new file mode 100644 index 00000000..67b4e35c --- /dev/null +++ b/content/payments/billpay/api-integration/bill-payment-options.mdx @@ -0,0 +1,216 @@ +--- +sidebar_title: Paying for alternative options +page_title: Paying for alternative options +order: 6 +visible_in_sidebar: true +--- + +# Bill Payment Options Integration Guide + +## 1. You're Here Because Your Fetch Returned Payment Options + +You successfully completed a Flow 1 bill fetch and discovered your response includes a `paymentOptions` array alongside the standard bill amount. This happens when billers—typically credit cards, loan providers, or utilities—offer customers multiple payment amounts instead of just the fixed bill amount. + +Here's what your fetch response looks like when this happens: + +{` +{ + "data": { + "refId": "FETCH_REF_123", + "bills": [ + { + "amount": 200000, + "dueDate": "2024-12-30", + "additionalInfo": [ + { "name": "Early Payment Date", "value": "2024-12-20" } + ], + "paymentOptions": [ + { "name": "Early Payment Amount", "amount": 195000 }, + { "name": "Late Payment Amount", "amount": 205000 } + ] + } + ] + } +} +`} + +## 2. What This Means for Your Implementation + +You now have multiple valid payment amounts: the base `bills[].amount` plus each amount in `paymentOptions`. Your job is to let either the user or your application logic choose exactly one of these amounts, then build your payment request accordingly. + +The fundamental rule: you're either paying the base amount (simple case) or paying one of the alternative options (requires additional request fields). All amounts are in paise, and the server will validate your choice—don't override the server's rules on the client side. + +## 3. The Simple Case: Let Users Choose + +Most teams handle payment options by showing all available amounts to the user and letting them pick. Present the base bill amount alongside each payment option, clearly labeled with the option name and amount. + +### 3.1 Common Business Scenarios + +Payment options appear across many different types of services, each with their own business logic: + +**Credit Card Bills**: Users can pay minimum due, total outstanding, or a custom amount +{` +{ + "bills": [{ + "amount": 500000, // ₹5000 total outstanding + "paymentOptions": [ + { "name": "Minimum Due", "amount": 50000 }, // ₹500 + { "name": "Previous Balance", "amount": 350000 }, // ₹3500 + { "name": "Custom Amount", "minAmount": 50000, "maxAmount": 1000000, "amountMultiple": 100 } + ] + }] +} +`} + +**Loan EMI Payments**: Borrowers can pay single month, multiple months, or full outstanding +{` +{ + "bills": [{ + "amount": 1200000, // ₹12000 full outstanding + "paymentOptions": [ + { "name": "1 Month EMI", "amount": 300000 }, // ₹3000 + { "name": "3 Month EMI", "amount": 900000 }, // ₹9000 + { "name": "Foreclosure", "amount": 1150000 } // ₹11500 (with discount) + ] + }] +} +`} + +**Insurance Premiums**: Policyholders can pay full premium, partial premium, or renewal with penalties +{` +{ + "bills": [{ + "amount": 2500000, // ₹25000 annual premium + "paymentOptions": [ + { "name": "Quarterly Premium", "amount": 650000 }, // ₹6500 + { "name": "Late Payment", "amount": 2750000 }, // ₹27500 (with penalty) + { "name": "Partial Payment", "minAmount": 500000, "maxAmount": 2500000, "amountMultiple": 10000 } + ] + }] +} +`} + +### 3.2 Implementation Pattern + +Regardless of the business scenario, the implementation pattern remains consistent: + +1. **Present all choices**: Show the base `amount` alongside every `paymentOptions` entry +2. **Handle selection**: When users pick the base amount, omit `selectedPaymentOptions`. When they pick an alternative, include exactly one item in `selectedPaymentOptions` +3. **Validate constraints**: Respect any `minAmount`, `maxAmount`, or `amountMultiple` rules on selected options + +When the user selects the base amount, you build a standard payment request. When they select an alternative option, you include that choice in your payment request using the `selectedPaymentOptions` field. + +## 4. Smart Defaults: Automatic Early/Late Selection + +Some billers offer time-based pricing—early payment discounts or late payment fees—that you can handle automatically. When you see options named `Early Payment Amount` or `Late Payment Amount` in your fetch response, you can use simple date logic to pick the most appropriate default for your users. + +The logic is straightforward: if the bill is past due and a late payment option exists, default to that. If the bill is within an early payment window and an early payment option exists, default to that. Otherwise, use the base amount. All date comparisons use IST timezone. + +Here's the complete decision tree: +- **Late payment**: Use `Late Payment Amount` when today > `dueDate` and the option exists +- **Early payment**: Use `Early Payment Amount` when today ≤ `Early Payment Date` (from `additionalInfo`) and the option exists +- **Standard payment**: Use base `amount` in all other cases + +**Edge cases** (all intentional fallbacks): +- Both Early and Late options present: if past due, pick Late; else if within early window, pick Early; else Base +- Missing `dueDate` or invalid `Early Payment Date`: fallback to Base +- Option names don't match exactly: fallback to Base + +## 5. Building Your Payment Request + +Regardless of whether users choose manually or you use smart defaults, you'll build one of two request types: + +### 5.1 Paying the Base Amount + +When paying the standard bill amount, omit the `selectedPaymentOptions` field entirely: + +{` +{ + "refId": "FETCH_REF_123", + "paymentDetails": { + "amount": 200000, + "mode": "UPI", + "paymentRefId": "PAY_REF_789", + "timestamp": "2024-06-04T14:30:00+05:30", + "accountInfo": "user@ybl" + }, + "remitter": { "name": "John Doe" } +} +`} + +### 5.2 Paying an Alternative Option + +When paying any amount from `paymentOptions`, include exactly one item in `selectedPaymentOptions` with the exact `name` and `amount` from your fetch response: + +{` +{ + "refId": "FETCH_REF_123", + "paymentDetails": { + "amount": 205000, + "mode": "UPI", + "paymentRefId": "PAY_REF_456", + "timestamp": "2024-06-04T14:30:00+05:30", + "accountInfo": "user@ybl", + "selectedPaymentOptions": [ + { "name": "Late Payment Amount", "amount": 205000 } + ] + }, + "remitter": { "name": "John Doe" } +} +`} + +**Key rule**: The `paymentDetails.amount` must always match either the base `bill.amount` or the selected option's `amount` exactly. + +## 6. Validation Rules and Common Issues + +Before sending your payment request, validate these requirements to avoid API rejections: + +**Essential validations:** +- **Exclusive choice**: Either omit `selectedPaymentOptions` entirely (base amount) or include exactly one item (alternative option) +- **Exact name match**: The `name` in `selectedPaymentOptions` must match exactly one option from your fetch response +- **Amount consistency**: `paymentDetails.amount` must equal either the base `bill.amount` or the selected option's `amount` +- **Constraint compliance**: If the selected option specifies `minAmount`, `maxAmount`, or `amountMultiple`, your amount must satisfy those constraints; otherwise fall back to bill-level rules (like `exactness`) + +## 7. Customer Convenience Fee (CCF) Considerations + +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** + +## 8. Complete Example: Smart Default in Action + +Scenario: Today is 2024‑12‑31 10:00 IST. Your fetch returned a base amount of ₹2000, an Early Payment Amount of ₹1950, and a Late Payment Amount of ₹2050. The due date was 2024‑12‑30, so you automatically default to the Late Payment Amount: + +{` +{ + "refId": "FETCH_REF_123", + "paymentDetails": { + "amount": 205000, + "mode": "UPI", + "paymentRefId": "PAY_REF_999", + "timestamp": "2024-12-31T10:00:00+05:30", + "accountInfo": "user@ybl", + "selectedPaymentOptions": [ + { "name": "Late Payment Amount", "amount": 205000 } + ] + }, + "remitter": { "name": "John Doe" } +} +`} + +## 9. Implementation Checklist + +- **Detect options**: Check for `paymentOptions` array in your fetch response +- **Present choices**: Show base amount alongside all available options with clear labels +- **Handle selection**: Support either user choice or smart defaults based on your UX needs +- **Build request**: Use the correct format—omit `selectedPaymentOptions` for base, include exactly one item for options +- **Validate locally**: Check name matching and amount consistency before sending +- **Calculate CCF**: Compute on final amount if applicable + +## 10. Reference Links + +- **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/customer-convenience-fee.mdx new file mode 100644 index 00000000..98f2a67e --- /dev/null +++ b/content/payments/billpay/api-integration/customer-convenience-fee.mdx @@ -0,0 +1,226 @@ +--- +sidebar_title: Customer Convenience Fee (CCF) +page_title: Customer Convenience Fee (CCF) Integration Guide +order: 7 +visible_in_sidebar: true +--- + +# Customer Convenience Fee (CCF) Integration Guide + +## 1. Some Billers Charge Customer Convenience Fee (CCF) + +Customer Convenience Fee (CCF) is an additional charge some billers impose on top of the bill amount—essentially a fee your users pay for the convenience of digital bill payment through BBPS. + +Here's what CCF looks like in biller metadata: + +{` +{ + "id": "SOME00000NATRR", + "name": "Some Bank NCMC Pune Metro", + "interchangeFee": [ + { + "feeCode": "CCF1", + "feeDesc": "Customer_Convenience_Fee", + "feeDirection": "C2B", + "interchangeFeeDetails": { + "effctvFrom": "2023-07-28", + "effctvTo": "", + "flatFee": 100, // ₹1.00 in paise + "percentFee": 0, // No percentage component + "tranAmtRangeMax": 999999999999, + "tranAmtRangeMin": 1 + } + } + ] +} +`} + +## 2. What CCF Means for Your Users + +When a biller charges CCF, your users pay more than just the bill amount. For example, if someone's metro card recharge is ₹500 and the CCF is ₹1, they'll be debited ₹501 total. Your application needs to clearly communicate this additional cost and handle it correctly in payment requests. + +**Key principle**: CCF is always separate from the bill amount in your payment request—never add it to `paymentDetails.amount`, always include it as `paymentDetails.custConvFee`. + +## 3. Most Billers Have Zero CCF + +Before diving into complex calculations, understand that most billers on the BBPS network charge zero CCF. Many billers will have CCF entries in their metadata with `flatFee: 0` and `percentFee: 0`, which means no additional charge. + +**Zero CCF examples:** +{` +{ + "feeCode": "CCF1", + "feeDirection": "C2B", + "interchangeFeeDetails": { + "flatFee": 0, // No flat fee + "percentFee": 0, // No percentage fee + "tranAmtRangeMax": 9999999999, + "tranAmtRangeMin": 1 + } +} +`} + +**When CCF is zero**, you can omit the `custConvFee` field entirely from your payment request. + +## 4. When CCF Actually Applies (Real Examples) + +Some categories of billers do charge meaningful CCF. Here are some examples from the BBPS network: +Note: The values are for illustration purposes only. + +### 4.1 National Pension System (₹0.50 CCF) +{` +{ + "id": "SOME00000NATC3", + "name": "National Pension System", + "interchangeFeeDetails": { + "flatFee": 50, // ₹0.50 in paise + "percentFee": 0, // No percentage component + "tranAmtRangeMax": 999999999999, + "tranAmtRangeMin": 1 + } +} +`} + +### 4.2 HDFC NCMC Pune Metro (₹1.00 CCF) +{` +{ + "id": "HDFC00000NATRR", + "name": "HDFC Bank NCMC Pune Metro", + "interchangeFeeDetails": { + "flatFee": 100, // ₹1.00 in paise + "percentFee": 0, // No percentage component + "tranAmtRangeMax": 999999999999, + "tranAmtRangeMin": 1 + } +} +`} + +### 4.3 Airtel Payments Bank NCMC (Zero CCF) +{` +{ + "id": "AIRT00000NATCL", + "name": "Airtel Payments Bank RuPay NCMC", + "interchangeFeeDetails": { + "flatFee": 0, // No CCF charged + "percentFee": 0, // No percentage component + "tranAmtRangeMax": 9999999999, + "tranAmtRangeMin": 1 + } +} +`} + +## 5. How to Calculate and Implement CCF + +### 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"`. + +### 5.2 CCF Calculation Formula + +When CCF applies, use this formula to calculate the fee in paise: + +**Formula**: `ccf = (flatFee + (billAmount × percentFee/100)) × (1 + GST/100)` + +**Note**: Currently, GST is 18% on CCF in the BBPS network. + +### 5.3 Real Calculation Examples + +**Example 1: National Pension System (₹2000 contribution)** +- Bill amount: ₹2000 (200000 paise) +- CCF: flatFee = 50, percentFee = 0 +- Calculation: `(50 + (200000 × 0/100)) × (1 + 18/100) = 50 × 1.18 = 59 paise` +- Total debit: ₹2000.59 + +**Example 2: HDFC NCMC (₹500 recharge)** +- Bill amount: ₹500 (50000 paise) +- CCF: flatFee = 100, percentFee = 0 +- Calculation: `(100 + (50000 × 0/100)) × (1 + 18/100) = 100 × 1.18 = 118 paise` +- Total debit: ₹501.18 + +**Example 3: Zero CCF biller (₹1500 bill)** +- CCF: flatFee = 0, percentFee = 0 +- Calculation: CCF = 0 +- Total debit: ₹1500 (omit custConvFee field) + +## 6. Building Your Payment Request + +### 6.1 Payment Request with CCF + +When CCF applies, include it as a separate `custConvFee` field: + +{` +{ + "refId": "FETCH_REF_123", + "paymentDetails": { + "amount": 200000, // Bill amount: ₹2000 in paise + "custConvFee": 59, // CCF: ₹0.59 in paise (separate field) + "mode": "UPI", + "paymentRefId": "PAY_REF_456", + "timestamp": "2024-06-04T14:30:00+05:30", + "accountInfo": "user@ybl" + }, + "remitter": { "name": "John Doe" } +} +`} + +**Total debit from user**: `paymentDetails.amount + paymentDetails.custConvFee = 200059 paise (₹2000.59)` + +### 6.2 Payment Request without CCF + +When CCF is zero, omit the `custConvFee` field entirely: + +{` +{ + "refId": "FETCH_REF_123", + "paymentDetails": { + "amount": 150000, // Bill amount: ₹1500 in paise + // No custConvFee field when CCF is zero + "mode": "UPI", + "paymentRefId": "PAY_REF_789", + "timestamp": "2024-06-04T14:30:00+05:30", + "accountInfo": "user@ybl" + }, + "remitter": { "name": "John Doe" } +} +`} + +**Total debit from user**: `paymentDetails.amount = 150000 paise (₹1500)` + +## 7. Edge Cases and Important Rules + +### 7.1 What to Ignore + +**Ignore EBF and PBF fees**: Only handle `CCF1` with `C2B` direction. Electronic Biller Fee (EBF) and Physical Biller Fee (PBF) with `B2C` direction are not customer charges. + +### 7.2 Zero CCF Handling + +When calculated CCF is zero (or rounds to zero), you can omit the `custConvFee` field from your payment request. + +### 7.3 CCF with Payment Options + +When using payment options (alternative amounts), calculate CCF on the final selected amount (`paymentDetails.amount`), not the base bill amount. + +## 8. Complete Implementation Checklist + +- **Detect CCF**: Look for `CCF1` entries with `C2B` direction in biller metadata +- **Calculate properly**: Use the complete formula including 18% GST +- **Handle zero CCF**: Omit `custConvFee` field when CCF is zero or rounds to zero +- **Separate from bill amount**: Never add CCF to `paymentDetails.amount` +- **Calculate on final amount**: For payment options, use selected amount not base amount +- **Ignore irrelevant fees**: Skip EBF/PBF entries (they're biller fees, not customer fees) +- **Communicate clearly**: Show users the total debit amount (bill + CCF) upfront + +## 9. User Experience Considerations + +**Transparency**: Always show users the CCF amount separately before payment: +- "Bill Amount: ₹500.00" +- "Convenience Fee: ₹1.18" +- "**Total: ₹501.18**" + +## 10. Reference Links + +- **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 + + \ No newline at end of file diff --git a/content/payments/billpay/api-integration/deprecated.mdx b/content/payments/billpay/api-integration/deprecated.mdx index 48db5021..f3e589e4 100644 --- a/content/payments/billpay/api-integration/deprecated.mdx +++ b/content/payments/billpay/api-integration/deprecated.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Deprecated APIs page_title: BBPS COU — API integration (deprecated) -order: 4 +order: 15 visible_in_sidebar: false --- diff --git a/content/payments/billpay/api-integration/harmonization_of_tat.mdx b/content/payments/billpay/api-integration/harmonization_of_tat.mdx index c5b5866a..7d292f81 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: 9 +page_title: Harmonization Of TAT (Disputes API) +order: 11 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/multi-bill-processing.mdx b/content/payments/billpay/api-integration/multi-bill-processing.mdx new file mode 100644 index 00000000..ab721736 --- /dev/null +++ b/content/payments/billpay/api-integration/multi-bill-processing.mdx @@ -0,0 +1,138 @@ +--- +sidebar_title: Paying for multiple bills +page_title: Paying for multiple bills +order: 8 +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). + +📖 **Start here first → Paying Bills Integration Guide** + +## 1. When You Need This Guide + +**Most developers can skip this guide.** You only need multi-bill processing when your Flow 1 fetch response shows: + +```json +{ + "billerResponseType": "LIST" +} +``` + +**This indicates the biller can return multiple bills that require selection before payment.** + +### 1.1 Quick Detection Check + +{` +// Add to your existing Flow 1 fetch response handler +if (fetchResponse.data.billerResponseType === "LIST") { + // Multiple bills detected - implement multi-bill selection UI + handleMultiBillFlow(fetchResponse); +} else { + // Single bill - continue with standard Flow 1 implementation + handleSingleBillFlow(fetchResponse); +} +`} + +**Example LIST Response Structure:** +{` +{ + "data": { + "refId": "FETCH_REF_123", + "billerResponseType": "LIST", + "billerSelectionType": "MULTIPLE", + "bills": [ + { "billNumber": "BILL_001", "amount": 50000 }, + { "billNumber": "BILL_002", "amount": 75000 } + ] + } +} +`} + +## 2. Common Multi-Bill Scenarios + +**When billers return multiple outstanding bills:** +- **Corporate credit cards**: Multiple outstanding bills +- **B2B invoices**: Multiple outstanding invoices requiring payment +- **Government eChallans**: Bulk payment processing + +## 3. Selection Rules + +**The `billerSelectionType` field determines how many bills users can select:** + +- **`"SINGLE"`** → Choose exactly 1 bill (e.g., one credit card bill) +- **`"MULTIPLE"`** → Choose 1+ bills (e.g., select which invoices to pay) +- **`"ALL"`** → Must pay all bills together (pay all bills at once) + +## 4. Implementation Guide + +### 4.1 Step 1: Build Selection UI + +**Based on your detection, implement selection interface:** + +{` +function renderBillSelection(fetchResponse) { + const { billerSelectionType, bills } = fetchResponse.data; + + switch(billerSelectionType) { + case "SINGLE": + return renderRadioButtons(bills); // Only one bill can be paid + case "MULTIPLE": + return renderCheckboxes(bills); // Any combination of bills can be paid + case "ALL": + return renderAllSelected(bills); // All bills must be paid together + } +} +`} + +### 4.2 Step 2: Build Payment Request + +**Multi-bill payment extends your existing Flow 1 payment with:** +{` +{ + "refId": "MULTI_FETCH_REF_123", + "bills": [ + { "billNumber": "EMP_001_TRAVEL", "amount": 45000 }, + { "billNumber": "EMP_003_TRAINING", "amount": 67000 } + ], + "paymentDetails": { + "amount": 112000, + "mode": "UPI", + "paymentRefId": "MULTI_PAY_456", + "timestamp": "2024-06-04T16:20:00+05:30", + "accountInfo": "user@ybl" + }, + "remitter": { "name": "Corporate Account" } +} +`} + +**Key Differences from Single Bill Payment:** +- Add `bills` array with selected bill details +- Set `paymentDetails.amount` to sum of selected bills +- Each bill amount must match fetch response exactly + +## 5. Validation Requirements + +**Essential Checks:** +1. **Selection count**: Match `billerSelectionType` requirements (1 for SINGLE, 1+ for MULTIPLE, all for ALL) +2. **Amount consistency**: `paymentDetails.amount` must equal sum of selected bill amounts +3. **Bill matching**: All selected `billNumber` values must exist in fetch response + +## 6. Implementation Checklist + +1. **Add detection logic** to your existing Flow 1 fetch handler +2. **Build selection UI** based on `billerSelectionType` (radio/checkbox/all-selected) +3. **Validate in real-time** as users select/deselect bills +4. **Use same `refId`** from fetch response in payment request + +## 7. Reference Links + +📖 **Related Guides:** +- 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/objects.mdx b/content/payments/billpay/api-integration/objects.mdx index 24b80c43..064b176c 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: 3 +order: 14 visible_in_sidebar: true --- @@ -68,7 +68,7 @@ CustomerV2 object holds the customer mobile number and the customer bill paramet | `customerParams[].value` | `string` | Value of the customer parameter. Value is validate according to the regex found in the biller details. | | `name` | `string` (Optional) | Customer's name as registered with the biller. Only present in UPMS registration callbacks if provided by the biller's system. | -Note: `customerParams` is a new field introduced in the V2 API in place of `billParameters`. +Note: `customerParams` is a new field introduced in the V2 API in place of `billParameters` (Refer V2 migration guide). ## Biller @@ -154,6 +154,9 @@ A standard structure for representing errors in API responses or callbacks. | amount | `integer` | Amount in paise | | timestamp | `date-time` | Timestamp | | selectedPaymentOptions | [Selected Payment Option](#selected-payment-option)`[]` | Array of selected payment options | +| accountInfo | `string` (Mandatory) | NPCI-compatible instrument info for the payment instrument. | +| custConvFee | `integer` (Optional) | Customer convenience fee in paise (when applicable). | +| Id | `string` (Optional) | Plan ID for plan-based billers. | ## Payment Bill 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..51881343 --- /dev/null +++ b/content/payments/billpay/api-integration/paying_bills.mdx @@ -0,0 +1,375 @@ +--- +sidebar_title: Paying Bills +page_title: BBPS Bill Payment Integration Guide +order: 4 +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. + + + This guide works for both v1 and v2 APIs. Key differences: +
    +
  • Customer parameters: v2 uses customer.customerParams, v1 uses customer.billParameters
  • +
  • Bill fetch response: v2 returns bills[] array, v1 returns single bill object
  • +
  • Endpoints: Use /api/v1/ or /api/v2/ as needed
  • +
+ For complete migration details → V2 Migration Guide +
+ +## 1. Understanding Bill Payment Models + +### 1.1 The Three Bill Payment Models + +BBPS network supports three different payment models. Each biller determines which model they support: + +**Flow 1: Bill Fetch → Payment** +- Retrieve the current amount due for the bill, then allow the customer to pay the bill +- Common with: Electricity, Gas, Credit cards, Loan repayments +- **[Jump to Flow 1 →](#3-flow-1-bill-fetch--payment)** + +**Flow 2: Bill Validation → Payment** +- Validate customer's account exists with the biller, then allow them to pay the bill +- Common with: Broadband postpaid, Mobile postpaid, DTH/Cable TV, NCMC Recharge +- **[Jump to Flow 2 →](#4-flow-2-bill-validation--payment)** + +**Flow 3: Direct Payment** +- Customer can pay any amount they want, without requiring prior bill fetch or validation +- Common with: Donations +- **[Jump to Flow 3 →](#5-direct-bill-payments)** + +### 1.2 Determining Which Models to Implement + +**Get biller metadata from the List Billers API** to determine which flow to implement: + +Check `biller.fetchApiType` field: + + - `BILL_FETCH` → Implement the Bill Fetch → Payment flow + - `BILL_VALIDATE` → Implement the Bill Validation → Payment flow + - `BILL_DIRECT` → Implement the Direct Payment flow + + +## 2. Requirements Common to All Flows + +Use this as a quick checklist and minimal request skeleton. These are the minimum requirements common across all flows. + +**Required Headers:** +{` +X-PARTNER-ID: {your-partner-id} +Authorization: Bearer {your-oauth-token} +Content-Type: application/json +`} + + +### 2.1 Basic Payment Structure + +{` +{ + "paymentDetails": { + "mode": "UPI", // Required: Debit mode + "amount": 150000, // Required: Debit amount in paise + "custConvFee": 3540, // Optional: Customer convenience fee in paise (separate from amount) + "paymentRefId": "TXN123456789", // Required: Unique ID for the debit; acts as idempotency key + "timestamp": "2023-12-01T10:30:00+05:30", // Required: Time of debit in ISO-8601 with timezone + "accountInfo": "user@ybl" // Required: Debit instrument info + }, + "remitter": { + "name": "John Doe", // Required: Payer's name + "email": "john.doe@example.com", // Optional: Payer's email + "aadhaar": "123456789012", // Optional: Payer's Aadhaar number + "pan": "ABCDE1234F" // Optional: Payer's PAN number + } +} +`} + + +### 2.2 Why You Need Remitter Details + +Every bill payment through BBPS needs to identify who's making the payment and how they're paying. This is required for regulatory traceability, dispute resolution, and compliance with NPCI guidelines. + +The "remitter" is the person actually making the payment, which might be different from the account holder. For example, when someone pays their parent's electricity bill or when a company pays employee reimbursements. You'll need to include the remitter's name in every payment request, along with details about their payment instrument. + +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** + +### 2.3 When Billers Charge Additional Fees + +Some billers charge a Customer Convenience Fee (CCF) on top of the bill amount—an additional cost your users pay for the convenience of digital payment. You'll discover this when checking biller metadata from the List Billers API and finding CCF entries in the `interchangeFee` array. + +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** + +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. + +## 3. The Bill Fetch → Payment Flow + + + +This flow uses all the universal requirements from Section 2, plus the specific fetch-and-pay steps below. Use this when customers want to see their current amount due before paying—the majority of billers on the network use this model. + +**Implementation Steps:** +1. Fetch Bill Details → Initiate bill fetch and monitor status (poll response or accept webhook) +2. Initiate Payment → Initiate bill payment and monitor status (poll response or accept webhook) + +### 3.1 Basic Fetch & Pay Requests + +**Step 1: Fetch Bill Details** + +**Bill Fetch Request:** +{` +{ + "agent": { + "id": "{{AGENT_ID}}", + "channel": "{{AGENT_CHANNEL}}", // See Objects guide for channel-specific required parameters + // Required parameters depend on channel - see: /payments/billpay/api-integration/objects#agent + }, + "biller": { + "id": "{{BILLER_ID}}" // biller id from list billers response + }, + "customer": { + "mobile": "{{MOBILE}}", // mobile number of the logged in user + "customerParams": [ // v1 users: use "billParameters" + { + "name": "{{Param}}", // biller.customerParams[].name + "value": "{{Value}}" // value entered by the user + } + ] + } +} +`} + +**Bill Fetch Response:** +{` +{ + "data": { + "refId": "FETCH_REF_123", + "status": "Success", + "bills": [ + { + "amount": 150000, + "customerName": "John Doe", + "dueDate": "2024-01-15", + "billNumber": "BILL123" + // See Objects guide for complete bill response: /payments/billpay/api-integration/objects#fetched-bill + } + ] + } +} +`} + +**Step 2: Initiate Bill Payment for the fetched bill** + +Call `/api/v{1|2}/bbps/bills/payment/request` with: + +{` +{ + "refId": "{{BILL_FETCH_REF_ID}}", // data.refId from fetch response + "paymentDetails": { + "amount": {{CALCULATED_DEBIT_AMOUNT_IN_PAISE}}, + "mode": "{{DEBIT_PAYMENT_MODE}}", + "custConvFee": {{COMPUTED_CCF_IN_PAISE}}, + "paymentRefId": "{{DEBIT_ID}}", + "timestamp": "{{DEBIT_TIMESTAMP}}", + "accountInfo": "{{DEBIT_PAYMENT_INSTRUMENT_INFO}}" + }, + "remitter": { + "name": "{{PAYER_NAME}}" + } +} +`} + +**Amount Validation Rules based on the `exactness` field in the bill fetch response:** +- `"Exact"` → Must equal bill amount exactly +- `"Exact and above"` → Must be at least bill amount +- `"Exact and below"` → Must not exceed bill amount +- `"RANGE"` → Must be within `minAmount`/`maxAmount` +- `"Any"` → Any amount is allowed (within biller/payment mode limits) +- Validate that the paymentDetails.amount is a multiple of `amountMultiple` if present + + +### 3.2 When Bills Offer Multiple Payment Amounts + +After your fetch completes, check if your response includes a `paymentOptions` array within the bill. When billers like loan providers or credit card companies offer flexible payment amounts—such as minimum due, partial payments, or advance payments—they'll expose these as additional choices alongside the base bill amount. + +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** + +### 3.3 When Billers Return Multiple Bills + +Most billers return a single bill per fetch, but occasionally you'll encounter billers—typically in B2B or government eChallan categories—that return multiple outstanding bills in one response. You'll recognize this scenario when your fetch response contains `billerResponseType: "LIST"` instead of the standard single-bill format. + +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** + + +## 4. The Bill Validation → Payment Flow + + + +This flow also uses all the universal requirements from Section 2, plus validation-specific steps. Use this when you need to validate account existence before payment—common with services like broadband postpaid, mobile postpaid, and DTH/Cable TV. + +**Key Differences from the Bill Fetch → Payment model:** +- Validates customer account exists with biller +- May return empty `bills` array (since these billers only validate account existence) +- Uses same bill fetch endpoint but for validation purpose + +**Implementation Steps:** +1. Validate Account → Initiate bill validation and monitor status (poll response or accept webhook) +2. Initiate Payment → Initiate bill payment and monitor status (poll response or accept webhook) + +### 4.1 Basic Validation → Payment + +**Most common use case for this model:** Validate account exists, then allow user to pay any amount. + +**Bill Validation Request:** +{` +{ + "agent": { + "id": "{{AGENT_ID}}", + "channel": "{{AGENT_CHANNEL}}", // See Objects guide for channel-specific required parameters + // Required parameters depend on channel - see: /payments/billpay/api-integration/objects#agent + }, + "biller": { + "id": "{{BILLER_ID}}" // biller id from list billers response + }, + "customer": { + "mobile": "{{MOBILE}}", // mobile number of the logged in user + "customerParams": [ // v1 users: use "billParameters" + { + "name": "{{Param}}", // biller.customerParams[].name + "value": "{{Value}}" // value entered by the user + } + ] + } +} +`} + +**Typical Bill Validation Response:** +{` +{ + "data": { + "refId": "VALIDATION_REF_123", + "status": "Success", + "bills": [], // Empty - no specific bill amount + "customerName": "John Doe", + "dueDate": null + } +} +`} + +**Payment Request (after successful validation):** + +Call `/api/v{1|2}/bbps/bills/payment/request` with: + +{` +{ + "refId": "VALIDATION_REF_123", + "paymentDetails": { + "amount": {{USER_CHOSEN_AMOUNT_IN_PAISE}}, + "mode": "{{DEBIT_PAYMENT_MODE}}", + "custConvFee": {{COMPUTED_CCF_IN_PAISE}}, // Include if biller charges CCF; Total debit = amount + custConvFee + "paymentRefId": "{{DEBIT_ID}}", + "timestamp": "{{DEBIT_TIMESTAMP}}", + "accountInfo": "{{DEBIT_PAYMENT_INSTRUMENT_INFO}}" + }, + "remitter": { + "name": "{{PAYER_NAME}}" + } +} +`} + +### 4.2 When Services Require Plan Selection + +After your validation succeeds, some service providers—particularly mobile operators, DTH providers, and broadband companies—will require users to select a specific plan or package before payment. You'll encounter this when your validation response returns an empty `bills` array but includes plan information, or when you need to browse available plans for the service. + +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** + +## 5. Direct Bill Payments + + + +### 5.1 Basic Direct Payment + +This flow combines the universal requirements from Section 2 with customer information in a single request. Use for ad-hoc payments where no prior bill fetch or validation is required and the user knows the exact amount. + +**Prerequisites:** Only use when `biller.fetchApiType = "BILL_DIRECT"`. + +**Direct Payment Request:** + +Call `/api/v{1|2}/bbps/bills/payment/request` with: + +{` +{ + { + "agent": { + "id": "{{AGENT_ID}}", + "channel": "{{AGENT_CHANNEL}}", // See Objects guide for channel-specific required parameters + // Required parameters depend on channel - see: /payments/billpay/api-integration/objects#agent + }, + "biller": { + "id": "{{BILLER_ID}}" // biller id from list billers response + }, + "customer": { + "mobile": "{{MOBILE}}", // mobile number of the logged in user + "customerParams": [ // v1 users: use "billParameters" + { + "name": "{{Param}}", // biller.customerParams[].name + "value": "{{Value}}" // value entered by the user + } + ] + } + }, + "paymentDetails": { + "amount": {{AMOUNT_IN_PAISE}}, + "mode": "{{PAYMENT_MODE}}", + "custConvFee": {{COMPUTED_CCF_IN_PAISE}}, + "paymentRefId": "{{UNIQUE_IDEMPOTENT_ID}}", + "timestamp": "{{ISO_8601}}", + "accountInfo": "{{NPCI_FORMAT}}" + }, + "remitter": { + "name": "{{PAYER_NAME}}" + } +} +`} + +V1 users: use customer.billParameters in place of customer.customerParams. + +**Implementation Note:** Strip empty `customer.customerParams` (v2 users) or `customer.billParameters` (v1 users) before calling APIs. + +## 6. Monitoring Bill Payment Status + +After initiating a payment across any flow, you'll receive responses that require specific handling: + +**Status Interpretation:** +- `Processing` → Show "Payment in progress" to user, continue polling +- `Success` → Payment complete, update UI, store `transactionId` for future reference +- `Failure` → Payment failed, check `failureReason`, follow retry logic above if needed + +**Polling Guidelines:** +- Poll every 3-5 seconds for up to 180 seconds for standard billers +- You can stop polling if the payment is in `Success` or `Failure` state +- Always save `transactionId` from successful payments for disputes/reconciliation + +📖 **Poll Payment Response API → Bill Payment Response API** +📖 **Webhook alternative → Bill Payment Webhook** + +## 7. Reference Links + +📖 **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 +- Webhooks Integration — Real-time status updates + + diff --git a/content/payments/billpay/api-integration/plan-mdm-integration.mdx b/content/payments/billpay/api-integration/plan-mdm-integration.mdx index 8fcfc0de..de743d6d 100644 --- a/content/payments/billpay/api-integration/plan-mdm-integration.mdx +++ b/content/payments/billpay/api-integration/plan-mdm-integration.mdx @@ -1,158 +1,134 @@ --- -sidebar_title: Plans -page_title: Learn how to integrate with BBPS billers that support plan-based payments via Setu's APIs -order: 7 +sidebar_title: Paying for plans +page_title: Paying for plans +order: 9 visible_in_sidebar: true --- -# BBPS Plan MDM Integration Guide +# When Users Need to Select Plans -## Overview +## 1. Overview -The **Bharath Bill Payment System (BBPS) Plan Master Data Management (MDM)** API enables billers to offer subscription-based services through the BBPS ecosystem. This system is specifically designed for billers who don't have traditional outstanding bills but instead offer plan-based services that customers must select and pay for upfront. +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. -### Key Use Cases -- **Mobile Prepaid Recharges** - Choose data/talk time plans -- **DTH Services** - Select channel packages and validity periods +📖 **This extends Flow 2: Bill Validation → Payment from the master guide** -### Benefits -- **Single API Interface** - Handle both static and dynamic plans with consistent endpoints -- **Real-time Plan Updates** - Webhook notifications for plan changes and availability -- **Standardized Integration** - Same patterns work across all biller types +**What this means for your users:** +- Instead of paying a bill amount, they choose from available plans +- Plans have fixed prices and specific benefits (data, validity, channels, etc.) +- Payment happens after plan selection -
- -## API Architecture Overview +### 1.1 Common Services That Need Plans +- **Mobile Prepaid Recharge** - Data plans, talk time, combo offers +- **DTH/Cable TV** - Channel packages, validity periods +- **Broadband Services** - Speed upgrades, data top-ups +- **OTT Subscriptions** - Monthly, annual, family plans -The Plan MDM system supports two distinct biller types with different integration patterns: +### 1.2 What You'll Build +- Plan selection screens for your users +- Integration with plan APIs +- Validation and payment flows with selected plans -### A. Static Plan Billers -- **Characteristics**: `planRequirement: MANDATORY` -- **Plan Source**: Dedicated List Plans API -- **Examples**: BSNL/MTNL, Hungama Play, Sun Direct TV +
-### B. Dynamic Plan Billers -- **Characteristics**: `planRequirement: OPTIONAL` and `responseType: SELECTIVE` -- **Plan Source**: Customer-specific plans from bill validation -- **Examples**: You Broadband, Airtel Wi-Fi Recharge +## 2. Two User Experience Patterns +Your users will encounter one of two plan selection patterns, depending on the service: -
+### 2.1 Pattern 1: Choose From Full Catalog +**User Flow:** Browse plans → Select plan → Enter account details → Pay -## Integration Flows +**What users see:** Complete list of available plans upfront (like mobile recharge plans) -### Static Plan Biller Flow +**Examples:** BSNL/MTNL mobile recharge, DTH packages, OTT subscriptions -Static plan billers maintain predefined plan catalogs. The integration follows this structured approach: +### 2.2 Pattern 2: Get Personalized Options +**User Flow:** Enter account details → See custom plans → Select plan → Pay -#### Phase 1: Plan Discovery & Selection -| Step | Actor | Action | API Endpoint | -|------|--------|--------|--------------| -| 1 | Customer | Initiates service subscription | - | -| 2 | Client App | Retrieve available plans | `GET /api/v2/bbps/billers/plans` | -| 3 | Client App | Display plans to customer | - | -| 4 | Customer | Selects plan + enters account details | - | +**What users see:** Plans tailored to their account (like broadband upgrade options) -#### Phase 2: Validation & Payment -| Step | Actor | Action | API Endpoint | -|------|--------|--------|--------------| -| 5 | Client App | Validate customer details with plan ID | `POST /api/v2/bbps/bills/fetch/request` | -| 6 | Setu API | Forward validation to biller | - | -| 7 | Biller | Validate account and plan compatibility | - | -| 8 | Client App | Check validation status | `POST /api/v2/bbps/bills/fetch/response` or via webhook | -| 9 | Client App | Process payment with validated refId | `POST /api/v2/bbps/bills/payment/request` | -| 10 | Client App | Confirm payment completion | `POST /api/v2/bbps/bills/payment/response` | +**Examples:** You Broadband plans, Airtel Wi-Fi recharge options -> **💡 Key Insight:** Static plan billers require the plan ID to be included during the validation phase, ensuring plan availability before payment processing. +
+## 3. Implementation Guide -### Dynamic Plan Biller Flow +### 3.1 Pattern 1: Choose From Full Catalog -Dynamic plan billers offer personalized plans based on customer account details: +**User Experience:** Show all available plans immediately, let user choose, then collect account details. -#### Phase 1: Account Validation & Plan Discovery -| Step | Actor | Action | API Endpoint | -|------|--------|--------|--------------| -| 1 | Customer | Enters account details (no plan selection) | - | -| 2 | Client App | Validate account details | `POST /api/v2/bbps/bills/fetch/request` | -| 3 | Biller | Return account status + custom plans | - | -| 4 | Client App | Check validation + retrieve plans | `POST /api/v2/bbps/bills/fetch/response` | +**Implementation Steps:** +1. **Get Available Plans** → `GET /api/v2/bbps/billers/plans` +2. **User Selects Plan + Enters Details** → Your app collects both +3. **Validate Account + Plan** → `POST /api/v2/bbps/bills/fetch/request` (include plan ID) +4. **Process Payment** → `POST /api/v2/bbps/bills/payment/request` -#### Phase 2: Plan Selection & Payment -| Step | Actor | Action | API Endpoint | -|------|--------|--------|--------------| -| 5 | Client App | Display customer-specific plans | - | -| 6 | Customer | Selects preferred plan | - | -| 7 | Client App | Process payment with plan ID | `POST /api/v2/bbps/bills/payment/request` | -| 8 | Client App | Confirm payment completion | `POST /api/v2/bbps/bills/payment/response` | +> **💡 Key Point:** You must include the selected plan ID when validating the account to ensure the plan is still available. +### 3.2 Pattern 2: Get Personalized Options -> **💡 Key Insight:** Dynamic plan billers reveal available plans only after account validation, providing personalized offerings based on customer eligibility. +**User Experience:** Collect account details first, then show plans customized for that account. +**Implementation Steps:** +1. **User Enters Account Details** → Your app collects account info +2. **Validate Account** → `POST /api/v2/bbps/bills/fetch/request` (no plan ID) +3. **Get Custom Plans** → Response includes plans available for this account +4. **User Selects Plan** → Your app presents the options +5. **Process Payment** → `POST /api/v2/bbps/bills/payment/request` (include plan ID) -### Flow Comparison +> **💡 Key Point:** Plans are revealed only after account validation, so you can't show them upfront. -| Aspect | Static Plan Billers | Dynamic Plan Billers | -|--------|-------------------|---------------------| -| **Plan Discovery** | Before customer input via List Plans API | After account validation via validation response | -| **Plan Selection** | Customer selects from full catalog | Customer selects from personalized options | -| **Validation Input** | Customer details + Plan ID | Customer details only | -| **Validation Output** | Success/Failure status | Success/Failure + Available plans | -| **Use Cases** | Mobile recharge, DTH, OTT subscriptions | Broadband services, personalized offerings | +### 3.3 Quick Reference: Which Pattern to Use -### Integration Decision Tree +| Pattern | When Plans Are Shown | User Flow | Common Examples | +|---------|---------------------|-----------|----------------| +| **Pattern 1** | Immediately available | Browse plans → Select → Enter details → Pay | Mobile recharge, DTH packages | +| **Pattern 2** | After account validation | Enter details → See custom plans → Select → Pay | Broadband upgrades, account-specific offers | -**Start Here:** What type of biller are you integrating? +### 3.4 How to Detect Which Pattern to Implement -The `planRequirement` is a field obtained from the list billers api. +Check the biller metadata from List Billers API to determine the pattern: +**Pattern 1 Detection:** +```json +{ + "planRequirement": "MANDATORY" +} ``` -Is planRequirement = "MANDATORY"? -├── YES → Static Plan Biller -│ ├── Step 1: Fetch plans via List Plans API -│ ├── Step 2: Display plans to customer -│ ├── Step 3: Validate with plan ID included -│ └── Step 4: Process payment -│ -└── NO → Check responseType - └── Is responseType = "SELECTIVE"? - ├── YES → Dynamic Plan Biller - │ ├── Step 1: Validate customer account - │ ├── Step 2: Receive custom plans in response - │ ├── Step 3: Customer selects plan - │ └── Step 4: Process payment with plan ID - │ - └── NO → Standard bill payment flow + +**Pattern 2 Detection:** +```json +{ + "planRequirement": "OPTIONAL", + "responseType": "SELECTIVE" +} ``` +Other billers require no plan selection. -
+→ Use standard Bill Validation flow -## 1. Static Plan Billers -Static plan billers maintain a predefined catalog of plans that can be retrieved independently of customer information. +
-### Identification Parameters -{` -{ - "planRequirement": "MANDATORY" -} -`} +## 4. Pattern 1: Full Catalog Selection + +**What this means:** All available plans can be fetched upfront and shown to users immediately. -### Common Examples +### 4.1 Examples of This Pattern -| Biller | Customer Parameters | Plan Information | -|--------|-------------------|------------------| -| **BSNL/MTNL** | Mobile Number, Circle | Plan ID, Talktime, Validity, Data, Circle, Type | -| **Hungama Play/Music** | Mobile Number, Email ID | Plan ID, Package Duration | -| **Sun Direct TV** | Subscriber Number | Plan ID, Validity, Channel Type | +| Service | What User Enters | What User Selects From | +|---------|------------------|------------------------| +| **BSNL/MTNL Mobile** | Mobile Number, Circle | Data plans, talk time, combo offers | +| **Hungama Play** | Mobile Number, Email | Monthly, yearly subscription plans | +| **Sun Direct TV** | Subscriber Number | Channel packages, validity periods | -### A. Retrieving Plans +### 4.2 Step 1: Get Available Plans -#### List Plans API +#### 4.2.1 Fetch All Plans for a Service -Retrieve all available plans for specific billers using the dedicated endpoint (See API Reference). +Retrieve all available plans for specific billers using the dedicated endpoint (See API Reference). **Request:** `GET /api/v2/bbps/billers/plans?billerIds=BILLER_ID` @@ -231,7 +207,7 @@ Retrieve all available plans for specific billers using the dedicated endpoint <
-#### Pagination Support +#### 4.2.2 Pagination Support For billers with large plan catalogs, the API supports efficient pagination: @@ -261,7 +237,7 @@ For a biller with 3,700 plans using `limit=1000`: | `GET …&after=PLAN_2000` | 1000 plans | `after=PLAN_3000&limit=1000` | | `GET …&after=PLAN_3000` | 700 plans | `null` (complete) | -#### Plan Structure +#### 4.2.3 Plan Structure Each plan object contains both mandatory and optional fields: @@ -270,7 +246,7 @@ interface Plan { // Mandatory fields Id: string; // 1-32 chars, alphanumeric categoryType: string; // 1-100 chars, alphanumeric - amountInRupees: number; // 1-10 digits, decimals supported + amountInRupees: string; // 1-10 digits, decimals supported description: string; // text with special chars allowed effectiveFrom: string; // ISO date format effectiveTo: string; // ISO date format @@ -288,7 +264,7 @@ interface Plan { `} -#### Plan Update Webhooks +#### 4.2.4 Plan Update Webhooks Receive real-time notifications when biller plans are modified (See Webhook Reference): @@ -323,18 +299,36 @@ Receive real-time notifications when biller plans are modified {` +POST /api/v2/bbps/bills/fetch/request +{ + "biller": { "id": "{{BILLER_ID}}" }, + "customer": { + "mobile": "9999999999", + "customerParams": [ + { "name": "Id", "value": "3" }, + { "name": "Subscriber Number", "value": "ABC12345" } + ] + }, + "agent": { "id": "{{AGENT_ID}}", "channel": "INT" } +} +`} -### C. Customer Parameter Validation +> **Note:** If a biller uses a different parameter name for plan ID, check that biller's specification from List Billers API. -Validate customer details along with selected plan information. +**V1 users:** Use customer.billParameters instead of customer.customerParams. -**Request:** -`POST /api/v2/bbps/bills/fetch/request` +**Complete Request Example:**
@@ -345,9 +339,7 @@ Validate customer details along with selected plan information. {` { - "agent": { - // Agent details unchanged - }, + "agent": {}, "customer": { "mobile": "8484943411", "customerParams": [ @@ -398,7 +390,7 @@ Validate customer details along with selected plan information.
-#### Check Validation Status +#### 4.4.1 Check Validation Status **Request:** `POST /api/v2/bbps/bills/fetch/response` @@ -447,7 +439,7 @@ Validate customer details along with selected plan information.
-#### Validation Webhook +#### 4.4.2 Validation Webhook
@@ -474,7 +466,7 @@ Validate customer details along with selected plan information.
-### D. Payment Processing +### 4.5 Step 4: Process Payment Process payment for validated plans using the reference ID from validation. @@ -527,7 +519,7 @@ Process payment for validated plans using the reference ID from validation.
-#### Check Payment Status +#### 4.5.1 Check Payment Status **Request:** `POST /api/v2/bbps/bills/payment/response` @@ -580,7 +572,7 @@ Process payment for validated plans using the reference ID from validation.
-#### Payment Webhook +#### 4.5.2 Payment Webhook
@@ -599,7 +591,7 @@ Process payment for validated plans using the reference ID from validation. "paymentDetails": { "amount": 2200, "mode": "UPI", - "paymentRefId": "2727513156LjQBKlR", + "paymentRefId": "2727513156LjQBKlR", "timestamp": "2024-11-26T03:34:50.784Z" }, "refId": "CT2K3MHK2D2FSSSIAU30AqF86fl43310904", @@ -615,34 +607,18 @@ Process payment for validated plans using the reference ID from validation.
-## 2. Dynamic Plan Billers - -Dynamic plan billers offer customer-specific plans based on account validation, providing personalized offerings rather than generic catalogs. +## 5. Pattern 2: Personalized Options -### Identification Parameters +**What this means:** Plans are customized based on the user's account and only shown after account validation. -{` -{ - "planRequirement": "OPTIONAL", - "responseType": "SELECTIVE" -} -`} +### 5.1 Examples of This Pattern +| Service | What User Enters | What User Gets | +|---------|------------------|----------------| +| **You Broadband** | Username/Account Number | Plans available for their connection | +| **Airtel Wi-Fi** | Broadband ID/Landline | Recharge options for their specific plan | -### Common Examples - -| Biller | Customer Parameters | -|--------|-------------------| -| **You Broadband** | Username / Account No. | -| **Airtel Wi-Fi Recharge** | Broadband Id/Landline Number | - -### A. Plan Sources - -Dynamic plan billers can offer plans through: -- **Generic Plans**: Available via List Plans API (optional) -- **Custom Plans**: Returned during customer account validation - -### B. Customer Parameter Validation +### 5.2 Step 1: Validate Account (Without Plan Selection) Validate customer account without requiring plan selection upfront. @@ -658,9 +634,7 @@ Validate customer account without requiring plan selection upfront. {` { - "agent": { - // Agent details unchanged - }, + "agent": {}, "customer": { "mobile": "8484943411", "customerParams": [ @@ -702,7 +676,7 @@ Validate customer account without requiring plan selection upfront.
-#### Check Validation Status with Plans +### 5.3 Step 2: Get Personalized Plans from Validation Response **Request:** `POST /api/v2/bbps/bills/fetch/response` @@ -776,7 +750,7 @@ Validate customer account without requiring plan selection upfront.
-#### Validation Webhook with Plans +#### 5.3.1 Validation Webhook with Plans
@@ -791,7 +765,7 @@ Validate customer account without requiring plan selection upfront. "timeStamp": "2024-11-26T08:06:44.060+05:30", "data": { "additionalInfo": [], - "billerRefId": "836480286", + "billerRefId": "836480286", "exactness": "Any", "refId": "CT2J8EPK2D2FSSRG91EGNXTEK4U43310806", "status": "Success", @@ -828,7 +802,7 @@ Validate customer account without requiring plan selection upfront.
-### C. Payment with Plan Selection +### 5.4 Step 3: Process Payment with Selected Plan Process payment including the selected plan ID in payment details. @@ -882,7 +856,7 @@ Process payment including the selected plan ID in payment details.
-#### Check Payment Status +#### 5.4.1 Check Payment Status **Request:** `POST /api/v2/bbps/bills/payment/response` @@ -937,7 +911,7 @@ Process payment including the selected plan ID in payment details.
-#### Payment Webhook with Plan ID +#### 5.4.2 Payment Webhook with Plan ID It is similar to this
webhook but with added plan details: diff --git a/content/payments/billpay/api-integration/quickstart.mdx b/content/payments/billpay/api-integration/quickstart.mdx index 82a62173..149056e1 100644 --- a/content/payments/billpay/api-integration/quickstart.mdx +++ b/content/payments/billpay/api-integration/quickstart.mdx @@ -91,7 +91,7 @@ It is recommended that you set up a callback URL to receive notifications for va When this is enabled by you, any successful `fetch`, `validate`, `payment` or `dispute` event gets posted to your callback URL. -You may specify only one callback URL. **This should be a valid URI string that starts with either `https://` or `http://` scheme.**. For e.g., `https://my-billpay-callback.com`. +You may specify only one callback URL. **This should be a valid URI string that starts with either `https://` scheme.**. For e.g., `https://my-billpay-callback.com`. Setu will append the following default paths to this callback URL, to alert your on specific events— @@ -124,13 +124,19 @@ Setu will append the following default paths to this callback URL, to alert your There are also other events that are not related to the core BillPay APIs, but are updates about the businesses on BBPS. -This would include alerts on businesses that may be delisted from BBPS, or if a business updates the type of identifier they accept to fetch a customer’s bill. If you maintain a database of BBPS businesses, you may want to use such events to stay up-to-date. Find the full list of events here. +This would include alerts on businesses that may be delisted from BBPS, or if a business updates the type of identifier they accept to fetch a customer’s bill. If you maintain a database of BBPS businesses, you may want to use such events to stay up-to-date. Find the full list of events here.
### Step 3 — Start API integration -Once you have received your API keys and agent ID for testing, you can integration with our APIs and start testing out different scenarios for fetching/paying bills or for raising disputes and managing its resolution. +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 +- **Direct Payment** - For known amounts without prior fetch + +Use the complete API reference for detailed endpoint specifications.
diff --git a/content/payments/billpay/api-integration/remittance_flows_guide.mdx b/content/payments/billpay/api-integration/remittance_flows_guide.mdx index 5b2e0f74..d5b07e6f 100644 --- a/content/payments/billpay/api-integration/remittance_flows_guide.mdx +++ b/content/payments/billpay/api-integration/remittance_flows_guide.mdx @@ -1,214 +1,68 @@ --- -sidebar_title: Remitter Details -page_title: Remitter Details For Bill Payments Integration Guide -order: 6 +sidebar_title: Passing Remitter Details +page_title: Passing Remitter Details +order: 5 visible_in_sidebar: true --- -# Remitter Details Integration Guide +# Remitter & Account Info -## Overview +## 1. You're Here Because You Need NPCI-Compatible Formatting -NPCI has introduced comprehensive remittance information handling across two distinct integration flows to accommodate acceptance of remittance data from Agent Institutions for Credit Card Bill Payments. These enhancements ensure compliance with NPCI specifications while providing flexibility for different integration approaches. +Bill payments require remitter details and payment instrument information, and you will need to format them correctly for different payment methods. This guide provides the exact formatting specifications NPCI requires for each payment mode, plus validation rules to ensure your requests are accepted. +The key principle: each payment method has its own format requirements, from simple UPI addresses to complex card authorization codes, and getting these wrong will cause payment failures. -## Remitter Details Specification + +## 2. Fields Reference | Property | Type | Constraints | Purpose | Notes | |-------|------|-------------|---------|-------| -| `accountInfo` | String (variable) | Must correspond to selected payment mode | Contains customer's remittance information in NPCI-compatible format | Required field | -| `remitter` | Object | - | Captures information about the person making the payment | May differ from credit card holder | +| `paymentDetails.accountInfo` | String | Format varies by payment mode | NPCI-compatible instrument info for the debit instrument | Required in payment requests | +| `remitter` | Object | - | Captures information about the person making the payment | May differ from account holder | -#### Remitter Object Properties +### 2.1 Remitter Object Properties | Property | Type | Constraints | Purpose | Notes | |----------|------|-------------|---------|-------| -| `name` | String | min: 1, max: 50 | Remitter's full name | Auto-fallback: 'Not Available' for CC payments if not provided | -| `email` | String | min: 1, max: 50 | Remitter's email address | - | -| `pan` | String | min: 1, max: 50 | Remitter's PAN number | - | -| `aadhaar` | String | min: 1, max: 50 | Remitter's Aadhaar number | - | +| `name` | String | min: 1, max: 50 | Remitter's full name | **Required in payment requests** | +| `email` | String | min: 1, max: 50 | Remitter's email address | Optional | +| `pan` | String | min: 1, max: 50 | Remitter's PAN number | Optional | +| `aadhaar` | String | min: 1, max: 50 | Remitter's Aadhaar number | Optional | -### Key Notes -- **NPCI Compatibility**: The `accountInfo` field must be formatted according to [NPCI specifications](#npci-specifications) and to be passed with all Bill Payments and the `remitter` object to be passed with all Credit Card Bill Payments. -- **Credit Card Fallback**: When remitter name is not provided for credit card payments, the system automatically sends "Not Available" to NPCI -- **Remitter vs Cardholder**: The person making the payment (remitter) may be different from the credit card holder -## Remitter Details in Bill Payment API Flow -### Bill Fetch Request API Enhancement +## 3. Usage Across Flows -The bill fetch request API has been enhanced to include remitter details within the `remitter` object. +- Fetch/Validation requests: remitter is optional. +- Payment requests (Flow 1–3): remitter.name and paymentDetails.accountInfo are required. - -
- - - Sample Request - - - - {` -{ - "agent": { - "mac": "48-4D-7E-CB-DB-6F", - "mobile": "string", - "postalCode": "600001", - "id": "AX01AI06512391457204", - "ifsc": "ICIC0000152", - "imei": "123456789012345", - "ip": "124.170.23.24", - "os": "iOS", - "app": "SmartPay", - "channel": "INT", - "geocode": "19.0139,72.8254", - "terminalId": "6000011234" - }, -+ "remitter": { -+ "aadhaar": "123456789012", -+ "email": "test@example.com", -+ "name": "John Doe", -+ "pan": "ABDCE1121E" -+ }, - "biller": { - "id": "MAHI00000NATIC" - }, - "customer": { - "customerId": "4881317598", - "mobile": "string", - "customerParams": [ - { - "name": "John Doe", - "value": "1895159" - } - ] - } -} -`} - -
-
- -### Bill Payment Request API Enhancement - -The bill payment request API has been enhanced to include remitter details under the `remitter` object and account information within the `accountInfo` property of the `paymentDetails` object. - -#### RefId Based Payment Request -- The `bill fetch request API` must be called to get the bill details before initiating the payment. -- The `refId` from the bill fetch request API must be used to make the payment. - - -
- - - Sample Request - - -{` -{ - "refId": "HENSVVR4QOS7X1UGPY7JGUV444P10102202", -+ "remitter": { -+ "aadhaar": "123456789012", -+ "email": "test@example.com", -+ "name": "John Doe", -+ "pan": "ABDCE1121E" -+ }, - "bills": "Selection on bills in case of list billers", - "paymentDetails": { - "custConvFee": 0, - "paymentRefId": "BD019181220291", - "timestamp": "2020-12-12T13:12:00+05:30", - "COUcustConvFee": 0, -+ "accountInfo": "ICIC0000152|1234567890", - "amount": 1, - "currency": 0, - "mode": "Internet Banking", - "selectedPaymentOptions": [ - { - "amount": 1, - "name": "John Doe" - } - ] - } -} -`} - -
-
- -#### Direct Payment Request - - -
- - - Sample Request - - -{` +### 3.1 Sample Payment Request + +{` { - "biller": { - "id": "MAHI00000NATIC" - }, - "agent": { - "mac": "48-4D-7E-CB-DB-6F", - "mobile": "string", - "postalCode": "600001", - "id": "AX01AI06512391457204", - "ifsc": "ICIC0000152", - "imei": "123456789012345", - "ip": "124.170.23.24", - "os": "iOS", - "app": "SmartPay", - "channel": "INT", - "geocode": "19.0139,72.8254", - "terminalId": "6000011234" - }, -+ "remitter": { -+ "aadhaar": "123456789012", -+ "email": "test@example.com", -+ "name": "John Doe", -+ "pan": "ABDCE1121E" -+ }, - "paymentDetails": { - "custConvFee": 0, - "paymentRefId": "BD019181220291", - "timestamp": "2020-12-12T13:12:00+05:30", - "COUcustConvFee": 0, -+ "accountInfo": "ICIC0000152|1234567890", - "amount": 1, - "currency": 0, - "mode": "Internet Banking", - "selectedPaymentOptions": [ - { - "amount": 1, - "name": "John Doe" - } - ] - }, - "bills": "Selection on bills in case of list billers", - "customer": { - "customerId": "4881317598", - "mobile": "string", - "customerParams": [ - { - "name": "John Doe", - "value": "1895159" - } - ] - } + "refId": "{{REF_ID_FROM_FETCH_OR_VALIDATION}}", + "paymentDetails": { + "amount": 50000, + "mode": "UPI", + "custConvFee": 120, // Optional; Total to debit = amount + custConvFee + "paymentRefId": "{{UNIQUE_DEBIT_ID}}", + "timestamp": "{{ISO_8601}}", + "accountInfo": "user@ybl" + }, + "remitter": { + "name": "{{PAYER_NAME}}" + } } -`} - -
-
+`} -## NPCI Specifications +## 4. NPCI Specifications -### Account Information Format by Payment Mode +### 4.1 Account Information Format by Payment Mode | Payment Mode | Value Example | Length Constraints | NPCI Code | Description | |--------------|---------------|-------------------|-----------|-------------| @@ -220,7 +74,7 @@ The bill payment request API has been enhanced to include remitter details under | **AEPS, BHIM Aadhaar Pay** | 123456789012\|1234567 | Min: 3, Max: 50 | Aadhaar\|IIN | Aadhaar number and IIN used for payment | | **Cash, USSD** | `` | Min: 1, Max: 50 | Remarks | Remarks when payment mode is cash | -### Code Format Examples +### 4.2 Code Format Examples The following table provides detailed formatting specifications for different NPCI codes: @@ -234,13 +88,13 @@ The following table provides detailed formatting specifications for different NP | **VPA** | Alphanumeric Special
Min Length: 3, Max Length: 50 | `manoj@icici` | | **Aadhaar\|IIN** | Alphanumeric with characters on either side of '\|' separator
Min Length: 3, Max Length: 50 | 123456789012\|1234567 | -### Field Handling Rules - -#### Mandatory Behavior -- The `accountInfo` field must contain NPCI-compatible values corresponding to the selected payment mode -- For credit card bill payments, both the `accountInfo` and `remitter` objects must be provided. +### 4.3 Field Handling Rules -#### Optional Field Handling -- If remitter details or account information are not available, the fields should be omitted entirely -- System automatically handles fallback scenarios +#### 4.3.1 Mandatory Behavior +- In payment requests across Flow 1–3, `remitter.name` and `paymentDetails.accountInfo` are required +- The `paymentDetails.accountInfo` field must contain NPCI-compatible values corresponding to the selected payment mode +#### 4.3.2 Optional Field Handling +- `remitter.email`, `remitter.pan`, and `remitter.aadhaar` are optional and can be omitted if not available +- Including `remitter` in bill fetch/validation requests is optional +- System automatically handles fallback scenarios for missing optional data diff --git a/content/payments/billpay/api-integration/upms.mdx b/content/payments/billpay/api-integration/upms.mdx index ccb852b4..1193d621 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: 10 +order: 12 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 918bf78f..17f2eb54 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: 5 +order: 10 visible_in_sidebar: true --- diff --git a/content/payments/billpay/api-integration/webhooks.mdx b/content/payments/billpay/api-integration/webhooks.mdx index c62f7c58..c80a8471 100644 --- a/content/payments/billpay/api-integration/webhooks.mdx +++ b/content/payments/billpay/api-integration/webhooks.mdx @@ -1,7 +1,7 @@ --- sidebar_title: Webhooks page_title: BBPS COU — Webhooks -order: 4 +order: 3 visible_in_sidebar: true ---