Collect with a template
Collect from many payers with one static Bre-B key or QR.
This flow collects payments from many payers through one shared address: a multiple-use template issues a static Bre-B key and QR, you display it — on a screen, a poster, an invoice footer — and every transfer to it lands in your subaccount as a payin. There is no per-payment API call: the template is the campaign, and the webhooks are your ledger of who paid what.
Use it for donations, in-store QR payments, recurring club dues, or any collection where you do not need to know in advance which specific payment is coming.
Before you start
You will need:
- A Mono account with Core and the payins feature enabled for your program. See Methods — program configuration.
- The subaccount that will receive the collections.
- A webhook endpoint subscribed to the payin events.
- The Templates concept fresh in mind.
Sequence overview
Steps
-
Create the collection template.
type: "collection"is the default; make itmultiple_useand request the QR:{ "external_id": "campaign-2026-back-to-school", "usage_mode": "multiple_use", "subaccount_id": "<receiving subaccount>", "currency": "COP", "reference": "Back to school 2026", "minimum_payin_amount": { "amount": 1000000, "currency": "COP" }, "total_maximum_amount": { "amount": 5000000000, "currency": "COP" }, "expires_at": "2026-12-31T23:59:59Z", "method_params": { "co_breb": { "create_qr": true } } } -
Wait for
payin_template_readyand publish the key and QR wherever payers will see them. -
Let the payments flow. Each transfer becomes a payin:
payin_created→payin_approved_in_provider→payin_subaccount_credited. The payer's identity arrives ininstrument.payer— that is how you know who paid, since nothing identifies payments in advance in this flow. -
Watch the campaign milestones. If you set
total_minimum_amount,payin_template_minimum_paidannounces the goal was reached;payin_template_paidannounces the cap (total_maximum_amount) and the template stops accepting payments. Reopen a paid campaign by raising the cap with an update. -
Close it down. Let
expires_atprune the template, or delete it oncepaid_amountis settled and nothing is in flight. Either way the key and QR are deregistered andpayin_template_discardedconfirms it.
Reconciliation in this flow
Payments are anonymous until they arrive, so reconcile by listing payins by template_id and matching on instrument.payer (document) and amount. If you need exact payment-to-order matching, this is the signal to use intents instead.
Next steps
- Collect with intents — when each payment must be pre-identified.
- Settlement — how the collected money reaches your funding account.
- Webhooks — the full event catalog this flow rides on.