Stripe PaymentIntent
Status, amount, currency, customer reference and WooCommerce order metadata.
Reproduce one controlled mismatch: Stripe succeeds, the webhook path is acknowledged, and the expected WooCommerce order transition does not complete. Inspect the evidence and generate the same deterministic reconciliation result.
This is not a client case study or claimed production incident. Every ID, timestamp and state is synthetic.
No client, customer or production-store data.
The page does not accept keys, secrets or uploads.
The expected result is evidence for manual review.
01 · Event clock
The fixture uses one fixed UTC sequence so the reconciliation result can be reproduced without interpreting changing live data.
Synthetic order WC-LAB-1042 enters pending payment with a £129.00 GBP total.
pi_lab_7f3a_redacted carries metadata linking it to WooCommerce order 1042.
The synthetic event payment_intent.succeeded is created in test mode.
The lab models an acknowledged event whose expected WooCommerce transition still does not complete.
Stripe remains succeeded while WooCommerce remains pending after the five-minute fixture window.
02 · State contract
Controls must agree before the state mismatch is meaningful. The lab deliberately preserves identity and amount controls while the order transition fails.
| Evidence field | Expected | Observed | Result |
|---|---|---|---|
| Stripe payment state | succeeded | succeeded | control |
| WooCommerce order state | processing | pending | mismatch |
| Order transaction ID | pi_lab_7f3a_redacted | absent | mismatch |
| Payment-complete order note | present | absent | mismatch |
| Amount and currency | 12900 / GBP | 12900 / GBP | control |
03 · Evidence map
The downloadable fixture covers the synthetic Stripe event and reconciliation output. A real review must preserve and compare the surrounding store-side evidence as well.
Status, amount, currency, customer reference and WooCommerce order metadata.
Event ID, type, creation time, mode, request reference and object snapshot.
Endpoint, attempt time and HTTP response. A 200 response alone does not prove the order changed.
Order status, total, currency, transaction ID, gateway fields and customer-safe reference.
Payment-complete notes, validation errors, handler messages and status transitions.
Failed, pending or delayed background actions around the synthetic event window.
04 · Reconciliation protocol
Run the checks in order. The protocol stops at classification and never treats a mismatch as permission to edit the order.
Require synthetic=true and not_for_replay=true. Reject credentials, signatures and real customer data.
Read all timestamps in UTC and use the fixed 09:41:22–09:46:38 lab window.
Join PaymentIntent pi_lab_7f3a_redacted to WooCommerce order 1042 through explicit metadata.
Compare amount_minor=12900 and currency=GBP before interpreting payment state.
Map Stripe succeeded to the fixture's expected WooCommerce processing state, then record the observed pending state.
Check event delivery, the transaction ID, order notes, gateway logs and queued actions. Do not treat HTTP 200 as proof of completion.
Write payment_state_mismatch and manual_confirmation_before_order_edit to the CSV. Do not change the order.
05 · Static artifacts
The source data is shown here as well as provided as static files. No form, login or credential submission is required.
Small JSON fixture with redacted lab IDs and an explicit not-for-replay boundary.
{
"fixture_version": "1.0",
"fixture_id": "woo-stripe-lab-001",
"fixture_type": "synthetic_stripe_event",
"synthetic": true,
"not_for_replay": true,
"event": {
"id": "evt_lab_a91c_redacted",
"object": "event",
"api_version": "2024-06-20",
"created": 1783849297,
"livemode": false,
"type": "payment_intent.succeeded",
"pending_webhooks": 1,
"request": {
"id": "req_lab_42df_redacted",
"idempotency_key": "lab-order-1042-attempt-1"
},
"data": {
"object": {
"id": "pi_lab_7f3a_redacted",
"object": "payment_intent",
"amount": 12900,
"currency": "gbp",
"status": "succeeded",
"customer": "cus_lab_31bd_redacted",
"metadata": {
"woocommerce_order_id": "1042",
"fixture": "synthetic"
}
}
}
}
}One deterministic CSV row recording the mismatch without changing either system.
fixture_id,reconciled_at,stripe_payment_intent,stripe_state,woocommerce_order,observed_woocommerce_state,expected_woocommerce_state,amount_minor,currency,webhook_event,delivery_http_status,order_note_found,transaction_id_found,classification,recommended_action
woo-stripe-lab-001,2026-07-12T09:46:38.000Z,pi_lab_7f3a_redacted,succeeded,1042,pending,processing,12900,GBP,payment_intent.succeeded,200,false,false,payment_state_mismatch,manual_confirmation_before_order_edit06 · Positive controls
A useful mismatch report distinguishes aligned identity evidence from the one transition that failed.
07 · Boundaries
The fixture demonstrates a reconciliation method. It does not diagnose a reader's store or establish a production root cause.
Expected lab outcome
The deterministic output should classify payment_state_mismatch and recommend manual_confirmation_before_order_edit. That is the end of the lab. It does not claim a repair was performed.
fixture_id=woo-stripe-lab-001
stripe_state=succeeded
woo_state=pending
result=payment_state_mismatch
Use the evidence
Use the guide for manual checks, the free scanner for read-only comparison, or Payment Rescue when a real customer/order decision is blocked.