An open-source, local-first toolkit that decodes payment provider errors, webhooks and event logs, rebuilds the transaction timeline and explains what looks wrong, without sending the data anywhere.
When a payment integration misbehaves, the evidence is a pile of provider-specific JSON, XML and webhook deliveries. Reading it means knowing each provider's formats, error codes and delivery habits, and the data is often too sensitive to paste into an online tool.
When a payment integration misbehaves, the evidence is a pile of provider-specific JSON, XML and webhook deliveries. Reading it means knowing each provider's formats, error codes and delivery habits, and the data is often too sensitive to paste into an online tool.
Key constraints
No payment data may leave the device
No AI or network calls in the diagnostic path
Provider documentation is the only source of truth
Refetching the subscription is the right fix for Stripe snapshot events. Deriving lifecycle callbacks from the event while guarding them with the stored row meant a retried event could skip onTrialEnd, onTrialExpired and onSubscriptionCancel.
Payload ecommerce put the whole cart into Stripe PaymentIntent metadata, so checkout failed at about eight items. Removing it fixed checkout and removed the only item-drift check; a 64-character hash keeps both.
A paypal-js pull request made orderID optional to support vault flows, a breaking type change for every order integration. Typing onApprove per branch of an existing union fixed it, and the author adopted the suggestion.
A stripe-node change stops the endpointFetch HTTP client from discarding response headers. Two follow-ups: retry-after does not affect backoff, and a plain object makes header lookups case-sensitive.
A fix for missing carrier, phone and tracking number in stripe-react-native shipping details was stuck on a failing CI check. The remaining diff was not in the pull request at all, and the type still accepted a field that the native SDKs drop.