Glossary

Stripe Test Clock

A Stripe test clock is a simulated clock in a sandbox that customers and their subscriptions can be attached to, so you can move time forward and watch renewals, trial endings, prorations and failed payments happen in minutes instead of months.

Also called: test clock, Stripe simulation, subscription simulation, frozen_time, Run simulation, advance time

14-day free trial · card required · cancel anytime

Definition

Subscriptions are hard to test because the interesting part happens later. A monthly plan renews in thirty days, an annual plan in a year, and a free trial ends when the trial ends. A test clock removes the wait. Stripe’s description is that you use test clocks “to advance simulated time in a sandbox and see how your subscriptions and invoices change.” Its own example is the one bookkeepers care about most: testing how an integration handles a payment failure at an annual renewal “without waiting a year.”

The clock starts at a frozen time you choose, which can be in the past or the future. Once it is set, Stripe says, “you can only move it forward in time.” Every customer created on the clock, and every subscription that customer has, lives on the clock’s time rather than the real date. When you advance it, Stripe runs whatever would have happened in between: invoices are drafted, finalized and paid, trials end, renewals fire, and the webhook events go out as they would in live mode.

In the Dashboard a test clock is called a simulation. You can start one from a subscription’s Run simulation banner, or create one from the Simulations page under Subscriptions and add customers to it. In the API it is the test_clock object, and its starting point is the frozen_time field.

Key points

  • +A test clock only exists in a sandbox. Deleting one cannot touch live data.
  • +The frozen time can start in the past or the future, but after it is set it can only move forward.
  • +You can advance by any increment, up to two subscription intervals at a time. For a monthly subscription that is up to 2 months per advance.
  • +With no subscriptions on the clock, Stripe allows an advance of up to two years from the initial frozen time.
  • +A clock holds up to three customers, three subscriptions or schedules per customer, and ten quotes not attached to a customer.
  • +The Dashboard may disable Run simulation for a customer with more than three subscriptions, or more than 25 quotes, invoices or other related objects.
  • +Finish simulation deletes the clock and everything on it, including the customer and the subscription. Stripe deletes simulations automatically 30 days after they are created.
  • +Test clock advancement does not collect bank debit payments such as us_bank_account. Stripe collects them after the clock advances.

The two-interval rule, and why a renewal needs two advances

You cannot jump a clock to any date you like. Stripe lets you advance it “in intervals of up to two,” where the interval is the shortest service period on the subscription, set by its recurring price. A monthly subscription can move up to two months per advance. An annual one can move up to two years. A clock with no subscriptions on it can move up to two years from its initial frozen time.

The other timing detail is the one that trips people up. A renewal does not produce a paid invoice the instant the period rolls over. Stripe’s renewal walkthrough starts a 50 USD per month subscription on January 1, advances to February 1, and finds a new 50 USD invoice in draft. By default, Stripe says, a subscription invoice stays in draft for one hour. Advance the clock one more hour, and the invoice is finalized and paid.

So a simulation that stops exactly on the renewal date shows a draft invoice and no payment. That is not a failure. It is the hour Stripe leaves for adding invoice items before finalizing, and any check you run on the books should start after it.

A worked example: a mid-cycle upgrade

Stripe’s proration walkthrough is a useful one to run before the first real upgrade reaches your books, because the numbers are easy to check by hand.

On January 1 a customer starts a basic plan at 50 USD per month, and the first invoice is created, finalized and paid. The clock is advanced to January 16, and the customer upgrades to a premium plan at 100 USD per month. In Stripe’s walkthrough the upgrade creates two pending invoice items and no invoice yet: a credit proration of 25 USD for the unused half month of basic, and a charge of 50 USD for half a month of premium.

Advance to February 1 and the subscription cycles. The draft invoice holds the negative proration, the positive proration and February’s full 100 USD, for a total of 125 USD. That is 100 minus 25 plus 50. One more hour finalizes it.

The lesson for bookkeeping is that the upgrade itself produced no invoice and no payment on January 16. The revenue effect of a mid-month change can arrive on the next renewal invoice, netted into it, and your books will only see it when that invoice is finalized.

What a bookkeeper can rehearse with one

A test clock is a developer tool by origin, but most of what it shows is accounting. Four rehearsals are worth running before the real thing happens.

