Docs
Start with the free check or browser-only evidence tracker, then authenticate only when your review path calls for audit-only Stripe evidence, secure evidence uploads, Revenue Pulse, or findings review.
Start from the free check and choose the review path.
Sign in, then follow guided setup one step at a time.
Connect Stripe in audit-only mode. Stripe changes are disabled in Revenue Linter.
Add app/access evidence so billing-side findings can be confirmed.
Run Revenue Pulse after Stripe and product access evidence are present.
Review impact, review-ready evidence, engineering handoffs, and evidence packets.
Search docs
Common answers for N7X, audit-only Stripe setup, supported systems, free preview limits, Core evidence, and paid review paths.
Open FAQCheck structured CSV or JSON evidence locally for Paddle, Chargebee, custom ledgers, Prisma exports, warehouse views, and other non-native billing stacks.
Open evidence trackerConnect Stripe in audit-only mode. Stripe changes are disabled in Revenue Linter, and restricted keys stay under Advanced fallback setup.
Open Stripe setup guideShare active users, entitlements, plans, and billing-provider references so the review can compare billing state with product access.
Share feature, seat, export, and limit activity so Revenue Expansion can identify active, dormant, and upgrade-ready accounts.
Product usage guideShare terms accepted, login, cancellation, refund, and support history for Evidence Readiness.
Connect PayPal billing events with the setup guide, then run sync and Revenue Pulse.
PayPal setup guidePass campaign and app-user metadata into Stripe so Revenue Expansion can group cohorts and export advisory follow-up lists.
Stripe UTM guide{
"uds_version": "1.0",
"export_id": "local-2026-06-21T12:00:00.000Z",
"generated_at": "2026-06-21T12:00:00.000Z",
"source_type": "json",
"source_system": "local_export",
"records": [{
"uds_version": "1.0",
"record_type": "billing_state",
"idempotency_key": "billing-sub_123-2026-06-21",
"source_system": "stripe_export",
"observed_at": "2026-06-21T12:00:00.000Z",
"provider": "stripe",
"provider_customer_id": "cus_123",
"provider_subscription_id": "sub_123",
"billing_status": "past_due",
"amount_cents": 7900,
"amount_basis": "mrr",
"billing_interval": "month",
"currency": "usd",
"updated_at": "2026-06-21T12:00:00.000Z"
}]
}Validate local structured evidence in the browser before using Import Guard persisted imports, Evidence Guard event monitoring, or findings review.
Copy export scriptsPOST /api/uds/import
Content-Type: application/json
{
"uds_version": "1.0",
"export_id": "warehouse-2026-06-21T12:00:00.000Z",
"generated_at": "2026-06-21T12:00:00.000Z",
"source_type": "warehouse",
"source_system": "billing_warehouse",
"records": [{
"uds_version": "1.0",
"record_type": "billing_state",
"idempotency_key": "billing-sub_123-2026-06-21",
"source_system": "billing_warehouse",
"observed_at": "2026-06-21T12:00:00.000Z",
"provider": "stripe",
"provider_customer_id": "cus_123",
"provider_subscription_id": "sub_123",
"billing_status": "past_due",
"updated_at": "2026-06-21T12:00:00.000Z"
}]
}Requires an authenticated Import Guard workspace or higher. Imported records are normalized, diagnostics run against the latest workspace evidence, and findings are saved with stable fingerprints.
POST /api/uds/events
Authorization: Bearer <ingest_token>
Content-Type: application/json
{
"uds_version": "1.0",
"export_id": "segment-2026-06-21T12:00:00.000Z",
"generated_at": "2026-06-21T12:00:00.000Z",
"source_type": "webhook",
"source_system": "segment",
"records": [{
"uds_version": "1.0",
"record_type": "lifecycle_event",
"idempotency_key": "segment-msg-123",
"source_system": "segment",
"observed_at": "2026-06-21T10:00:02.000Z",
"event_type": "payment_failed",
"provider": "stripe",
"provider_customer_id": "cus_123",
"provider_subscription_id": "sub_123",
"occurred_at": "2026-06-21T10:00:00.000Z"
}]
}Requires an active ingest token from an Evidence Guard workspace or higher. This endpoint accepts lifecycle_event records only.
POST /api/v1/app-state/snapshot
Authorization: Bearer <ingest_token>
{
"users": [{
"externalUserId": "smoke_user_1",
"appStatus": "free",
"entitlementStatus": "free",
"plan": "free"
}]
}Use paid or premium statuses only when you include real matching Stripe customer and subscription IDs.
POST /api/v1/events/support
Authorization: Bearer <ingest_token>
{
"events": [{
"externalUserId": "user_123",
"stripeCustomerId": "cus_123",
"type": "TERMS_ACCEPTED",
"occurredAt": "2026-05-10T15:00:00.000Z",
"raw": { "policyVersion": "2026-05" }
}]
}No-write by design
Revenue Linter mirrors and ingests revenue signals, generates deterministic findings, and packages evidence. Stripe changes are disabled in Revenue Linter. It does not cancel subscriptions, issue refunds, change Shopify orders, mutate your production database, or submit disputes automatically.
Guardrails