Pending deposit at checkout expiry
Use scenario setup with an expiring hosted or embedded request. Create a pending deposit while its quote is still open. Save its quote ID, deposit ID and exact amount.
Send POST /v1/collections/simulate-expiry:
{
"paymentRequestReference": "ORDER-10045",
"target": "PAYMENT_REQUEST"
}
The expiry timestamp is now in the past, but the pending deposit keeps the request open. Check paymentRequestStatus in the response. A successful API call does not mean the request status is EXPIRED. No expired webhook is queued while the request remains open.
Repeat the original deposit call with only status changed to CONFIRMED. Confirmation of the already detected deposit is permitted after the deadline. If the confirmed amount covers the full remaining balance, the request becomes PAID. Confirmation queues the normal payment and payment request events. Continue with completion.
For partial funding, the request can expire on the next expiry check. Send the expiry request again with target: PAYMENT_REQUEST to run that check immediately. Then expire the partially funded quote and complete the received funds. Expect payment_request.expired when the request changes to EXPIRED. Completion does not change that status.
Retry using the same deposit ID and amount. A new ID creates a separate deposit, which requires an open quote and an UNPAID or PART_PAID payment request. Use the original ID to retry the deposit that is waiting for confirmation.