Payment controls and records

An order needs no payment after its total reaches zero

Treat no_payment_required as a separate payment-status value, not proof of a captured payment or a failed charge. For the discounted order in question, verify that the actual Session and store order agree on the items, currency, valid discount and final zero amount due, including shipping and tax. The status alone does not prove why nothing is payable. When the order is genuinely complete with no funds required, preserve that explanation and its order handoff instead of inventing a payment reference or asking the buyer to pay again.

For: A research-only store owner investigating a genuinely discounted order with no amount due and no ordinary charge confirmation.

Updated 2026-10-01

Read the status alongside the order it belongs to

Stripe's Checkout Session reference distinguishes payment_status values paid, unpaid and no_payment_required. It also separates payment_status from Session status: a complete Session can still have payment processing in progress. Read the exact fields on the actual Session and match it to the intended store order before interpreting a missing charge.

For this investigation, the question is whether a valid discount has left this order with nothing to collect. A no_payment_required label alone does not identify the discount, establish the final order total or prove that this is the intended purchase flow. Record the Session's mode and the integration's configured API version along with the totals. If the Session represents a different operation or does not match the order, investigate that mismatch before treating the goods as a completed zero-due purchase.

The cited Session reference was captured at API version 2026-08-26.preview. It establishes the distinction between the fields and values; it does not establish that every platform, connector or zero-total order uses exactly the same status mapping. Preserve the provider's actual value rather than changing it to the value you expected.

Trace the zero to the real discount and remaining charges

Start with the product lines and quantities actually accepted into the order. Record the product subtotal, the discount actually applied and the final amount due. Check the issued promotion's conditions against the order rather than assuming that a displayed percentage proves the whole order is free. The final total must also account for the recorded shipping and tax components without adding a component twice when it is already included.

For WooCommerce, the coupon-management guide distinguishes coupon types and restrictions, including product restrictions, usage limits and individual-use settings. Its free-shipping option requires the linked shipping-method setup. A product discount or a coupon's free-shipping setting by itself therefore does not establish that the order's selected shipping method costs nothing. Inspect the method and charge actually saved on this order.

Keep WooCommerce and Stripe observations attached to their own systems. A WooCommerce coupon configuration does not prove how a connector represented the discount in a Stripe Session. Compare the store's calculated result with the provider's recorded total. A remaining positive shipping charge, tax amount or other amount due prevents the product subtotal alone from establishing a zero-due order. If the two totals disagree, resolve the disagreement before classifying the order.

Record an order outcome without fabricating money movement

Once the intended order, applied discount and final zero amount agree, keep the original order record and Session reference as the evidence for why no funds were required. If no charge exists, do not create a charge identifier, state that a card was debited or describe a nonexistent amount as captured. A missing charge becomes a problem only when the verified transaction actually required a payment or another payment attempt remains unresolved.

Check how the installed connector records a completed zero-due checkout and hands the order to the next operating step. This is a specific integration question: does the actual record preserve the zero amount, the applied discount and the accepted order, or has it become stuck waiting for a charge that the confirmed flow did not require? Do not force a paid status merely to release that handoff.

Separate the absence of a payment requirement from permission to fulfill. The team still needs the completed order and its normal authorization, item, availability and delivery checks. A zero total does not show that those checks happened, and it does not justify repeating an order action already recorded.

Choose the next action from the disagreement that remains

If the records confirm a completed zero-due order, the useful next step is to reconcile its store handoff and customer-facing confirmation with that outcome. The confirmation should accurately describe the order, discount and amount due, without claiming a payment was taken when none was. If a positive amount remains, or the Session is incomplete or belongs to another flow, keep the order unresolved and identify that exact condition for the integration owner.

A Prism checkout consultation can discuss a zero-due order that the store mishandles. Summarize which records agree and which handoff remains open, then confirm scope, responsibilities, fees and terms before work. Keep customer records, private payment URLs and credentials out of the public form. Technical handling of a discount establishes neither provider eligibility for the business nor the correctness of its tax obligations.

Zero-due order check

Use one real order and its matching Session. Record the store and provider values separately where both exist. A zero product subtotal is insufficient: the final total, payment state and completed order handoff must each be supported. Leave absent evidence unknown rather than supplying a payment confirmation.

Worksheet entries are not submitted by Prism’s worksheet and are not saved by the site. Use record types, availability, anonymized observations, or match/mismatch results. Do not enter government identifiers, customer names or addresses, customer messages, receipt-access links, card or bank details, passwords, or keys. Send sensitive documents only through the provider’s verified secure channel.

Zero-due order check. The last column is for temporary notes.
Order factWhere to verify itInterpretationYour finding
Session payment statusActual payment_status and Session status, with the order association, mode and configured API version.no_payment_required differs from paid and unpaid. The value alone does not prove a discount caused the result.
Product subtotalThe accepted item and quantity records in the store and the corresponding provider lines.Confirm the same basket before using either total to explain the order.
DiscountThe applied reduction and the real promotion conditions, including relevant product restrictions and limits.An issued code or advertised percentage is not proof that this order received the intended reduction.
Remaining shipping and taxSelected shipping method, recorded shipping charge, tax components and final total in both systems.WooCommerce free shipping requires the linked method setup. Any remaining amount must be reconciled before concluding nothing is due.
Order handoffCompleted order record and the connector's recorded transition to the next operating step.Confirm the handoff without inserting a fabricated charge or manually asserting a payment happened.
Customer confirmationThe actual confirmation associated with this order and its final amount due.Describe the verified zero-due order accurately; do not claim money was collected if no payment occurred.

These are temporary notes. Leaving or reloading this page may clear them. Worksheet entries are not sent automatically. If you copy notes into the consultation message and submit the form, Prism receives them as part of your request.

Limits

  • The captured Stripe reference uses API version 2026-08-26.preview. It does not guarantee every zero-total purchase returns a particular status or every connector handles it identically.
  • WooCommerce coupon guidance concerns core coupon behavior; installed extensions can alter handling. Store settings do not prove provider-side totals.
  • This check does not determine tax liability, provider eligibility or fulfillment authorization. It distinguishes a verified zero-due order from missing payment evidence.
  • Exclude card data, authentication codes, private payment tokens, API secrets, full bank details and identity documents from the worksheet and public form.

Sources

  • Checkout Session object — checked 2026-09-29. The captured API reference separates Session status from payment_status and distinguishes paid, unpaid and no_payment_required. A complete Session can still have payment processing in progress. The status distinction alone does not identify the cause of a particular order's zero total.
  • WooCommerce coupon management — checked 2026-09-29. Core coupons have distinct types, restrictions and usage limits. Free shipping requires the linked shipping-method setup, and extensions may change behavior. This does not establish a particular order's shipping or tax amount.
  • Prism solutions — checked 2026-09-21. Consultation scope, fees and terms are discussed before work. Provider eligibility and account terms remain the provider's decision.

Get help with checkout

Is this happening on your own store?