Month 2 availability. The Stripe mirror ships after Resend and Twilio. Check the status page for the current release state.
Stripe-Signature header matching Stripe’s exact scheme (timestamp + signature, v1=…, tolerant of tampering detection).
Mirror URL
https://stripe-a7k2.mirra.run.
SDK compatibility
All official Stripe SDKs work against the mirror with zero code changes when routed via the TLS proxy:- Node
- Python
- Ruby
- Without the TLS proxy
Supported surface
Resources
Customers
Customers
Full CRUD. Customer metadata, email, default payment method, address, tax ID. Search by email.
Subscriptions
Subscriptions
Full lifecycle —
trialing → active → past_due → canceled and the variants (unpaid, incomplete, incomplete_expired). Prorations. Quantity changes. Plan changes. Cancellation at period end vs. immediate.Payment intents
Payment intents
Create, confirm, capture, cancel. Status transitions (
requires_payment_method → requires_confirmation → succeeded / requires_action). 3DS flows simulated via /_mirra/simulate.Invoices
Invoices
Subscription-generated invoices, manual invoices, line items, tax, discount application. Finalize, void, mark uncollectible. Dunning timeline.
Products & Prices
Products & Prices
Full CRUD on products, prices, price lookup keys. Metered vs. licensed. Tiered pricing.
Coupons & Promotion Codes
Coupons & Promotion Codes
Create, apply to subscriptions and invoices. Percent-off, amount-off. Duration types (once / forever / repeating). Redemption limits.
Refunds
Refunds
Create, retrieve, list. Reason tracking. Partial refunds. Webhook dispatch.
Events & Webhook Endpoints
Events & Webhook Endpoints
Register endpoints, list events, retry failed deliveries via
/_mirra/webhooks/retry.Webhooks
All standard Stripe webhook event types fire on their correct schedule with correct signatures:customer.created,customer.updated,customer.deletedcustomer.subscription.created,customer.subscription.updated,customer.subscription.deleted,customer.subscription.trial_will_endinvoice.created,invoice.finalized,invoice.paid,invoice.payment_failed,invoice.payment_succeeded,invoice.upcoming,invoice.voidedpayment_intent.created,payment_intent.succeeded,payment_intent.payment_failed,payment_intent.requires_actioncharge.succeeded,charge.failed,charge.refundedpayment_method.attached,payment_method.detached,payment_method.updated
stripe.webhooks.constructEvent() — no changes from production code.
Built-in fixtures
stripe:empty
stripe:empty
No customers, no subscriptions, no products. A blank Stripe account.
stripe:subscription-lifecycle
stripe:subscription-lifecycle
One customer with a subscription in
trialing, one in active, one in past_due, one canceled. Products and prices wired up. Good for testing state transitions.stripe:failed-payments
stripe:failed-payments
Three customers with failed payment methods. Dunning state. Next retry scheduled. Good for testing your invoice.payment_failed handler.
stripe:dunning-active
stripe:dunning-active
Customer with active dunning — multiple failed invoices, subscription in
past_due, retry schedule progressing. Good for testing cancellation-after-dunning flows.Coverage gaps
Gaps are documented and tracked as GitHub issues. Current gaps for Stripe:- Stripe Tax — not mirrored. Requests to
/v1/tax/*return a 501. - Connect — standard accounts supported; Express and Custom not yet.
- Financial Connections — not mirrored.
- Radar rules — simulated via
/_mirra/simulateevents, not rule-engine-driven. - Terminal — not mirrored.
Drift state
Last vendor diff: see the status page. Drift SLA is 7-day detect, 14-day fix for critical changes. Current mirror version: seex-mirra-version response header after any request.
Simulating events
Stripe has real-world triggers that don’t exist in a pure code path — a payment failing after 14 days, a webhook retrying, a radar rule firing. The/_mirra/simulate endpoint exposes these explicitly:
Where to go next
Resend
The email mirror.
Twilio
The SMS mirror.
First scenario
Run a scenario against a mirror end-to-end.