Billing Management
beginnerManage your organization's plan, view invoices, upgrade or downgrade, and understand usage-based billing.
Plans overview
| Plan | Patterns | Members | Rate limit | Price |
|---|---|---|---|---|
| Free | 1,000 | 1 | 10 req/s | $0/mo |
| Starter | 10,000 | 3 | 50 req/s | $29/mo |
| Professional | 100,000 | Unlimited | 200 req/s | $99/mo |
| Business | 500,000 | Unlimited | 500 req/s | $299/mo |
| Enterprise | Unlimited | Unlimited | Custom | Custom |
All plans include: all three retrieval pathways, causal reasoning, consolidation, explainability, and webhooks.
Viewing your current plan
import os
from engramma_cloud import EngrammaClient
client = EngrammaClient(api_key=os.environ["ENGRAMMA_API_KEY"])
# Get current billing information
billing = client.organizations.billing(org_id="org_abc123")
print(f"Plan: {billing.plan}")
print(f"Status: {billing.status}")
print(f"Patterns used: {billing.patterns_used}/{billing.patterns_limit}")
print(f"Current period: {billing.period_start} → {billing.period_end}")
print(f"Next invoice: {billing.next_invoice_amount}")Upgrading your plan
# Upgrade to Professional plan
result = client.organizations.upgrade(
org_id="org_abc123",
plan="professional"
)
print(f"New plan: {result.plan}")
print(f"Effective: {result.effective_at}")
print(f"New limits: {result.patterns_limit} patterns, {result.rate_limit} req/s")
# Upgrades take effect immediately
# You're charged the prorated difference for the current periodUpgrades are immediate — your new limits apply right away. You're billed the prorated difference for the remaining days in your current billing period.
Downgrading your plan
# Downgrade to Starter plan
result = client.organizations.downgrade(
org_id="org_abc123",
plan="starter"
)
print(f"New plan: {result.plan}")
print(f"Effective: {result.effective_at}") # End of current period
print(f"Warning: {result.warning}")
# Downgrades take effect at the end of your current billing period
# If you exceed the new plan's limits, consolidation will be neededIf your current pattern count exceeds the new plan's limit, you won't lose data — but you won't be able to store new memories until you consolidate or delete patterns to get under the limit.
Viewing invoices
# List recent invoices
invoices = client.organizations.invoices(org_id="org_abc123")
for invoice in invoices:
print(f"{invoice.date}: ${invoice.amount} — {invoice.status}")
print(f" Plan: {invoice.plan}")
print(f" PDF: {invoice.pdf_url}")
# Output:
# 2026-01-01: $99.00 — paid
# Plan: Professional
# PDF: https://billing.engramma-memory.com/invoices/inv_123.pdfUsage monitoring
Track how your team is consuming the plan:
# Get usage breakdown
usage = client.organizations.usage(org_id="org_abc123")
print(f"This period:")
print(f" Patterns stored: {usage.patterns_used}/{usage.patterns_limit}")
print(f" API calls: {usage.api_calls}")
print(f" Storage: {usage.storage_mb} MB")
print(f"\nBy operation:")
print(f" Stores: {usage.stores}")
print(f" Retrieves: {usage.retrieves}")
print(f" Explains: {usage.explains}")
print(f" Consolidations: {usage.consolidations}")
# Check if approaching limits
usage_pct = usage.patterns_used / usage.patterns_limit * 100
if usage_pct > 80:
print(f"\n⚠️ At {usage_pct:.0f}% capacity — consider upgrading")Cancellation
# Cancel subscription (takes effect at end of period)
result = client.organizations.cancel(
org_id="org_abc123",
reason="Switching to a different solution" # Optional
)
print(f"Cancellation effective: {result.effective_at}")
print(f"Data retention: {result.data_retention_days} days")
# After cancellation:
# - Your data is retained for 30 days
# - You can reactivate within the retention period
# - API keys stop working at the effective dateCancellation doesn't delete your data immediately. You have 30 days to reactivate or export your memories. After 30 days, data is permanently erased per our GDPR obligations.
FAQ
Can I switch billing between monthly and annual? Yes. Annual billing saves 20%. Contact support or switch in your dashboard.
What happens if I exceed my rate limit?
You receive a 429 Too Many Requests response. Requests are not lost — retry after the cooldown period shown in the Retry-After header.
Does consolidation count toward API calls? Manual consolidation counts as 1 API call regardless of how many patterns it processes. Automatic consolidation doesn't count.
Can different members have different plans? No. Billing is per-organization. All members share the same plan limits.
Next steps
- Organizations Overview — Back to the big picture
- API Keys — Usage per key contributes to org billing
- Usage API Reference — Detailed usage tracking endpoints