Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/menuItems.json

Large diffs are not rendered by default.

75 changes: 29 additions & 46 deletions content/payments/billpay/api-integration/bill-payment-options.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@ visible_in_sidebar: true

Some billers (eg: Loan repayments) offer multiple payment amounts for a single bill.

📖 **For basic payment integration → [Paying Bills Integration Guide](./paying_bills.mdx)**
📖 **For basic payment integration → <a href="/payments/billpay/api-integration/paying_bills" target="_blank">Paying Bills Integration Guide</a>**

## Overview

Bill payment options allow customers to choose from different payment amounts for a single bill, such as:
- **Minimum Due**: Pay only the minimum required amount
- **Full Payment**: Pay the complete bill amount
- **Advance Payment**: Pay more than the bill amount
- **Partial Payment**: Pay a custom amount within limits
- **Foreclosure**: Pay the full outstanding amount
Expand All @@ -36,7 +35,7 @@ Check for the `paymentOptions` field in your bill fetch response:
"status": "Success",
"bills": [
{
"amount": 200000, // Base bill amount
"amount": 200000,
"billNumber": "LOAN001",
"customerName": "John Doe",
"dueDate": "2024-12-30",
Expand Down Expand Up @@ -75,45 +74,30 @@ Check for the `paymentOptions` field in your bill fetch response:
- Allow custom amount input within option constraints
- Validate amounts against `minAmount`, `maxAmount`, and `amountMultiple`

**Example UI Flow:**
```
┌─────────────────────────────────┐
│ Choose Payment Amount: │
│ │
│ ○ Minimum Due - ₹500.00 │
│ ○ Full Payment - ₹2,000.00 │
│ ● Advance Payment - ₹3,000.00 │
│ │
│ Custom Amount: [₹3,000.00 ] │
│ (₹3,000 - ₹10,000, multiples │
│ of ₹500) │
└─────────────────────────────────┘
```

### Step 3: Build Payment Request

**When user selects a payment option:**

<CodeBlockWithCopy language="json">{`
{
"refId": "FETCH_REF_123",
"paymentDetails": {
"amount": 300000, // Must match selected option amount
"mode": "UPI",
"paymentRefId": "PAY_REF_456",
"timestamp": "2024-06-04T14:30:00+05:30",
"accountInfo": "user@ybl",
"selectedPaymentOptions": [
{
"name": "Advance Payment", // Must match option name from fetch response
"amount": 300000 // Must match paymentDetails.amount
}
]
},
"remitter": {
"name": "John Doe"
{
"refId": "FETCH_REF_123",
"paymentDetails": {
"amount": 300000,
"mode": "UPI",
"paymentRefId": "PAY_REF_456",
"timestamp": "2024-06-04T14:30:00+05:30",
"accountInfo": "user@ybl",
"selectedPaymentOptions": [
{
"name": "Advance Payment",
"amount": 300000
}
]
},
"remitter": {
"name": "John Doe"
}
}
}
`}</CodeBlockWithCopy>

**When user pays base bill amount (no option selected):**
Expand All @@ -126,8 +110,7 @@ Check for the `paymentOptions` field in your bill fetch response:
"mode": "UPI",
"paymentRefId": "PAY_REF_789",
"timestamp": "2024-06-04T14:30:00+05:30",
"accountInfo": "user@ybl"
// No selectedPaymentOptions field when paying base amount
"accountInfo": "user@ybl" // No selectedPaymentOptions field when paying base amount
},
"remitter": {
"name": "John Doe"
Expand Down Expand Up @@ -175,7 +158,6 @@ ELSE:
**Complete flow showing payment options in action:**

<CodeBlockWithCopy language="json">{`
// Fetch Response
{
"data": {
"refId": "LOAN_FETCH_123",
Expand Down Expand Up @@ -205,8 +187,9 @@ ELSE:
}]
}
}
`}</CodeBlockWithCopy>

// Payment Request (Partial Prepayment)
<CodeBlockWithCopy language="json">{`
{
"refId": "LOAN_FETCH_123",
"paymentDetails": {
Expand All @@ -231,16 +214,16 @@ ELSE:

**Example Error Responses:**
<CodeBlockWithCopy language="json">{`
// Out of range error
{
"success": false,
"error": {
"code": "AMOUNT_OUT_OF_RANGE",
"message": "Amount 75000 is below minimum 100000 for option 'Partial Prepayment'"
}
}
`}</CodeBlockWithCopy>

// Invalid multiple error
<CodeBlockWithCopy language="json">{`
{
"success": false,
"error": {
Expand Down Expand Up @@ -273,9 +256,9 @@ ELSE:
## Reference Links

📖 **Related Guides:**
- [Paying Bills Integration Guide](./paying_bills.mdx) — Master guide with Flow 1 implementation
- [Multi-Bill Processing Guide](./multi-bill-processing.mdx) — Multiple bills handling (optional)
- [API Reference](./api-reference.mdx) — Complete endpoint specifications
- [Webhooks Integration](./webhooks.mdx) — Real-time payment status updates
- <a href="/payments/billpay/api-integration/paying_bills" target="_blank">Paying Bills Integration Guide</a> — Master guide with Flow 1 implementation
- <a href="/payments/billpay/api-integration/multi-bill-processing" target="_blank">Multi-Bill Processing Guide</a> — Multiple bills handling (optional)
- <a href="/payments/billpay/api-integration/api-reference" target="_blank">API Reference</a> — Complete endpoint specifications
- <a href="/payments/billpay/api-integration/webhooks" target="_blank">Webhooks Integration</a> — Real-time payment status updates

<WasPageHelpful />
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ visible_in_sidebar: true

# Multi-Bill Processing Integration Guide

**This extends [Flow 1 (Bill Fetch → Payment)](./paying_bills.mdx#flow-1-bill-fetch--payment-most-common) from the master guide.** Only needed when billers return multiple bills in a single fetch (< 1% of billers).
**This extends <a href="/payments/billpay/api-integration/paying_bills#flow-1-bill-fetch--payment-most-common" target="_blank">Flow 1 (Bill Fetch → Payment)</a> 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](./paying_bills.mdx)**
📖 **Start here first → <a href="/payments/billpay/api-integration/paying_bills" target="_blank">Paying Bills Integration Guide</a>**

## When You Need This Guide

Expand Down Expand Up @@ -123,7 +123,7 @@ function renderBillSelection(fetchResponse) {
**Multi-Bill + Payment Options:**
Individual bills in LIST responses can also have `paymentOptions`. Handle bill selection first, then payment options for selected bills.

📖 **Payment options implementation → [Bill Payment Options Guide](./bill-payment-options.mdx)**
📖 **Payment options implementation → <a href="/payments/billpay/api-integration/bill-payment-options" target="_blank">Bill Payment Options Guide</a>**

**Transaction responses include individual bill breakdown for detailed reconciliation and audit trails.**

Expand All @@ -137,9 +137,9 @@ Individual bills in LIST responses can also have `paymentOptions`. Handle bill s
## Reference Links

📖 **Related Guides:**
- [Paying Bills Integration Guide](./paying_bills.mdx) — Master guide with Flow 1 implementation
- [Bill Payment Options Guide](./bill-payment-options.mdx) — Handle payment options within bills
- [API Reference](./api-reference.mdx) — Complete endpoint specifications
- [Webhooks Integration](./webhooks.mdx) — Real-time payment status updates
- <a href="/payments/billpay/api-integration/paying_bills" target="_blank">Paying Bills Integration Guide</a> — Master guide with Flow 1 implementation
- <a href="/payments/billpay/api-integration/bill-payment-options" target="_blank">Bill Payment Options Guide</a> — Handle payment options within bills
- <a href="/payments/billpay/api-integration/api-reference" target="_blank">API Reference</a> — Complete endpoint specifications
- <a href="/payments/billpay/api-integration/webhooks" target="_blank">Webhooks Integration</a> — Real-time payment status updates

<WasPageHelpful />
2 changes: 1 addition & 1 deletion content/payments/billpay/api-integration/objects.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,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` (Refer [V2 migration guide](/payments/billpay/api-integration/v2-migration#bill-fetch-request)).
Note: `customerParams` is a new field introduced in the V2 API in place of `billParameters` (Refer <a href="/payments/billpay/api-integration/v2-migration#bill-fetch-request" target="_blank">V2 migration guide</a>).

## Biller

Expand Down
34 changes: 17 additions & 17 deletions content/payments/billpay/api-integration/paying_bills.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ visible_in_sidebar: true
<li><strong>Bill fetch response</strong>: v2 returns <code>bills[]</code> array, v1 returns single <code>bill</code> object</li>
<li><strong>Endpoints</strong>: Use <code>/api/v1/</code> or <code>/api/v2/</code> as needed</li>
</ul>
For complete migration details → <a href="./v2-migration.mdx">V2 Migration Guide</a>
For complete migration details → <a href="/payments/billpay/api-integration/v2-migration">V2 Migration Guide</a>
</Callout>

## Understanding Bill Payment Models
Expand Down Expand Up @@ -96,7 +96,7 @@ Content-Type: application/json
### Remitter Details

- All bill payment requests require you to include <code>remitter.name</code> and <code>paymentDetails.accountInfo</code> for traceability.
- You can find NPCI-compatible formats and examples in the [Remitter Details Guide](./remittance_flows_guide.mdx)
- You can find NPCI-compatible formats and examples in the <a href="/payments/billpay/api-integration/remittance_flows_guide" target="_blank">Remitter Details Guide</a>

### Customer Convenience Fee (CCF)

Expand Down Expand Up @@ -140,8 +140,8 @@ Retry: Fetch → refId: XYZ789 → Payment (paymentRefId: PAY456) → Success
Use when customers want to see their current amount due before paying. Majority of the billers on the network use this model.

**Implementation Steps:**
1. Fetch Bill Details → [Initiate bill fetch](/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchRequest) and monitor status ([poll response](/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchResponse) or [accept webhook](./webhooks.mdx#bill-fetch-webhook))
2. Initiate Payment → [Initiate bill payment](/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentRequest) and monitor status ([poll response](/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentResponse) or [accept webhook](./webhooks.mdx#bill-payment-webhook))
1. Fetch Bill Details → <a href="/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchRequest" target="_blank">Initiate bill fetch</a> and monitor status (<a href="/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchResponse" target="_blank">poll response</a> or <a href="/payments/billpay/api-integration/webhooks#bill-fetch-webhook" target="_blank">accept webhook</a>)
2. Initiate Payment → <a href="/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentRequest" target="_blank">Initiate bill payment</a> and monitor status (<a href="/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentResponse" target="_blank">poll response</a> or <a href="/payments/billpay/api-integration/webhooks#bill-payment-webhook" target="_blank">accept webhook</a>)

### Step 1: Fetch Bill Details

Expand Down Expand Up @@ -271,7 +271,7 @@ Call `/api/v{1|2}/bbps/bills/payment/request` with:
}
`}</CodeBlockWithCopy>

📖 **Complete payment options implementation → [Bill Payment Options Guide](./bill-payment-options.mdx)**
📖 **Complete payment options implementation → <a href="/payments/billpay/api-integration/bill-payment-options" target="_blank">Bill Payment Options Guide</a>**

### Paying for multiple bills (Optional)

Expand Down Expand Up @@ -303,7 +303,7 @@ Call `/api/v{1|2}/bbps/bills/payment/request` with:
}
`}</CodeBlockWithCopy>

📖 **Complete multi-bill implementation → [Multi-Bill Processing Guide](./multi-bill-processing.mdx)**
📖 **Complete multi-bill implementation → <a href="/payments/billpay/api-integration/multi-bill-processing" target="_blank">Multi-Bill Processing Guide</a>**


## Flow 2: Bill Validation → Payment
Expand All @@ -318,8 +318,8 @@ Use when you need to validate account existence before payment. Common with serv
- Uses same bill fetch endpoint but for validation purpose

**Implementation Steps:**
1. Validate Account → [Initiate bill validation](/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchRequest) and monitor status ([poll response](/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchResponse) or [accept webhook](./webhooks.mdx#bill-fetch-webhook))
2. Initiate Payment → [Initiate bill payment](/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentRequest) and monitor status ([poll response](/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentResponse) or [accept webhook](./webhooks.mdx#bill-payment-webhook))
1. Validate Account → <a href="/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchRequest" target="_blank">Initiate bill validation</a> and monitor status (<a href="/payments/billpay/api-integration/api-reference#/category~Fetch/operation~FetchResponse" target="_blank">poll response</a> or <a href="/payments/billpay/api-integration/webhooks#bill-fetch-webhook" target="_blank">accept webhook</a>)
2. Initiate Payment → <a href="/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentRequest" target="_blank">Initiate bill payment</a> and monitor status (<a href="/payments/billpay/api-integration/api-reference#/category~Payment/operation~PaymentResponse" target="_blank">poll response</a> or <a href="/payments/billpay/api-integration/webhooks#bill-payment-webhook" target="_blank">accept webhook</a>)

### Basic Validation → Payment

Expand Down Expand Up @@ -419,7 +419,7 @@ Call `/api/v{1|2}/bbps/bills/payment/request` with:
}
`}</CodeBlockWithCopy>

📖 **Complete plan selection implementation guide → [Paying for plans](./plan-mdm-integration.mdx)**
📖 **Complete plan selection implementation guide → <a href="/payments/billpay/api-integration/plan-mdm-integration" target="_blank">Paying for plans</a>**

## Flow 3: Direct Payment

Expand Down Expand Up @@ -486,17 +486,17 @@ After initiating a payment across any flow, you'll receive responses that requir
- For billers with `supportsPendingStatus: true`, poll up to 48 hours
- Always store `transactionId` from successful payments for disputes/reconciliation

📖 **Complete response format → [Objects Reference](./objects.mdx#payment-response)**
📖 **Webhook alternative → [Bill Payment Webhook](./webhooks.mdx#bill-payment-webhook)**
📖 **Complete response format → <a href="/payments/billpay/api-integration/objects#payment-response" target="_blank">Objects Reference</a>**
📖 **Webhook alternative → <a href="/payments/billpay/api-integration/webhooks#bill-payment-webhook" target="_blank">Bill Payment Webhook</a>**

## Reference Links

📖 **Essential References:**
- [Complete API Documentation](./api-reference.mdx) — Full endpoint specifications
- [Bill Payment Options Guide](./bill-payment-options.mdx) — Handle multiple payment amounts (essential)
- [Plan MDM Integration](./plan-mdm-integration.mdx) — Plan-based biller patterns
- [Multi-Bill Processing Guide](./multi-bill-processing.mdx) — Multiple bills handling (optional)
- [Remitter Details Guide](./remittance_flows_guide.mdx) — Payment format specifications
- [Webhooks Integration](./webhooks.mdx) — Real-time status updates
- <a href="/payments/billpay/api-integration/api-reference" target="_blank">Complete API Documentation</a> — Full endpoint specifications
- <a href="/payments/billpay/api-integration/bill-payment-options" target="_blank">Bill Payment Options Guide</a> — Handle multiple payment amounts (essential)
- <a href="/payments/billpay/api-integration/plan-mdm-integration" target="_blank">Plan MDM Integration</a> — Plan-based biller patterns
- <a href="/payments/billpay/api-integration/multi-bill-processing" target="_blank">Multi-Bill Processing Guide</a> — Multiple bills handling (optional)
- <a href="/payments/billpay/api-integration/remittance_flows_guide" target="_blank">Remitter Details Guide</a> — Payment format specifications
- <a href="/payments/billpay/api-integration/webhooks" target="_blank">Webhooks Integration</a> — Real-time status updates

<WasPageHelpful />
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ visible_in_sidebar: true

Some services require your users to choose a plan before payment - like mobile recharge plans, DTH packages, or broadband subscriptions. This guide shows you how to handle these plan selection flows in your app.

📖 **This extends [Flow 2: Bill Validation → Payment](./paying_bills.mdx#flow-2-bill-validation--payment) from the master guide**
📖 **This extends <a href="/payments/billpay/api-integration/paying_bills#flow-2-bill-validation--payment" target="_blank">Flow 2: Bill Validation → Payment</a> from the master guide**

**What this means for your users:**
- Instead of paying a bill amount, they choose from available plans
Expand Down Expand Up @@ -88,7 +88,7 @@ Your users will encounter one of two plan selection patterns, depending on the s

### How to Detect Which Pattern to Implement

Check the biller metadata from [List Billers API](./api-reference.mdx) to determine the pattern:
Check the biller metadata from <a href="/payments/billpay/api-integration/api-reference" target="_blank">List Billers API</a> to determine the pattern:

**Pattern 1 Detection:**
```json
Expand All @@ -112,7 +112,7 @@ Check the biller metadata from [List Billers API](./api-reference.mdx) to determ
"responseType": "SINGLE"
}
```
→ Use standard [Bill Validation flow](./paying_bills.mdx#flow-2-bill-validation--payment)
→ Use standard <a href="/payments/billpay/api-integration/paying_bills#flow-2-bill-validation--payment" target="_blank">Bill Validation flow</a>


<br/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
sidebar_title: Passing Remitter Details in Bill Payments
page_title: Passing Remitter Details in Bill Payments
sidebar_title: Remitter Details
page_title: Remitter Details
order: 6
visible_in_sidebar: true
---
Expand All @@ -12,7 +12,7 @@ visible_in_sidebar: true

This guide is a concise format reference for remitter details and NPCI-compatible account information used in bill payments. Use it alongside the master integration guide.

📖 **For complete payment integration context and examples → [Paying Bills Integration Guide](./paying_bills.mdx)**
📖 **For complete payment integration context and examples → <a href="/payments/billpay/api-integration/paying_bills" target="_blank">Paying Bills Integration Guide</a>**

NPCI supports rich remittance information for all bill payments.

Expand Down Expand Up @@ -41,7 +41,7 @@ NPCI supports rich remittance information for all bill payments.

- Fetch/Validation requests: <Code>remitter</Code> is optional.
- Payment requests (Flow 1–3): <Code>remitter.name</Code> and <Code>paymentDetails.accountInfo</Code> are required.
- For CCF handling and funds movement, see [Paying Bills → Cross‑Flow Rules & Patterns](./paying_bills.mdx#common-patterns).
- For CCF handling and funds movement, see <a href="/payments/billpay/api-integration/paying_bills#common-patterns" target="_blank">Paying Bills → Cross‑Flow Rules & Patterns</a>.

### Sample Payment Request (minimal)

Expand Down