Skip to content

How to Troubleshoot a Payment That Did Not Settle an Order

What This Task Does

This task helps you figure out why an order still shows money due after a payment attempt, confirmation flow, or sync attempt.

Use it when the order review screen shows a remaining balance, a payment looks stale, or the payment path you chose did not complete the order the way you expected.

Before You Start

Make sure:

  • the order already exists
  • you can open the order review screen in the admin
  • you know which payment path was used or attempted
  • the relevant payment gateway is available for that order
  • you understand whether the order was confirmed with payment or confirmed without taking payment

This guide stays inside the packaged order review and payment flows. It does not assume a separate shared payment-management page exists.

Steps

  1. Open the order you are investigating.
  2. Review the financial summary first:
    • subtotal
    • total
    • payments already recorded
    • payment balance or amount still due
  3. Check whether the order already has a payment row listed under the financial details section.
  4. If the order was confirmed through the payment-method modal, reopen that workflow and verify which payment path was selected:
    • Stripe card charge
    • manual payment
    • credit-line or checkout-style confirmation flow
  5. If the payment was supposed to come from Stripe, confirm whether the order payment exists locally and whether it looks stale.
  6. If your project exposes the sync action, use it to refresh the local payment record when the Stripe charge exists but the order still looks unpaid.
  7. If the payment was manual, verify the amount, payment method, and reference number that were entered.
  8. If the order still shows money due after the payment is saved or synced, compare the payment amount to the amount due and confirm that the chosen payment path was allowed for the gateway on that order.
  9. If the order was confirmed without taking payment, treat the remaining balance as expected until a separate payment is recorded.

What Happens Next

If the payment was only stale locally, a sync or refresh should update the order summary and reduce the amount due.

If the payment path failed before settlement, the order will still show a balance until you create or sync a valid payment through the same order flow.

If the order was confirmed without payment, the order can still be valid while the balance remains open.

Common Mistakes

  • checking only the order total and not the payment rows
  • assuming a saved payment method is the same thing as a completed payment
  • retrying a payment without verifying the gateway and payment path first
  • creating a manual payment with the wrong amount or reference number
  • expecting a Stripe payment to update locally without a sync when the record is stale
  • assuming order confirmation always means payment was collected

Sources

  • packages/framework/src/Http/Controllers/Api/Admin/OrderPaymentsController.php
  • packages/framework/src/Models/OrderPayment.php
  • packages/framework/src/Models/Order.php
  • packages/admin/src/Livewire/Admin/Order/Actions/ConfirmOrderButton.php
  • packages/admin/resources/views/components/order/financial-details/block.blade.php
  • packages/admin/resources/views/components/order/financial-details/payments-block.blade.php
  • packages/admin/resources/views/components/order/actions/confirm-payment-dialog.blade.php
  • packages/framework/src/Actions/Stripe/ChargeStripeCustomerCard.php
  • packages/framework/src/Actions/Stripe/SyncStripeCheckoutToOrderPayment.php
  • packages/framework/src/Actions/Stripe/SyncStripeChargeToOrderPayment.php
  • packages/framework/src/Actions/PaymentGateway/Manual/CreateOrderPayment.php