Payment Truth for WooCommerce

Logo

Read-only WooCommerce Stripe reconciliation for payment status, amount, currency, and refund mismatches.

View the Project on GitHub moxianyu6975-cpu/payment-truth-for-woocommerce

Frequently asked questions

What problem does Payment Truth solve?

It finds recent WooCommerce orders whose stored payment evidence disagrees with the matching Stripe PaymentIntent or charge. The initial release checks status, gross amount, currency, refunded total, stale pending orders, and missing provider references.

Does a mismatch prove that a Stripe webhook failed?

No. A finding proves only that the WooCommerce and Stripe records disagreed when scanned. Delayed webhooks, interrupted checkout, manual edits, retries, plugin conflicts, or an incorrect reference can produce similar evidence.

Does the plugin change orders or move money?

No. Version 0.2.0 is deliberately read-only. It never captures, refunds, retries, replays webhooks, or changes an order status.

Does it need my Stripe secret key?

No. Payment Truth uses the authentication already configured by the official WooCommerce Stripe Gateway and does not store Stripe credentials.

Which Stripe plugin is supported?

The initial release supports the official WooCommerce Stripe Gateway and payment method IDs equal to stripe or beginning with stripe_. Other Stripe extensions may store different references and are not queried.

Can WooCommerce and Stripe amounts really differ?

The values stored in the two systems can disagree after manual edits, unusual capture flows, interrupted integrations, or other data drift. Payment Truth normalizes the WooCommerce total into the currency’s smallest unit and compares it with authoritative Stripe evidence. A finding asks you to investigate; it does not claim Stripe processed the wrong amount.

Does it store customer or card data?

The findings table stores normalized reconciliation evidence such as order ID, provider object ID, statuses, amounts, currency, issue type, and timestamps. It does not store customer names, addresses, email addresses, card data, or Stripe credentials.

Why is a status mismatch not shown immediately?

Payment updates are asynchronous. Payment Truth waits five minutes before reporting status disagreements and scans hourly by default. Administrators can also run a bounded manual scan.

Why did the scan finish with provider read errors?

Payment Truth could not read one or more matching Stripe objects. The dashboard explains the likely cause and next step. Common causes include an order and gateway connection using different Stripe accounts or test/live modes, a deleted or invalid provider reference, or a failed gateway request. Findings from records read successfully remain valid.

Where can I install it or ask for help?

Install it from the WordPress.org plugin directory and use the official support forum for setup and usage questions.

How can I help validate it on a real store?

Follow the ten-minute real-store validation and submit the linked redacted feedback form. Test-mode, staging, live, healthy, empty, and errored scans are all useful. Never share a store URL, customer or order data, Stripe object IDs, credentials, webhook details, or unredacted logs.