Reference for Stripe test clock constraints and pitfalls. Use when planning or debugging test-clock workflows, when an advance or customer-attach step fails, or to check rules before building a time-simulation scenario with create_stripe_test_clock, advance_stripe_test_clock, and create_stripe_test_customers.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add hideokamoto/stripe-testing-mcp-tools --skill stripe-test-clock-constraints --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Stripe Test Clock Constraints?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hideokamoto-stripe-test-clock-constraints)More formats (shields.io, HTML) on the badges page.
---
name: stripe-test-clock-constraints
description: Reference for Stripe test clock constraints and pitfalls. Use when planning or debugging test-clock workflows, when an advance or customer-attach step fails, or to check rules before building a time-simulation scenario with create_stripe_test_clock, advance_stripe_test_clock, and create_stripe_test_customers.
---
# Stripe Test Clock Constraints
Quick reference for the rules and gotchas of Stripe test clocks as exposed by
this MCP. Consult this before designing a time-simulation scenario.
## Hard constraints
- **Max 3 customers per clock.** `create_stripe_test_customers` with a
`test_clock` set rejects `number > 3`. To exceed 3 customers in one
scenario, use additional clocks.
- **Clock attachment is creation-time only.** A customer can be linked to a
test clock **only when it is created** (`create_stripe_test_customers` with
`test_clock`). There is no way to attach or move an existing customer to a
clock afterward, so create the clock first.
- **Advance is forward-only.** `advance_stripe_test_clock` can only move
`frozen_time` to a time **after** the current frozen time. You cannot rewind
a clock; to test an earlier point, create a new clock.
- **Advance is asynchronous.** After `advance_stripe_test_clock`, the clock
enters an `advancing` state and processes billing events in the background.
The tool returns the `status` once in its response, but this MCP server does
**not** expose a tool to retrieve or re-poll the clock, so you cannot
programmatically watch it reach `ready`. If the response shows `advancing`,
wait a few seconds before follow-up operations, or have the user confirm the
clock has settled in the Stripe Dashboard.
## Time format
- `frozen_time` is a **Unix timestamp in seconds** (epoch seconds), not
milliseconds and not an ISO string.
- Convert carefully:
- Many languages give milliseconds (`Date.now()` in JS) — divide by 1000 and
floor.
- From an ISO date: compute epoch seconds (for example, in shell
`date -d '2024-02-01T00:00:00Z' +%s`).
- When reading a value back, multiply by 1000 to build a JS `Date`.
- A common bug is passing milliseconds, which lands the clock far in the
future; double-check the magnitude (a 2024-2026 timestamp is ~1.7e9, a
millisecond value is ~1.7e12).
## Practical guidance
- Plan all the time points you need up front; since you cannot rewind, build a
fresh clock per backward scenario.
- Keep the `test_clock_id` returned at creation; it is required for every
advance.
- To cross a billing boundary, advance to just past the subscription's
`current_period_end`.
- For an end-to-end billing procedure, see `stripe-billing-cycle-test`.
- For setup/cleanup of the data around clocks, see
`stripe-test-data-lifecycle`.

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!