A free trial. Stripe’s trial walkthrough uses a 7-day trial on a clock frozen at January 1. The subscription starts in trialing status and generates a zero-value invoice for the trial. On January 5, the customer.subscription.trial_will_end event fires, three days before the end by default. On January 8 the trial ends, and with a successful payment the subscription becomes active and its first paid invoice appears. Watching that sequence once shows you which of those invoices your books should care about, and how a $0 invoice is handled before one arrives for real.

An annual renewal that fails. Attach a card that declines, move the clock past the renewal, and see what Stripe does with the unpaid invoice under your retry settings.

A mid-cycle plan change, as in the example above, to see where prorations land.

A customer balance or a one-off invoice item, both of which Stripe lists as things a simulation can test, to see how they change the next invoice.

Limits that change what you can test

A few limits decide whether a test clock can show you what you want.

A simulation you build from the Simulations page takes new customers only. Stripe’s note is that “you can’t choose existing customers during simulations,” and each simulation takes up to three. For an existing sandbox customer, the Dashboard route is Run simulation on one of their subscriptions, and the API lets you create a test clock for an existing customer, with conditions: the customer must be under the subscription and quote limits, the initial frozen time cannot be in the past, and the account must have no Billing Automations configured. Once attached, the customer cannot be removed from the clock, and deleting the clock deletes the customer.

Objects on a clock also hide from ordinary lists. Stripe says API list methods such as List Invoices do not return objects generated by test clocks unless you add a query clause, for example a customer, subscription or test clock ID. A report built on a plain invoice list will look as if the simulation produced nothing.

Bank debits are the biggest gap. Advancing a clock does not collect us_bank_account payments. Stripe collects them after the clock has advanced, so a subscription paid by bank debit can remain active right after the advance, with no payment attempt yet. To see the failure play out, Stripe’s advice is to listen for invoice.payment_failed and customer.subscription.deleted rather than reading the status straight after the advance.

Finally, the sandbox itself has limits. Stripe says payments in a sandbox are not processed by card networks or payment providers, and IC+ pricing cannot be tested there, so fee amounts in a simulation are not a forecast of the fees on your real statement.

Frequently asked questions

What is a test clock in Stripe?

It is a simulated clock in a Stripe sandbox. Customers created on it, and their subscriptions, follow the clock’s time instead of the real date. When you advance the clock, Stripe runs the renewals, trial endings and invoices that would have happened in between, so you can see months of billing in minutes.

How far can I advance a Stripe test clock at once?

Up to two subscription intervals per advance, measured by the shortest service period on the subscription. A monthly subscription can move up to 2 months at a time. A clock with no subscriptions on it can move up to two years from its initial frozen time. The clock can never move backwards.

Why is the renewal invoice still in draft after I advanced the clock?

Because Stripe leaves a subscription invoice in draft for about one hour by default before it finalizes it. Advance the clock one more hour and the invoice is finalized and, with a working payment method, paid.

Does finishing a simulation delete anything in live mode?

No. Test clocks exist only in sandboxes. Finishing a simulation deletes the clock and the objects on it, including its customers and their subscriptions, and Stripe states that it does not affect live mode. Stripe also deletes simulations automatically 30 days after they are created.

Can I put an existing customer on a test clock?

Not when you build a simulation from the Simulations page, which only takes new customers. You can start Run simulation from an existing subscription, and through the API you can create a test clock for an existing sandbox customer if the customer is within the limits, the frozen time is not in the past, and the account has no Billing Automations configured. That customer cannot be removed from the clock afterwards.

Why did my bank debit subscription not fail when I advanced the clock?

Test clock advancement does not collect bank debit payments such as us_bank_account. Stripe collects them after the clock has advanced, so the subscription can still show as active right after the advance. Listen for invoice.payment_failed and customer.subscription.deleted to see the outcome.

What customers say about running Stripe through Acodei

Stripe Verified Partner BadgeIntuit QuickBooks
★★★★★
“If you're testing out all the different Stripe/QuickBooks integration apps right now, let me save you some time. This one is the best one by far.”
RyanOwner at Indie Music Academy
★★★★★
“Works well and is really helpful for massive transactions. The support is really fast and helpful. 100% recommended.”
AndresCo-founder and CEO at Kanguro Collections and Reinsurance

Related reading

More glossary terms

See the full glossary

Ready to try Acodei?

Connect Stripe to QuickBooks Online in minutes and let the fees, refunds, and payouts land where your accountant expects them.

14-day free trial · card required · cancel anytime