Mono Colombia

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:

Sequence overview

Steps

  1. Create the collection template. type: "collection" is the default; make it multiple_use and 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 } }
    }
  2. Wait for payin_template_ready and publish the key and QR wherever payers will see them.

  3. Let the payments flow. Each transfer becomes a payin: payin_createdpayin_approved_in_providerpayin_subaccount_credited. The payer's identity arrives in instrument.payer — that is how you know who paid, since nothing identifies payments in advance in this flow.

  4. Watch the campaign milestones. If you set total_minimum_amount, payin_template_minimum_paid announces the goal was reached; payin_template_paid announces the cap (total_maximum_amount) and the template stops accepting payments. Reopen a paid campaign by raising the cap with an update.

  5. Close it down. Let expires_at prune the template, or delete it once paid_amount is settled and nothing is in flight. Either way the key and QR are deregistered and payin_template_discarded confirms 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.

On this page