Skip to content

Payment Status Mapping ​

Three systems track status independently: WooCommerce (order status), Stripe (payment/invoice status), and MIDDAG Account (entitlement status). This page maps how they relate and what triggers each transition.

Three-system status flow ​

Complete mapping table ​

Initial purchase ​

WC Order StatusStripe Payment StatusEntitlement StatusWhat happened
Pending--(none)Order created, awaiting payment
On Hold--(none)Awaiting manual payment (Boleto generated)
ProcessingIncomplete(none)Payment initiated, not yet confirmed
ProcessingRequires Action(none)3D Secure / SCA verification needed
CompletedSucceededActivePayment confirmed, entitlement created
FailedFailed(none)Payment declined, no entitlement
Cancelled--(none)Order abandoned or timed out, no entitlement

Subscription renewal ​

WC Subscription EventStripe Invoice StatusEntitlement StatusWhat happened
Renewal paidPaidActiveRenewal successful, expiration extended
Renewal failedPast DueActive (grace)First failure, Stripe will retry
Retries exhaustedUncollectibleSuspendedAll retry attempts failed
Payment recoveredPaidActiveLate payment received, auto-reactivated
Subscription expired--ExpiredBilling period ended without renewal
Subscription cancelled--ExpiredCustomer or admin cancelled, active until period end

Refund and dispute ​

WC Order StatusStripe Payment StatusEntitlement StatusWhat happened
RefundedRefundedCancelledFull refund processed
RefundedPartially RefundedActivePartial refund, entitlement unchanged
--DisputedSuspendedChargeback filed, entitlement suspended
--Dispute wonActiveChargeback reversed, entitlement restored
RefundedDispute lostCancelledChargeback upheld, entitlement cancelled

Transition triggers ​

Each entitlement status transition is triggered by a specific event:

FromToTriggerPolicy consulted
(none)Activewoocommerce_order_status_completedProvisioning Policy
ActiveSuspendedPayment retry exhausted / chargeback filedPayment Recovery Policy
SuspendedActivePayment recovered / dispute wonPayment Recovery Policy
SuspendedCancelledsuspended_to_cancelled_days elapsed (default: 30)Payment Recovery Policy
ActiveExpiredEntitlement end_date reached without renewalRenewal Policy
ExpiredActiveRenewal payment confirmedRenewal Policy
ExpiredCancelledexpired_to_cancelled_days elapsed (default: 30)Cancellation Policy
ActiveCancelledFull refund / admin cancellationRefund Policy
CancelledActiveWin-back: new subscription reactivates same entitlement--

Edge cases ​

Partial payment ​

WooCommerce does not natively support partial payments. If a custom flow allows partial payment (e.g., deposit), the order stays in Processing until the full amount is received. No entitlement is created until the order reaches Completed.

Boleto (awaiting clearance) ​

Boleto payments via Banco Inter take 1-2 business days to clear. During this time:

  • WC order status: On Hold
  • Stripe status: N/A (Banco Inter, not Stripe)
  • Entitlement: Not yet created

When the Banco Inter webhook confirms payment, the order moves to Completed and the entitlement is created.

Pix (30-minute timeout) ​

Pix payments have a 30-minute window. If the customer does not pay within this window:

  • The QR code expires
  • The customer can generate a new QR code from the portal (as long as the quote has not expired)
  • The order remains in Pending until payment or timeout

Stripe 3D Secure (SCA) ​

When Stripe requires 3D Secure verification:

  • WC order status: Processing (or Pending, depending on gateway config)
  • Stripe status: Requires Action
  • Entitlement: Not yet created

If the customer abandons the 3D Secure flow, the payment fails and no entitlement is created.

Payment method update during suspension ​

When an entitlement is suspended due to failed payment, the customer can update their payment method through the portal. On the next Stripe retry (or immediate charge), if successful:

  • Stripe status: Succeeded
  • WC subscription: Active
  • Entitlement: Returns to Active automatically

Monitoring ​

Admins can monitor the health of the three-system pipeline through:

  • MIDDAG Account > Dashboard -- Entitlements by status (active, suspended, expired, cancelled)
  • WooCommerce > Orders -- Orders by status
  • MIDDAG Account > Logs -- Provisioning events, webhook processing, sync errors
  • Reconciliation cron -- Runs every 15 minutes to detect Stripe/local divergences