Register the bill, quote it, pay it from USDC or USDT, and track two webhook streams. A developer guide to stablecoin bill pay, boleto gotchas included.
To pay a bill from stablecoins through an API, register the bill (an invoice with the vendor's bank details, a boleto barcode, or a Pix code), request a quote for it, then execute a payout from USDC or USDT. The provider converts the stablecoins and pays the bill over the vendor's normal rail. Track the bill and the payment as two separate objects, and retry by re-quoting, never by registering twice.
This guide is for engineering and product teams adding bill pay or accounts payable to a stablecoin product. It covers the general pattern first, then the exact flow, with BlindPay's Payables API as the worked example.
A regular stablecoin payout answers "send this much to this account." A bill is different. Its amount, beneficiary, and due date are set by someone else, and for some bill types they change over time. Treating a bill as a plain payout means your code has to parse the bill, compute what's owed, and hope it didn't move.
A bill-pay API flips that. You register the bill, the provider resolves what it can from the payment rail, and the amount comes from the bill, not from you. That matters for three groups:
There's also a reconciliation reason. The U.S. Faster Payments Council's July 2026 report points out that stablecoins don't carry trade information on their own, so an overlay is needed to link a payment to its invoice. A payable is that overlay: one object that ties the bill, the line items, and the payment together.
| Bill type | What you send | Currency | Paid over | Where the amount comes from |
|---|---|---|---|---|
| US vendor invoice | Vendor's bank details, line items, taxes, discount | USD | ACH or wire | Your line items, plus taxes, minus discount |
| Boleto | The 47-digit linha digitável or 44-digit barcode | BRL | Boleto clearing | Resolved from the rail at registration, and again at quote time |
| Utility or tax bill (arrecadação) | The 48-digit code or 44-digit barcode starting with 8 | BRL | Bill clearing | Encoded in the barcode, no interest |
| Pix code with a fixed amount | The Pix copy-and-paste payload | BRL | Pix | Embedded in the code |
| Pix code without an amount | The Pix payload plus line items | BRL | Pix | Your line items |
Pix is the Banco Central do Brasil's instant payment system and runs 24/7. Boletos are Brazil's bank payment slips, used for everything from supplier invoices to school fees, and they clear only on banking days. US invoices travel over ACH, governed by Nacha, or by wire.
Here's an illustrative version of steps 2 and 3 on BlindPay's API, registering a boleto and quoting it:
The full request and response shapes, including invoice registration with line items, are in the Payables docs.
Boletos are the bill type that breaks naive integrations. Four rules to build around:
payable_boleto_would_be_overdue instead of paying late.Pix codes and US invoices don't have these problems. Their amount is fixed at registration, and Pix runs at any hour.
A payable has four statuses, and they describe the bill, not the attempt:
| Status | Meaning |
|---|---|
draft | Registered and quotable. A failed or refunded attempt returns the bill here |
processing | A payout is executing it, including during a compliance hold |
completed | Paid. Terminal |
canceled | A draft that was deleted. The code can be registered again |
The payment attempt lives on the payout, with its own payout.new, payout.update, and payout.complete events. The bill emits payable.new, payable.update, and payable.complete. One paid bill produces both a payable.complete and a payout.complete. Correlate them through payable_id and payout_id, and count the payment once. Stablecoin API webhooks and reconciliation covers signature checks and deduplication.
duplicate_payable. To retry, quote the existing payable.request_amount.payable_network_not_supported.BlindPay launched Payables in August 2026. It pays invoices to US bank accounts over ACH or wire, boletos, utility and tax bills, and Pix codes, from USDC or USDT on EVM networks, using the same quote-and-payout flow as any other BlindPay payout. Invoice payables can attach the original PDF, and the dashboard can prefill an invoice by reading it with AI. Every bill passes the same KYC, KYB, and sanctions checks as the rest of the API.
To build accounts payable on top of it, the invoice payables prompt gives a coding agent the full integration spec. The cut-off times reference lists the boleto windows.
Pick the bill type your users pay most often and run it end to end on a development instance: register it, quote it, pay it, and watch both webhook streams. Then try a failed attempt and confirm your code re-quotes instead of re-registering. For the full context on how stablecoin payments move, see what blockchain payments are, and for when a bill is better paid over a plain domestic rail, when not to use blockchain payments.
Seven places blockchain payments beat bank rails: contractor payroll, remittances, B2B suppliers, marketplaces, 24/7 treasury, bill pay, and PSP payouts.
AP2, ACP, and x402 each verify that an AI agent had permission to spend. Here is what every protocol covers, who backs it, and the reconciliation gap none of them close.
Seven stablecoin payment platforms compared for US fintechs in 2026: what makes an API production-ready, how each provider handles compliance, settlement speed against ACH, and how to run the evaluation.