---
# @generated by sylphx-gen. Do not edit.
title: "Test clocks"
description: "The `test_clocks` collection of Sylphx Money: A Stripe test clock for one subject's subscription lifecycle."
type: reference
product: payments
summary: "A Stripe test clock for one subject's subscription lifecycle."
updated: 2026-09-28
order: 900
---

A Stripe test clock for one subject's subscription lifecycle. Create it before the subject's first checkout; its Stripe customer inherits the clock. Only test-mode keys and test-mode merchants can use this resource. Advancing changes Stripe's time and emits real webhooks; it never edits entitlements.

**Service** Sylphx Money · **Resource type** `money.sylphx.com/TestClock` · **Name pattern** `orgs/{org}/projects/{project}/envs/{env}/test_clocks/{test_clock}` · **Shape** `record`

## Fields

| Field | Type | What it is |
| --- | --- | --- |
| `name` | `string` | The clock's resource name. |
| `uid` | `string` | Stable identity, never reused. Output only. |
| `meta` | `ResourceMeta` | Resource metadata. Output only. |
| `subject` | `Subject` | The subject whose new Stripe customer will use this clock. A subject with an existing Money Stripe customer cannot acquire a clock. Required. |
| `frozen_time` | `timestamp` | Initial simulated time on create; current Stripe time on reads. Required on create. Only whole seconds are supported. Required. |
| `state` | `string` | Stripe's status: ready, advancing, or internal_failure. Poll GetTestClock until ready before the next simulation step. Ready does not mean Money has applied every webhook; observe the subscription and entitlement too. Output only. |
| `processor_clock_id` | `string` | Stripe clock id, for processor receipts. Output only. |
| `livemode` | `bool` | Always false; a live processor object is refused. Output only. |

## Methods

Every method of the collection, in the registry's order, with the scope it
needs. The full request, response and examples are one link away.

| Method | Call | What it does |
| --- | --- | --- |
| `POST` | [`create`](/docs/api/test_clocks#create) | Creates a test-only Stripe simulation before the subject's first checkout. No catalogue, payment, subscription, or entitlement is changed. |
| `GET` | [`get`](/docs/api/test_clocks#get) | Reads the owned test clock back from Stripe. Live keys are refused. |
| `POST` | [`advance`](/docs/api/test_clocks#advance) | Advances Stripe time, never entitlements. Stripe processes asynchronously; poll GetTestClock until ready, then observe the genuine webhook's effects. Time only moves forward, within Stripe's subscription-interval bound. |

## create

Creates a test-only Stripe simulation before the subject's first checkout. No catalogue, payment, subscription, or entitlement is changed.

`POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/test_clocks` · scope `billing:write` · effect `write` · [Request, response and examples](/docs/api/test_clocks/create)

## get

Reads the owned test clock back from Stripe. Live keys are refused.

`GET https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/test_clocks/test-clock` · scope `billing:read` · effect `read` · [Request, response and examples](/docs/api/test_clocks/get)

## advance

Advances Stripe time, never entitlements. Stripe processes asynchronously; poll GetTestClock until ready, then observe the genuine webhook's effects. Time only moves forward, within Stripe's subscription-interval bound.

`POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/test_clocks/test-clock:advance` · scope `billing:write` · effect `write` · [Request, response and examples](/docs/api/test_clocks/advance)
