Demo preview. This page describes the intended product mechanics. Figures elsewhere on this site are fictional sample data.

How verification works

Agency marketing runs on claims: client counts, revenue, retention, case studies. Buyers can't check any of it, so they fall back on reviews, and reviews can be bought. We replace the review with a receipt: numbers computed from a payment connection the agency cannot edit and we cannot exceed.

The one-sentence version

The agency connects a read-only key that is technically incapable of showing us client identities. We compute totals from it daily, publish them as floors, and answer buyer questions with exactly three states: verified, partially verified, or unverified. Never “false”.

The scoped key: blind by permission, not by promise

Verification starts with a Stripe restricted API key the agency creates in its own dashboard. Stripe enforces each permission on its servers: a request outside the grant is rejected before we ever see data. This is the exact scope we ask for, and everything not listed defaults to None:

Stripe resourceAccessWhy
Subscriptions Read Amounts, intervals, statuses, and start/cancel dates. Subscription records identify clients only by an anonymous ID, so this is where client counts and retention come from without names ever appearing.
Analytics & Reports Enabled Stripe's own aggregate endpoints: monthly recurring revenue, churned revenue, and category totals for refunds. Pure totals, no per-client rows.
Balance Read Confirms the account is live and settling.
Customers None Customer records hold names and emails. The key cannot fetch them. An agency's client list is its most guarded asset; we are structurally unable to see it.
Charges & Refunds None Individual charges carry the payer's billing details. Blocked at the permission layer.
Invoices None Invoice objects carry the client's name and email on every record, so we do not read them at all. Payment health comes from subscription statuses instead.

A PROMISE

“We access your customer data but we pledge not to store it.” The reader has to trust the platform's data handling. Most verified-data products work this way.

A PERMISSION

“The key you created cannot return customer data, and you can confirm that in your own Stripe dashboard before you paste it.” Nothing to trust. That is our model.

What we compute, and what we refuse to publish

From that scope we compute four aggregates, re-synced daily:

Raw API responses are discarded after each computation. We store the aggregates, the sync timestamp, and nothing else.

We refuse to publish anything that requires reading records with client identity on them, any “quality score” we would have to invent, and any figure about an agency that has not connected. There are no profiles of non-members, no scraped pages, no shadow rankings.

Floors, never ceilings

Agencies get paid on many rails: card, bank transfer, wire, local methods. A payment connection shows us only the rails behind it. So every verified figure is a minimum, marked as such everywhere it appears. This cuts both ways, deliberately:

The three states

Every claim checked against a verified agency gets exactly one of three answers:

There is no fourth state. A platform that publishes “this agency lied” is making an accusation it cannot prove from a floor, and we built the product so we never have to.

Opt-in, exit, and corrections

What verification costs

Nothing, forever. Verification, the profile, the badge, and the claim checker are free for every agency, permanently. The business runs on clearly labeled sponsor attention beside the data and on paid tooling around it. Money buys visibility next to the table. It never buys the numbers, the badge, or a row in it.

Get verified

  1. Create a restricted key in your Stripe dashboard with the exact scope above. Takes about two minutes; we show every click.
  2. Paste it once. We validate the scope first: a key that can read customer data is rejected, not quietly accepted.
  3. Your profile goes live with the first sync, along with your embeddable badge and your claim-checker link to hand to prospects.
For your prospects, the pitch becomes one line

“Don't take my word for any number in this deck. Here is my claim checker.”

See it live on a sample profile.

Halcyon Growth is our fictional demo agency: a full verified profile, the live chart, the published claims, and the badge.

Open the sample profile