Order and payment attempt states

Arrows are state transitions, not network calls; illustrative local states

Order and payment attempt states Arrows are state transitions, not network calls; illustrative local states Order: awaiting_payment · required amount not confirmed · Architecture component Order: awaiting_payment required amount not confirmed Order: paid · confirmed amount covered · Architecture component Order: paid confirmed amount covered Attempt: pending · ID + amount persisted · Architecture component Attempt: pending ID + amount persisted Attempt: unknown · persist BEFORE external call · Architecture component Attempt: unknown persist BEFORE external call Attempt: succeeded · provider confirmed success · Architecture component Attempt: succeeded provider confirmed success Attempt: failed · provider confirmed failure · Architecture component Attempt: failed provider confirmed failure confirmed payment covers order claim + begin send retry / reconcile: success definitive failure same DB transaction Legend Backend

Recovery while unknown

  • • Timeout / crash stays unknown. Reconcile using provider reference.
  • • Retry same attempt + key only within provider guarantees.
  • • Refund is a separate compensating operation, not a rollback.