Spondeo — Pricing

Model: freemium. The consumer C2C proof-link path is free forever (it's the funnel). The developer API is free to start and metered as you grow. This page is committed product policy and is rendered at /pricing. Prices are USD, exclusive of tax.

Price ladder

TierPrice / moIncluded verificationsOverageWhat's included
Developer (Free)$0500 / moHard stop (429 → /pricing)Test + live keys, sandbox, webhooks, TypeScript SDK, MCP server, OpenAPI, community support
Startup$495,000$0.015 / verifyEverything in Free + email support, usage dashboard, 1 production webhook fleet
Growth$24950,000$0.008 / verifyEverything in Startup + audit-log export, multiple webhooks, higher rate limits, priority support
Scalefrom $999 (contact)500,000+negotiated (~$0.004)Everything in Growth + SLA, DPA + security review, custom claim schemas, dedicated issuer subdomain, SSO

Consumer C2C — verify once, mint shareable proof links, view per-link analytics: free forever. No account upgrade, no metering. It exists to show the privacy model publicly and feed the developer funnel.

Billing details

response (or an invalid/expired presentation) is not billed.

429 quota_exceeded, links to /pricing) — no surprise bills, ever.

Rationale

(MIT/ISC/CC0/US-public-domain) plus a signature check. The only real variable cost is the verification email at issuance time, not per /v1/verify. This is what lets the consumer path be free forever and the free dev tier be generous.

meaningful free allowance is table stakes; we match it so a builder can ship and dogfood before paying anything.

~$1.50/check and Persona ~$0.30–0.50/check — those are document + selfie identity checks. Spondeo verifies affiliation with no PII custody, so even Startup overage ($0.015) is ~20–100× cheaper, and Scale (~$0.004) is cheaper still. We compete on both price and liability.

paying customers get elastic capacity without hitting a wall mid-launch.

custom schemas, SSO, dedicated subdomain) that warrant a conversation.

Upgrade path

A Free-tier key that hits 500/mo returns 429 quota_exceeded with a link to /pricing. Upgrading is self-serve (Stripe Checkout) for Startup and Growth; Scale is a "Contact sales" form that captures the lead. Downgrades and cancellations take effect at the end of the paid period (see docs/legal/refunds.md).

Billing implementation notes (when wiring real Stripe)

The current build ships a deterministic checkout stub (src/billing/index.ts, no live charges) with a drop-in seam for Stripe Billing. When connecting real Stripe:

active subscription.

delivers each event at-least-once and retries). Without it, a duplicate checkout.session.completed / customer.subscription.updated can double-provision or double-count. Persist processed event.ids and no-op on repeats. (Spondeo's own OUTBOUND webhooks already carry a dedupe id for the same reason.)