Docs
Set up Revenue Linter for the beta review.
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.
- 1Diagnostic
Start from the free check and choose the review path.
- 2Auth and setup
Sign in, then follow guided setup one step at a time.
- 3Connect Stripe
Connect Stripe in audit-only mode. Stripe changes are disabled in Revenue Linter.
- 4Add evidence source
Add app/access evidence so billing-side findings can be confirmed.
- 5Run audit
Run Revenue Pulse after Stripe and product access evidence are present.
- 6Inspect findings
Review impact, review-ready evidence, engineering handoffs, and evidence packets.
Search docs
Find the answer before asking N7X.
FAQ
Common answers for N7X, audit-only Stripe setup, supported systems, free preview limits, Core evidence, and paid review paths.
Open FAQEvidence tracker
Check structured CSV or JSON evidence locally for Paddle, Chargebee, custom ledgers, Prisma exports, warehouse views, and other non-native billing stacks.
Open evidence tracker1. Connect Stripe
Connect Stripe in audit-only mode. Stripe changes are disabled in Revenue Linter, and restricted keys stay under Advanced fallback setup.
Open Stripe setup guide2. Confirm product access
Share active users, entitlements, plans, and billing-provider references so the review can compare billing state with product access.
3. Add usage signals
Share feature, seat, export, and limit activity so Revenue Expansion can identify active, dormant, and upgrade-ready accounts.
Product usage guide4. Add evidence history
Share terms accepted, login, cancellation, refund, and support history for Evidence Readiness.
5. Add PayPal monitoring
Connect PayPal billing events with the setup guide, then run sync and Revenue Pulse.
PayPal setup guide6. Add acquisition context
Pass campaign and app-user metadata into Stripe so Revenue Expansion can group cohorts and export advisory follow-up lists.
Stripe UTM guideStructured evidence batch example
{
"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 scriptsPersisted structured import example
POST /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.
Evidence event endpoint example
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.
Smoke-test snapshot example
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.
Evidence event example
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" }
}]
}Read-only by design
Revenue Linter watches the signals. Your team stays in control.
Revenue Linter mirrors and ingests revenue signals, generates deterministic findings, and packages evidence. It does not cancel subscriptions, issue refunds, change Shopify orders, mutate your production database, or submit disputes automatically.
Guardrails