Skip to content
Coritan Docs

Follow up unpaid checkouts

See the checkouts whose payment failed or was not finished in time, what the payment provider said, and the email each shopper got.

View as Markdown

Unpaid checkouts lists the checkouts that started a payment and have no order from it. Use it to see which payments failed and what the payment provider said, which shoppers did not finish paying in time, and whether each one got the unpaid checkout email. A checkout becomes an order only once its payment comes in, so none of these is in Orders.

  • You need the Tier 1 support role or higher to open Unpaid checkouts.
  • To email each shopper a link back to their cart, turn on the Unpaid checkout flow in Flows. While it is off, the page says so above the list, with Open Flows.

A checkout starts when the shopper starts a payment, and goes unpaid in one of two ways:

  • Payment failed: the payment provider declined the payment or reported that it failed. The row shows what the provider said, such as Your card was declined.
  • Expired: the shopper did not finish paying within Unpaid checkouts end after, set in Settings: from 15 to 1,440 minutes, and 60 minutes unless set. The time counts from when the payment started, or from when the shopper came back to the same payment. Coritan then cancels the payment. A payment that the provider reports as still processing does not expire, because its money may still arrive.

A shopper who tries to finish an expired payment is asked to start the payment again. The cart stays open, so they can pay from the email's link or from your storefront.

A payment can still succeed after its checkout expired, such as when the shopper finishes paying in another window. Coritan places the order as usual when the money arrives within 7 days of the expiry, the shopper started no other payment for the cart, and the cart still costs what was paid. The checkout then shows Paid late with Open the order for 30 days.

Otherwise no order is placed, and Coritan refunds a card or PayPal payment to the shopper. Money your payment page took is yours to refund, as Refund what could not become an order describes.

  1. In the dashboard, open the organization, then Commerce, then Sales, then Unpaid checkouts.
  2. The page opens on Unpaid. Choose Awaiting payment to see the payments that shoppers have started and not finished yet. Each shows how many checkouts it holds, when it holds any.
  3. To narrow the list, search by part of an email address, or choose Live only or Test only instead of Live and test.

The list shows 50 checkouts a page, newest payment first. Each row has:

  • Shopper: the email address on the cart, and how many items it holds.
  • Payment method: how the shopper chose to pay.
  • Started: when the latest payment started.
  • Went unpaid, under Unpaid only: Payment failed with what the provider said, or Expired, and when it happened.
  • Follow-up email, under Unpaid only: the unpaid checkout email, as the next table describes.
  • Amount: what the payment asked for.
Follow-up email What it means
Scheduled It goes out at the time shown, which Send after the checkout goes unpaid in the flow sets.
Sent It went out at the time shown.
Skipped It was not sent, and the row says why. Why an email was skipped lists the reasons.
Failed It could not be sent. It is not tried again.
Cancelled The cart was checked out, emptied or expired before the email was due.
— No email was written: the flow is off, the cart has no email address, or the checkout went unpaid more than two days before the flow was turned on. A test checkout shows Test emails are off until Email test carts and orders is on in Flows.
  • A checkout leaves Unpaid once the shopper pays it, and its order appears in Orders.
  • A shopper who starts a new payment moves the checkout back to Awaiting payment.
  • A cart that nobody changes for 30 days is closed, and leaves the list.
A shopper says they paid, but the checkout shows Expired
The money may still be on its way. If it arrives within 7 days of the expiry, Coritan places the order, and the checkout shows Paid late. If it arrives later, or the shopper started another payment or changed the cart, Coritan refunds it, as Payments that arrive late describes.
A payment has waited longer than Unpaid checkouts end after and is still under Awaiting payment
The provider reports the payment as still processing, so its money may still arrive. Or the shopper came back to the payment, which starts the time again.
No checkout has a Follow-up email
The Unpaid checkout flow is off. Turn it on in Flows. For test checkouts, also turn on Email test carts and orders.
Unpaid checkouts is missing from Sales
Your role is below Tier 1 support. Ask an owner or admin to change your role.

GET https://api.coritan.com/api/v1/orgs/{org_slug}/commerce/checkouts lists the same checkouts, and needs the commerce.orders:read scope. state is awaiting_payment, the default, or unpaid. q searches the email address, livemode is true for live checkouts or false for test ones, and limit (1–200, 50 by default) and offset page the list. count is every checkout the filters match.

Shell
curl "https://api.coritan.com/api/v1/orgs/acme/commerce/checkouts?state=unpaid&livemode=true" \
  -H "Authorization: Bearer $CORITAN_TOKEN"
JSON
{
  "checkouts": [
    {
      "id": "cart_01j8z4a7b2c9d3e6f5g8h1k0m4",
      "email": "alex@example.com",
      "item_count": 2,
      "amount": 4500,
      "currency_code": "EUR",
      "provider": "stripe",
      "started_at": "2026-10-07T09:12:00Z",
      "unpaid_at": "2026-10-07T09:14:31Z",
      "reason": "failed",
      "message": "Your card was declined.",
      "comeback": {"status": "scheduled", "scheduled_at": "2026-10-07T09:24:31Z", "sent_at": null, "error": null},
      "order_id": null,
      "livemode": true
    }
  ],
  "count": 1,
  "limit": 50,
  "offset": 0
}
  • id is the cart's ID, and amount is in the currency's smallest unit.
  • unpaid_at, reason (failed or expired) and message are null under awaiting_payment. message is set only for a failure.
  • comeback is the unpaid checkout email: null until one is written, else its status (scheduled, sent, skipped, failed or canceled), when it is or was due, when it was sent, and the error that says why it was skipped or failed.
  • order_id is the order's order_ ID once a late payment placed it.

Your organization webhooks receive commerce.checkout.unpaid once for each payment that goes unpaid, as Receive commerce webhooks describes.

API operations on this page

MethodPathWhat it does
GET/api/v1/orgs/{org_slug}/commerce/checkoutsThe store's checkouts: carts that started a payment, read through their latest payment