Billing and Plans
Plan comparison
| Feature | Free | Solo | Agency |
|---|---|---|---|
| Monthly price | $0 | $29 | $79 |
| Active intakes | 1 | 15 | 60 |
| Items per intake | 10 | Unlimited | Unlimited |
| Seats | 1 | 1 | 3 |
| Storage | 1 GB | 25 GB | 100 GB |
| API rate limit | 60 req/h | 600 req/h | 3,000 req/h |
| Secrets vault | No | Yes | Yes |
| Item revisions | No | Yes | Yes |
| SMS reminders | No | No | Yes (with credits) |
| Custom branding | "Powered by BriefGate" | Your logo + colors | + Custom portal domain |
| Custom sending domain | No | No | Yes |
| Chase schedules | default, off | All (gentle/default/aggressive/off) | All |
| Templates | 3 public | 3 public + custom | 3 public + custom + team-shared |
| Support | Community | Email, 48h | Priority email, 24h |
| Annual billing | — | $23.20/mo (–20%) | $63.20/mo (–20%) |
Annual billing is charged as a single upfront payment. The per-month figures above show the effective monthly cost.
Add-ons
Available on Solo and Agency plans:
| Add-on | Price |
|---|---|
| SMS credits | $5 / 50 messages |
| Extra storage | +50 GB for $5/month |
| Additional Agency seat | +$15/seat/month |
SMS credits are consumed per message sent (one reminder = one credit). Credits do not expire.
Upgrading
Start a checkout session via API:
POST /v1/billing/checkout{
"plan": "solo",
"period": "monthly"
}Response:
{
"checkout_url": "https://checkout.stripe.com/c/pay/cs_live_..."
}Redirect the user (or open the URL in a browser) to complete payment via Stripe. After payment, the plan is active immediately and existing intakes are not affected.
For annual billing, set "period": "yearly".
Managing your subscription
Open the Stripe Customer Portal to change plan, update payment method, or cancel:
POST /v1/billing/portalResponse:
{
"portal_url": "https://billing.stripe.com/session/..."
}Portal sessions expire after 5 minutes. Generate a new one if the user does not use it in time.
Checking usage
GET /v1/usageReturns current period usage against your plan limits:
{
"tier": "solo",
"period_start": "2026-07-01T00:00:00Z",
"period_end": "2026-08-01T00:00:00Z",
"active_intakes": {
"used": 7,
"limit": 15
},
"storage_bytes": {
"used": 3221225472,
"limit": 26843545600
},
"rate_limit_per_hour": 600
}active_intakes counts intakes in pending, in_progress, or revision_requested status. Completed and archived intakes do not count toward the limit.
Machine-readable pricing
Agents can fetch current pricing without scraping the landing page:
GET https://api.briefgate.dev/pricing.jsonNo authentication required. Returns the TIER_LIMITS object with all plan features and numeric limits. The response is cache-friendly (ETag + Last-Modified headers).
Data retention
- Default: data is retained 90 days after
intake.completed, then automatically purged (files + submitted values) - Configure retention per account:
PATCH /v1/account
{"retention_days": 365}Valid range: 1 to 3650 days.
- For immediate deletion of a specific intake (including all files in R2 storage):
DELETE /v1/intakes/:idThis is irreversible. The intake, all submitted values, all files, and all chase history are removed.
For full account deletion, contact support. All data is removed within 30 days.