Overview

When a user successfully completes a Checkout Session, Ivy creates an Order object that contains:

  • All the fields from the original CheckoutSession
  • An additional status field indicating the current state of the transaction

Monitoring Payment Status

There are two ways to track the current status of a payment:

1

Poll the Order Status

Make requests to the /order/details endpoint to check the current status

2

Set up Webhooks

Receive real-time updates through Webhooks when the status changes

The Ivy API fires the webhook event order_updated with all Order fields, including the order.status field. Monitor order.status to update your system accordingly.

Status values are consistent between both the API endpoints and webhooks. Learn more about webhooks in the webhook basics section.

Payment Status Types

processing
string

The Order has been created successfully and the end user has started the payment flow.

Terminal Status: No

canceled
string

The payment flow was not completed and the session expired.

Terminal Status: Yes (for all Orders)

waiting_for_payment
string

The user has authorized the payment and completed the session successfully.

At this stage:

  • The bank has sent the money
  • Settlement is still pending
  • Payment is not guaranteed

Terminal Status: Yes (for payments with direct settlement)

failed
string

Money has not arrived in Ivy’s collection account within 6 days and will not arrive anymore.

Terminal Status: Yes (for all Orders)

paid
string

Money has successfully arrived in Ivy’s collection account or is being guaranteed by Ivy.

Important timing notes:

  • Time to reach this status depends on bank transfer speed
  • Can range from instant to 48 hours
  • This status only appears for settlement with Ivy, not for direct settlement

Terminal Status: Yes (for Orders with settlement with Ivy)

in_refund
string

The Order is currently undergoing the refund process. Money is en route to the end user’s bank account.

Terminal Status: No

refunded
string

The Order has been successfully refunded. Money has arrived in the end user’s bank account.

Terminal Status: Yes

partially_refunded
string

The Order has been partially refunded. Money has arrived in the end user’s bank account.

Terminal Status: No

Status Flow Diagram

The following diagram illustrates how Orders progress through different statuses:

It’s important to handle all possible status transitions in your integration, as payments may not always follow the most common path.