DocsGet started

Get started

Billing and subscription management

5 min readReviewed July 2026

GraphJSON bills paid usage from stored events. The dashboard shows the current stored-event count, while invoices follow the published pricing method for the applicable billing period.

Use this guide to connect those two views and manage the subscription without confusing present storage with a past billing watermark.

Current billing model#

The current published plan includes:

  • free usage up to 5,000 stored events
  • paid usage at the rate shown on the pricing page
  • metering in increments of one million stored events
  • billing based on the highest stored-event watermark recorded during the month

GraphJSON records the total stored-event watermark periodically. Deleting or expiring events reduces later measurements, but it does not rewrite a higher watermark already recorded earlier in the billing period.

Always use the live pricing page for a purchase decision. Documentation examples explain the model but do not create a separate price commitment.

Estimate stored usage#

The basic estimate is:

stored events ≈ events per day × retained days

Calculate each collection separately:

Collection Events/day Retention Approximate steady storage
product_events 80,000 365 days 29.2 million
webhook_events 250,000 30 days 7.5 million
staging_events 10,000 14 days 140,000

Imports, duplicates, traffic spikes, and delayed expiration can increase the observed high-water mark.

Use Capacity, retention, and cost for a complete forecast.

Review current usage#

Open Dashboard → Settings and review Events Stored.

That value is useful for:

  • understanding current storage
  • finding unexpected growth
  • comparing retention decisions
  • estimating future paid usage

It is not necessarily identical to an invoice because an invoice can reflect a higher watermark from earlier in the billing period.

When current usage is unexpected, review:

  1. large recent imports or replays
  2. producers sending the same fact more than once
  3. test or preview environments using production retention
  4. provider integrations forwarding more events than intended
  5. collections with indefinite retention
  6. a newly instrumented high-frequency event

Do not sample financial, entitlement, or customer-visible usage facts merely to reduce analytics cost.

Open the billing portal#

  1. Open Dashboard → Settings.
  2. Find Subscription.
  3. Select Manage Subscription.
  4. Complete the requested action in the Stripe-hosted portal.

The actions available in the portal depend on the current GraphJSON billing configuration and subscription state. The portal may support reviewing invoices, updating payment details, or managing a subscription; do not assume an action is available until it appears in your session.

Portal sessions are temporary. Return to GraphJSON Settings and open a new session if an old portal link expires.

Review an invoice#

Record:

invoice number:
billing period:
line-item description:
quantity:
unit price:
tax:
credits or adjustments:
total:

Then compare:

  1. the invoice’s billing period
  2. the published rate applicable to that period
  3. the highest expected stored-event range
  4. known backfills or spikes
  5. retention changes and their effective timing

An analytical query over present events cannot reconstruct every historical billing watermark. If the invoice and your operational record disagree, contact support with the invoice number and non-sensitive usage context.

Do not email complete payment details or an API key.

Update payment details#

Use Manage Subscription and follow the available Stripe portal controls.

If the portal does not offer the required change, email hi@graphjson.com from the billing account address. Include the workspace name and invoice number, but not a full card number or API key.

Payment information is handled by Stripe. GraphJSON application forms should not receive complete card details in a support message.

Upgrade from free usage#

When usage exceeds the free threshold, GraphJSON can ask the workspace to upgrade. Crossing the threshold does not create a new product requirement to delete data immediately.

Before upgrading:

  • confirm the production workspace
  • forecast stored events by collection
  • review retention
  • remove disposable test traffic
  • identify the billing owner
  • confirm the published rate

Upgrade because the retained data is useful, not because an unowned producer is sending noise.

Change or cancel a subscription#

Use Manage Subscription for the actions currently enabled in the portal. Before a downgrade or cancellation:

  1. export data that must be retained outside GraphJSON
  2. inventory dashboards, alerts, embeds, queries, and integrations
  3. record the required cutover date
  4. stop or redirect producers when appropriate
  5. preserve the invoice and billing records your organization needs
  6. confirm the effective date shown by the portal

GraphJSON does not publish a universal cancellation, refund, or post-cancellation data-retention promise in this documentation. Confirm the effective date and required data disposition before relying on a cancellation for a time-sensitive obligation.

Deleting events and canceling billing are separate actions. Cancellation does not automatically prove that every downstream CSV, screenshot, cached embed, or external copy has been removed.

Failed or overdue payment#

If a payment fails:

  1. open a fresh billing portal session
  2. review the invoice status
  3. update the payment method if the portal permits it
  4. retry or complete payment through Stripe
  5. contact support if the subscription state does not update

Do not repeatedly create new subscriptions to work around a failed invoice unless support directs you to do so. Duplicate subscriptions can create a harder billing problem.

Reduce future usage safely#

Prioritize:

  1. remove accidental duplicates at the producer
  2. batch retries with stable event IDs
  3. stop disposable or unowned events
  4. shorten retention for operational and test collections
  5. separate development data from production
  6. remove unused provider event types

Before shortening retention, identify analyses that require older history. A lower bill is not useful if it silently destroys the only annual-renewal or cohort window the team needs.

Billing support checklist#

Include:

  • account email
  • workspace name
  • invoice number
  • billing period
  • visible Events Stored value
  • expected stored-event range
  • recent import, retention, or integration changes

Exclude:

  • API key
  • complete card or bank details
  • password or session token
  • full customer event payload

For usage design, continue with Capacity, retention, and cost. For data preservation, use Export, delete, and move your data.

Need a hand?

Tell us what you’re building and we’ll point you in the right direction.

Contact support