status enum Pin the lifecycle status. Omit for a weighted mix.
Fake SaaS subscriptions with exact currency precision, calendar billing periods and explicit trial, renewal, pause and cancellation state masks.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
status | enum | allowed: trialing | active | pastDue | cancelled | paused example: active | Pin the lifecycle status. Omit for a weighted mix. |
interval | enum | default: monthly allowed: monthly | yearly example: yearly | Billing cadence. The period uses calendar months or calendar years. |
currency | string | default: USD example: KWD | Active ISO 4217 currency code. Case-insensitive; amount uses the currency's 0, 2 or 3 minor-unit digits. |
from | date | example: 2024-01-01 | Earliest createdAt timestamp. Defaults to 730 days before resolved to. |
to | date | example: 2025-12-31 | Latest createdAt timestamp and lifecycle as-of time (through 9998-12-31). Defaults to today's UTC boundary. |
status enum Pin the lifecycle status. Omit for a weighted mix.
interval enum Billing cadence. The period uses calendar months or calendar years.
currency string Active ISO 4217 currency code. Case-insensitive; amount uses the currency's 0, 2 or 3 minor-unit digits.
from date Earliest createdAt timestamp. Defaults to 730 days before resolved to.
to date Latest createdAt timestamp and lifecycle as-of time (through 9998-12-31). Defaults to today's UTC boundary.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: id,customer | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: createdAt | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
id | string | Distinct synthetic subscription ID. | sub_82fe1c4a32d90001 |
customer | object | Synthetic customer with id, name and reserved-domain email. | {"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.com"} |
plan | object | Synthetic plan id, name, tier and feature list. | {"id":"pro","name":"Pro","tier":"pro","features":["10 workspaces","Usage reports"]} |
status | string | trialing | active | pastDue | cancelled | paused. | active |
interval | string | monthly | yearly. | monthly |
currency | string | Canonical active ISO 4217 code. | USD |
amount | number | Recurring amount per selected billing interval, calculated in minor units. | 29 |
currentPeriodStart | string (ISO 8601) | Start of the current trial or billing period. | 2025-06-01T00:00:00.000Z |
currentPeriodEnd | string (ISO 8601) | Exclusive end of the current period; always after currentPeriodStart. | 2025-07-01T00:00:00.000Z |
trialEndsAt nullable | string (ISO 8601) | Trial end for trialing records only, else null. | null |
cancelledAt nullable | string (ISO 8601) | Cancellation time for cancelled records only, else null. | null |
nextBillingAt nullable | string (ISO 8601) | Next period boundary for renewing statuses; null when cancelled or paused. | 2025-07-01T00:00:00.000Z |
autoRenew | boolean | True for trialing, active and pastDue; false for cancelled and paused. | true |
createdAt | string (ISO 8601) | Creation time inside from..to and not after currentPeriodStart. | 2025-01-10T12:00:00.000Z |
id string Distinct synthetic subscription ID.
example: sub_82fe1c4a32d90001
customer object Synthetic customer with id, name and reserved-domain email.
example: {"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.com"}
plan object Synthetic plan id, name, tier and feature list.
example: {"id":"pro","name":"Pro","tier":"pro","features":["10 workspaces","Usage reports"]}
status string trialing | active | pastDue | cancelled | paused.
example: active
interval string monthly | yearly.
example: monthly
currency string Canonical active ISO 4217 code.
example: USD
amount number Recurring amount per selected billing interval, calculated in minor units.
example: 29
currentPeriodStart string (ISO 8601) Start of the current trial or billing period.
example: 2025-06-01T00:00:00.000Z
currentPeriodEnd string (ISO 8601) Exclusive end of the current period; always after currentPeriodStart.
example: 2025-07-01T00:00:00.000Z
trialEndsAt string (ISO 8601) nullable Trial end for trialing records only, else null.
example: null
cancelledAt string (ISO 8601) nullable Cancellation time for cancelled records only, else null.
example: null
nextBillingAt string (ISO 8601) nullable Next period boundary for renewing statuses; null when cancelled or paused.
example: 2025-07-01T00:00:00.000Z
autoRenew boolean True for trialing, active and pastDue; false for cancelled and paused.
example: true
createdAt string (ISO 8601) Creation time inside from..to and not after currentPeriodStart.
example: 2025-01-10T12:00:00.000Z
/api/subscriptions?status=active&count=5&seed=42 {
"data": [
{
"id": "sub_958016cfb6a5c85e0000",
"customer": {
"id": "cus_ac58cdd40fb1",
"name": "Kaylie Ziemann",
"email": "subscriber-msng2@example.com"
},
"plan": {
"id": "pro",
"name": "Pro",
"tier": "pro",
"features": [
"10 workspaces",
"Usage reports",
"Priority support"
]
},
"status": "active",
"interval": "monthly",
"currency": "USD",
"amount": 29.51,
"currentPeriodStart": "2026-07-05T09:33:34.727Z",
"currentPeriodEnd": "2026-08-05T09:33:34.727Z",
"trialEndsAt": null,
"cancelledAt": null,
"nextBillingAt": "2026-08-05T09:33:34.727Z",
"autoRenew": true,
"createdAt": "2025-12-05T09:33:34.727Z"
},
{
"id": "sub_78f248abeccba6fd0001",
"customer": {
"id": "cus_45df91c36673",
"name": "Waino Friesen",
"email": "subscriber-7t93x@example.com"
},
"plan": {
"id": "starter",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/subscriptions?status=cancelled&interval=yearly¤cy=EUR&count=4&seed=8 {
"data": [
{
"id": "sub_5a0ad10ec49812580000",
"customer": {
"id": "cus_64a0ce7ed05d",
"name": "Morris Ondricka",
"email": "subscriber-nkjcs@example.com"
},
"plan": {
"id": "pro",
"name": "Pro",
"tier": "pro",
"features": [
"10 workspaces",
"Usage reports",
"Priority support"
]
},
"status": "cancelled",
"interval": "yearly",
"currency": "EUR",
"amount": 295.1,
"currentPeriodStart": "2026-04-16T22:47:21.478Z",
"currentPeriodEnd": "2027-04-16T22:47:21.478Z",
"trialEndsAt": null,
"cancelledAt": "2026-07-03T11:48:31.407Z",
"nextBillingAt": null,
"autoRenew": false,
"createdAt": "2026-04-16T22:47:21.478Z"
},
{
"id": "sub_2b831d0f2fb232510001",
"customer": {
"id": "cus_1ae248f70db8",
"name": "Christian Luettgen",
"email": "subscriber-s3eh6@example.com"
},
"plan": {
"id": "team",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/subscriptions?status=trialing¤cy=KWD&from=2025-01-01&to=2025-12-31&count=6&seed=17 {
"data": [
{
"id": "sub_55abf24f73252bc10000",
"customer": {
"id": "cus_d360556385bf",
"name": "Miss Mary Hilpert-Welch",
"email": "subscriber-wnrrf@example.com"
},
"plan": {
"id": "pro",
"name": "Pro",
"tier": "pro",
"features": [
"10 workspaces",
"Usage reports",
"Priority support"
]
},
"status": "trialing",
"interval": "monthly",
"currency": "KWD",
"amount": 29.505,
"currentPeriodStart": "2025-12-15T17:04:38.137Z",
"currentPeriodEnd": "2026-01-14T17:04:38.137Z",
"trialEndsAt": "2026-01-14T17:04:38.137Z",
"cancelledAt": null,
"nextBillingAt": "2026-01-14T17:04:38.137Z",
"autoRenew": true,
"createdAt": "2025-12-15T17:04:38.137Z"
},
{
"id": "sub_b87eea1d421a411b0001",
"customer": {
"id": "cus_b239200a0eb0",
"name": "Erick Dickinson",
"email": "subscriber-5bn2y@example.com"
},
"plan": {
"id": "team",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates subscription fixtures for SaaS billing screens without borrowing a payment provider's proprietary schema. Each record couples a synthetic customer and plan to a status, monthly or yearly calendar interval, exact per-period amount and an ordered lifecycle.
The nullable fields form an explicit state mask. Only trialing records have trialEndsAt; only cancelled records have cancelledAt; cancelled and paused records have autoRenew=false and no next billing time. Trialing, active and past-due records keep auto-renewal enabled and expose the next period boundary. Monthly and yearly periods use calendar arithmetic, including end-of-month clamping.
from and to constrain createdAt and resolve by default to the two years ending at today's UTC boundary. Status is evaluated at the resolved to date, so seeded lifecycle dates do not drift with milliseconds. The latest supported to date is 9998-12-31, leaving room for the following period boundary. Amounts are built in integer ISO 4217 minor units: JPY is whole, USD has two decimals and KWD has three. All customers, plans and IDs are synthetic.
Use status=trialing|active|pastDue|cancelled|paused; every choice changes the nullable lifecycle fields and renewal behavior, not just the label.
Yes. Monthly and yearly periods use UTC calendar arithmetic with end-of-month clamping rather than assuming every month has 30 days.
Yes. The recurring amount is constructed in integer minor units and rendered with the selected active currency's 0, 2 or 3 digits.
Fake account transactions with realistic merchants, weighted statuses and currency-correct amounts — filter by type, status, amount range and date window.
Fake companies with locale-aware names, industry-flavored catchphrases, founding years, log-distributed headcounts and safe example.com websites and emails.
Complete fake people — name, age-consistent birth date, email, phone, job and address — with working filters for gender, age range and email domain.
Fake e-commerce products with category-themed names, prices in real currencies (whole yen for JPY), valid EAN-13 barcodes, SKUs, ratings and image URLs.