Release 2025-12-16
This release enhances checkout lifecycle management, payment transparency, and buyer experience customization.
Platforms gain complete visibility into checkout expiration states through three new webhooks, while gaining control over checkout lifetimes with configurable expiration times. Payment details now include card classification information to help understand processing fees.
Additionally, platforms can customize the buyer redirect experience by specifying different URLs for successful and failed payment outcomes.
Webhooks on checkout expiration
Track checkout lifecycle with expiration webhooks. When a checkout reaches its lifetime without completion, the platform receives automated notifications about its final state. Three new webhooks provide visibility into different expiration scenarios:
checkout_unattempted: sent when the checkout lifetime is reached without any payment attempt. The buyer abandoned the checkout before initiating the payment process.checkout_failed: sent when the checkout lifetime is reached with at least one payment attempt, but all attempts failed. This webhook may arrive days after checkout creation, depending on the payment method's processing time (e.g., SEPA Direct Debit may take 3 business days to confirm the payment completition).checkout_in_progress: sent when the checkout lifetime is reached, but a payment attempt is still being processed. Banking payment methods are typical scenarios where payment processing can take several days but also includes 3DS authentication for cards that expand longer than the checkout lifetime.
These webhooks enable you to automate processes in your platform like cancelling orders, buyer communications based on checkout outcomes or decide to recreate a new checkout.
{
"id": "evt_4jbfjc3dfybnw9f15en0rve844",
"type": "checkout_unattempted",
"version": "v2",
"occurred_at": "2025-10-24T13:52:57.312Z",
"data": {
"id": "cko_44678r08jtm8zbt227tzhc4nw5",
"reference": "ORD-202510-0232"
}
}
Define checkout expiration
Control when checkouts expire with configurable expiration times. Platforms can now set custom checkout lifetimes using
the expires_in field, allowing checkout expiration anywhere from a minimum of 5 minutes to a maximum of 5 hours. This
flexibility enables platforms to align checkout expiration with their specific business requirements, whether for flash
sales with tight time constraints or standard purchases requiring more time.
The field accepts timespan format (HH:mm), making it easy to specify the exact duration before a checkout expires.
{
"reference": "ORD-202510-0232",
"amount": 1000,
"currency": "EUR",
"description": "Order #202510-0232",
"expires_in": "00:45",
[...]
}
Card kind and segment in the details
Access detailed card classification in payment details. Payment responses now include kind (debit or credit) and
segment (consumer or business) for successful card payments, providing deeper insight into the card type used for each
transaction. This information helps platforms better understand processing fees for successful payments, as different
card types often carry different fee structures.
Use these fields for accurate fee reconciliation, financial reporting, and analyzing payment patterns across card types.
{
"id": "pay_4a4m2pjycdb1jbj68h1rvk9kcz",
[...]
"method": {
"type": "card",
"display_hint": "424242******4242",
"card": {
"scheme": "visa",
"holder_name": "Jane Doe",
"first_digits": "424242",
"last_digits": "4242",
"expiry_month": 12,
"expiry_year": 2030,
"kind": "debit",
"segment": "consumer"
}
},
[...]
}
Checkout redirect URLs per status
Customize buyer redirect experience based on payment outcome. Platforms can now specify different redirect URLs for
successful and failed payments using redirect.completed and redirect.failed fields. This enables tailored
post-payment experiences, directing buyers to appropriate pages based on whether their payment succeeded or failed.
The redirect.default field remains required as a fallback, ensuring buyers are always redirected even if
status-specific URLs aren't provided. This flexibility allows platforms to create optimized user journeys for both
success and failure scenarios, such as showing order confirmations for successful payments or retry options for failed
ones.
{
"reference": "ORD-202510-0232",
"amount": 1000,
"currency": "EUR",
"description": "Order #202510-0232",
[...]
"redirect": {
"default": "https://titanauto.com/checkout/completed?order=202510-0232",
"completed": "https://titanauto.com/checkout/completed?order=202510-0232",
"failed": "https://titanauto.com/checkout/failed?order=202510-0232"
},
"webhooks": {
"url": "https://webhooks.titanauto.com/getpaid"
}
}