CPF purchase limits
Difference between an event-level limit and a tier-level limit
Understand when to cap the whole event vs cap one tier — and how the two combine.
Baila offers two levels of per-CPF limit: an event-level limit (applies across every tier) and a tier-level limit (specific to one tier). You can use one, the other, or both at once. When both exist, the more restrictive one wins. CPF is the Brazilian taxpayer ID.
When to use each
Rule of thumb: use an event-level limit when you want to stop one person from piling up tickets by adding up different tiers. Use a tier-level limit when one specific section (a limited VIP tier, say) needs a lower cap than the rest of the event.
Side by side
| Trait | Event-level limit | Tier-level limit |
|---|---|---|
| Scope | Every tier of the event, added up | Only the tier you configured |
| Typical use | A whole party capped at 4 per CPF | VIP capped at 2 per CPF, floor left open |
| Where to set it | Event Information step → "Ticket limit per CPF (whole event)" field | Lots step → "Limit per CPF in this tier" field (blank = inherits the event's) |
| Interaction | Applied together with the tier-level one (the more restrictive wins) | Same |
A worked example
Picture an event with:
- Event-level limit: 4 tickets per CPF
- Floor tier: no limit of its own, priced R$ 50
- VIP tier: tier-level limit of 2 tickets per CPF, priced R$ 200
In that case:
- One person can buy up to 4 tickets across the whole event
- But at most 2 of those 4 can be VIP (because of the tier cap)
- If they buy 2 Floor + 2 VIP, the limit is fully used and further purchases are blocked
How the counters work
The counters are atomic (a single transaction) and follow the full order life cycle:
- Confirmed purchases count towards the total
- Refunds give the slot back to the counter
- If a chargeback is reversed in your favour, the consumption still stands (the order counts as confirmed again)
- If you lose the chargeback, the slot is released and becomes available in the counter again
- On free events,
lifetimeAcquiredstops cancel-and-grab-again from getting round the cap