Payments

Checkout return reconciliation

Return reconciliation closes the timing gap between a successful Stripe-hosted checkout and asynchronous webhook delivery.

For CustomerReviewed against the current application

What this feature does

Return reconciliation closes the timing gap between a successful Stripe-hosted checkout and asynchronous webhook delivery.

This guide describes the behavior implemented by Mallello, the people allowed to use it, and the operational checks that keep it dependable.

Detailed workflow

  1. Stripe redirects the browser with an opaque session identifier.
  2. The server retrieves that session using the correct platform or connected context.
  3. It verifies payment/subscription state, account ownership, and metadata.
  4. It idempotently persists the corresponding order or subscription.
  5. The UI refreshes account state and gives a truthful confirmed, pending, or failed result.

Rules and permissions

  • A return URL is not signed proof by itself.
  • Session ownership must match the authenticated user.
  • Reconciliation and webhooks must safely perform the same transition more than once.
  • Provider object mode and connected-account context must match creation.

Failure handling and edge cases

  • If retrieval fails, show pending/support guidance without instructing another payment.
  • A missing webhook secret does not prevent API retrieval but does prevent reliable long-term synchronization.
  • Sessions expire and should not be stored as reusable credentials.