Brizz

Integration layer

Coupon validation — technical guide

Three supported ways to run a partner-funded discount on Brizz. This guide is for your engineering team: the flow, the exact requirements, and the endpoints, payloads and failure behaviour for each. Brizz absorbs the discount at checkout — the event organiser's payout is never touched.

How a campaign works

A campaign defines the discount, who can use it, the budget cap and the events it covers. Customers redeem codes. The only decision your team makes is who holds the codes, and how Brizz confirms one is valid. That gives three models. They are independent — pick the one that matches how your system works.

Choosing between them

A · Brizz mintsB · You uploadC · Real-time
Who generates codesBrizzYouYou
Code list shared with Brizzn/aYes, in fullNo — only codes presented
Checkout latencyLocal, instantLocal, instantOne live call to you
You operate a serviceNoNoYes
If your systems are downNo effectNo effectYour codes stop discounting
ReconciliationAPI · webhooks · reportsAPI · webhooks · reportsLive result + your logs
Best whenBrizz distributesYou have a fixed batchYour app mints per signup

Which is the pay-per-signup loop?

“Pre-fund → your app issues a coupon at signup → Brizz validates it” is Model C. If you'd rather Brizz hand out codes and simply report redemptions back, that's A or B — considerably less engineering, and no live service to run. You can also mix: a printed-flyer batch through B alongside an app-issued flow through C.

A note on Model C

Model C puts your service inside a live checkout. If your system can hand us a batch of codes ahead of time, A or B will be more robust for both of us — a slow or failed call on your side becomes a customer not getting their discount. Choose C when codes are minted per user and there is no batch to share.

“One API call” vs “an HTTPS endpoint”

These sound similar and are not. Both are HTTPS and JSON; the difference is which way the call travels, and that decides everything about what your team owns.

Model B · one API call

You → Brizz

You are the client

You POST your list of codes to Brizz once, ahead of time, to hand over the batch you have already minted. It is the same kind of call your code makes to any third-party API. Nothing is hosted, nothing stays running, and nobody is waiting on it — if it fails you retry it tomorrow. Most partners do this from the dashboard as a CSV instead and never write the call at all.

Runs: once per batch · Owned: nothing after it returns

Model C · an HTTPS endpoint

Brizz → You

You are the server

You host a URL that Brizz calls, and you keep hosting it for as long as the campaign runs. It fires on every checkout where one of your codes is entered, with a customer waiting on the answer, so it has to be online, authenticated, and fast — the default timeout is 1500 ms. Your uptime becomes part of the customer's experience.

Runs: every checkout, live · Owned: hosting, auth, uptime, latency

Model A needs neither. Brizz mints the codes, so there is no batch to hand over and nothing to verify — the API on Model A's page is there only if you would rather trigger minting from your own code than from the dashboard.

Three parties, one picture

Every flow in this guide is drawn the same way, so you can compare the models directly. Three lanes — Partner (you), Brizz, End User — and one vertical divider separating what happens ahead of time from what happens while a customer is at checkout.

PARTNERBRIZZEND USERAHEAD OF TIMEAT CHECKOUT — THE CUSTOMER IS WAITINGa step you performthe decisive stepa good outcomearrows show who hands off to whomcolour = outcome · lane = who
The one question worth asking of each diagram: does anything appear in the partner lane to the right of the divider? In Models A and B it never does. In Model C it does — and that single box is the entire engineering difference between them.

What is true in all three

No customer data to you

Status and verification calls carry the code and Brizz identifiers only — never buyer identity, email or PII.

Fail-closed

Any failure means no discount and a normal, full-price checkout. A sale is never blocked by a coupon problem.

No oracle

A rejected code shows one generic message, so checkout can't be used to enumerate which codes exist.

Always a real charge

A discount can never take a basket to zero. Brizz always leaves a genuine payable amount.

Budget enforced by Brizz

The cap, per-user limits and event scope are applied on our side, under a lock. You never track spend.

Secrets never at rest in the clear

API keys are stored as keyed hashes; verification secrets are encrypted. A minted secret is revealed exactly once.

Onboarding sequence

  1. Brizz creates your partner record and campaign — discount, budget cap, eligible events.
  2. You pick a model. You can start with A and add C later; they can run side by side on separate campaigns.
  3. For A or B: we issue an API key with the scopes you need, and register your webhook URL and signing secret.
  4. For C: you expose your verification endpoint; we exchange credentials and run a synthetic Test connection.
  5. Go live. Reconcile from webhooks and reports (A/B), or from your own logs plus the authorization_ref (C).

Ready to start?

Tell us which model fits and we'll take it from there. For Model C, send your verification URL and preferred code prefix — we'll exchange credentials, run Test connection against your endpoint, and enable the campaign once it passes.

dev@ananthya.com

Brizz uses cookies to improve your experience and measure site usage. You can manage your preferences at any time.