bbps block to use in the Create Order API and the key fields to include in the Bill Payment Request API. All examples use sandbox test values.
Bill Payment request examples below show only the fields that vary by scenario. Always include all required fields as described in the Bill Payment Request API.
Key terms
The following terms are used throughout this page.Amount to be paid by biller type
Before settingamount_to_be_paid, check the biller’s payment_amount_exactness field from the Fetch Biller MDM Details API. The examples below assume a bill of ₹1,000.
Funding models
The two funding models determine how money flows from the customer to the biller and how your integration differs.Settlement flows
PrefundingPrefunding scenarios
For prefunding Agent Institutions, Cashfree debitsamount_to_be_paid from your prefunded wallet at Bill Payment, regardless of the PG order amount. Because the PG amount settles to Cashfree’s current account, discounts and fees are handled on your side. Do not send shortfall_amount or payment_breakdown in the Bill Payment request.
This section covers the following prefunding scenarios:
- Standard payment
- Discount or coin burn
- Vendor split
- Discount and vendor split
- Skip the PG transaction
Standard payment with prefunding
Use this scenario when the customer pays the full bill with no discount and no split. Amounts: Bill ₹1,000 ·amount_to_be_paid 1,000 · PG order 1,000 · Wallet debit 1,000.
Create Order request
Discount or coin burn with prefunding
Use this scenario when you give the customer a ₹100 discount on a ₹1,000 bill. Your prefunded wallet absorbs the discount. You do not need shortfall fields because the PG collects less from the customer. Amounts: Bill ₹1,000 ·amount_to_be_paid 1,000 · PG order 900 · Wallet debit 1,000. The ₹100 discount is covered by your prefunded wallet.
Create Order request
Vendor split with prefunding
Use this scenario when you charge a ₹50 convenience fee on top of the bill and want it settled to a separate vendor account. Amounts: Bill ₹1,000 ·amount_to_be_paid 1,000 · Split 50 · PG order 1,050 · Wallet debit 1,000.
Create Order request
Discount and vendor split with prefunding
Use this scenario when you apply a ₹100 discount and charge a ₹50 convenience fee on the same bill. Amounts: Bill ₹1,000 · Discount 100 · Split 50 · PG order 1,000 − 100 + 50 = 950 · Wallet debit 1,000. Create Order requestSkip the PG transaction with prefunding
Use this scenario when you want to pay the entire bill from your prefunded wallet without collecting anything from the customer through the PG. Skip the Create Order step entirely. Setskip_pg_transaction: true and pass your PG account’s client ID in pg_app_id.
Amounts: Bill ₹1,000 · amount_to_be_paid 1,000 · No PG transaction. Wallet debit 1,000.
Bill Payment request: key fields
Postfunding scenarios
For postfunding Agent Institutions, the PG amount settles to BBPS escrow and Cashfree funds any shortfall against your shortfall wallet. Always use thebills array in the bbps block. Always send payment_breakdown.shortfall_amount in the Bill Payment request, matching shortfall_amount in the Create Order request.
order_amount must equal Σ(amount_to_be_paid − shortfall_amount + vendor_splits amounts) across all bills.Standard payment with postfunding
Use this scenario when the customer pays the full bill with no shortfall and no split. Amounts: Bill ₹1,000 (Exact) · amount_to_be_paid 1,000 · Shortfall 0 · PG order 1,000.
Create Order request
Shortfall with postfunding
Use this scenario when you give the customer a ₹100 discount or coin burn and Cashfree funds it from your shortfall wallet. Amounts: Bill ₹1,000 ·amount_to_be_paid 1,000 · Shortfall 100 · PG order 900. Your shortfall balance moves 100 more negative.
Create Order request
Skip the PG transaction with postfunding
Use this scenario when you want to pay the entire bill from the shortfall wallet without collecting anything from the customer through the PG. Skip the Create Order step entirely. Setskip_pg_transaction: true and pass your PG account’s client ID in pg_app_id.
Amounts: Bill ₹1,000 · Shortfall 1,000 · No PG transaction.
Bill Payment request: key fields
Vendor split with postfunding
Use this scenario when you charge a ₹50 convenience fee on top of the bill, want it settled to a vendor account, and have no shortfall. Amounts: Bill ₹1,000 ·amount_to_be_paid 1,000 · Shortfall 0 · Split 50 · PG order 1,050 · Bill Payment 1,000.
Create Order request
Shortfall and vendor split with postfunding
Use this scenario when the customer makes a partial payment of a bill, and you apply both a discount and a convenience fee. Amounts: Bill ₹1,000 (Exact and below) · amount_to_be_paid 500 · Shortfall 100 · Split 50 · PG order 500 − 100 + 50 = 450 · Bill Payment 500 with shortfall 100.
Create Order request
Pay Together for multiple bills
Pay Together lets the customer pay bills across multiple billers in a single PG transaction. Each bill has its own bill fetch and its own Bill Payment request, but all bills are paid under a single PG order. The flow is as follows:- Run a bill fetch for each bill separately and store each
ref_id. - Create one PG order with one object per bill in the
billsarray. Each object has its ownbill_fetch_ref_id,biller_id,agent_id, andamount_to_be_paid. - After the single PG payment succeeds, send one Bill Payment request per bill. Each request uses its own
bill_fetch_ref_idand the samepg_reference_idfrom the PG payment.
Each bill in the
bills array must have a unique biller_id. Passing more than one bill for the same biller in a single Create Order request results in a validation error.Pay Together with postfunding
Amounts: Bill 1 (Loan, ₹1,000,Exact): amount_to_be_paid 1,000 · Shortfall 100 · Split 20 → net contribution 920. Bill 2 (Electricity, ₹500, Exact and above, paying ₹540 with overdue charges): amount_to_be_paid 540 · Shortfall 0 · No split → net contribution 540. PG order = 920 + 540 = 1,460.
Create Order request