Billing
Flat $0.30 per recorded hour. $5 free credit on signup. Stripe-managed. No tiers, no per-platform pricing, no storage fees.
One price, billed by the minute.
The number
| Item | Price | Notes |
|---|---|---|
| Recording | $0.30 / hour | Billed per minute. Same price for Meet, Teams, and Zoom. |
| Storage | $0 | Recordings are uploaded directly to your S3-compatible bucket. We don't host them. |
| Transcription | $0.10 / hour add-on (M6) | Or BYOK — bring your AssemblyAI/Deepgram/Whisper key, no markup. |
| Signup credit | $5 | ≈ 16.6 hours of recording. No card required to claim. |
| Calendar API | $0 | Free always. |
That's the whole pricing page. No "Pro" tier, no per-bot fees, no setup,
no minimums. We win on transparency and we mean it — see
meetbot.dev/#pricing for the live
calculator.
How metering works
Every bot run emits one usage event when it finalizes:
event: bot.usage_recorded
job_id: job_01HXY…
seconds: 4253
hours_billed: 1.181 (rounded to nearest minute)
amount_usd: 0.354Events stream into Stripe via the Billing Meters
API under our
recording_hours meter. Your invoice at month-end aggregates them; you
can audit raw events any time at
/account/billing → "Usage events".
A bot that connects but never gets admitted is not billed (we'd be charging you for a failure). A bot that records for less than 60 seconds is also not billed.
Free credit
New accounts get $5 of credit applied to the first invoice. It covers the first ~16 recorded hours. No card required to start; you'll only hit a card prompt when usage exceeds the credit and an invoice would otherwise generate.
If you exhaust the credit and never add a card, in-flight bots finish but
new dispatches return 402 PaymentRequired with code: "credit_exhausted". Add a card at /account/billing to resume.
Stripe portal
We use Stripe's hosted customer portal. From
/account/billing you can:
- Update card / SEPA mandate / ACH method
- Download invoices (PDF + CSV)
- Update billing email and tax ID (used for EU VAT reverse-charge)
- Cancel — no contracts, no notice period
Self-serve everything. No "contact sales to cancel" tricks.
Where to see usage
| Where | What you see |
|---|---|
/account | Today's usage + month-to-date + current invoice estimate |
/account/billing | Stripe portal, invoices, usage events feed |
/account/recordings | Per-bot duration + cost line |
Volume + enterprise
Above 1,000 hours/month we'll cut a custom rate (typically 20–35% off, case by case). Email sales@meetbot.dev to discuss.
Honest scope on enterprise extras. We do not have SOC 2 today, no HIPAA / BAA template, no published uptime SLA. SOC 2 Type 1 is on the M5 roadmap (target Q4 2026, not committed); BAA template would follow that audit. We can send a DPA template on request — it's a soft commitment, not a published certified document. If your procurement process requires any of these on day one, talk to Recall or another SOC 2-certified vendor; we'll tell you up front rather than waste your time.
Pricing cadence
We commit to public price-change notice at least 60 days before any
increase. The pricing page footer at meetbot.dev/#pricing carries a
prices last verified YYYY-MM-DD stamp; if you ever see a stale stamp,
file an issue — the docs
repo is public and PRs are welcome.
See also
- Failure sub-codes — billed vs. not-billed status taxonomy
- Regions — pricing is identical across regions
Webhooks — Signature Verification
Every meetbot webhook is signed with HMAC-SHA256. Reject anything that doesn't verify. JavaScript, Python, and Go snippets included.
Bot Quickstart
End-to-end walkthrough — dispatch a bot to a Google Meet URL, listen for the finalize webhook, fetch the manifest, and download per-speaker audio.