Checkout deadline and expiry
Create a fresh hosted or embedded request using scenario setup, with an expiresAt date and time. Permanent payment links and requests created without expiry cannot use these targets. No crypto quote is required if you are testing an unpaid checkout.
Stop new payment attempts
Send POST /v1/collections/simulate-expiry and omit quotePaymentId:
{
"paymentRequestReference": "ORDER-10045",
"target": "PAYMENT_DEADLINE"
}
Check newPaymentsDeadline and paymentRequestExpiresAt in the response. Checkout stops accepting new payment attempts. Existing payments can finish during the closing window, the time between these two deadlines.
A request with no payment attempts may expire before the closing window ends, after the configured grace period. This API call does not always change the status to EXPIRED immediately. Check paymentRequestStatus in the response.
Reach final expiry
Send to the same endpoint:
{
"paymentRequestReference": "ORDER-10045",
"target": "PAYMENT_REQUEST"
}
If no payment is still being processed, expect paymentRequestStatus: EXPIRED and payment_request.expired to be queued. Open or refresh checkout and check that it shows the payment request has expired. Paid or cancelled requests cannot be forced to expire.
On a separate request, confirm a partial crypto deposit and then expire checkout. Received funds are preserved and the request becomes EXPIRED. Expire the crypto quote separately before completing the deposits received for that quote. Completion credits those funds without reopening the request.
Both targets leave the crypto quote's expiry unchanged. Repeating either call does not extend a deadline or reopen an expired checkout. If the request is still open, follow pending deposit at expiry to test what happens when a deposit is waiting for confirmation.