Unsuccessful charges / payment not made

My app requires the customer (not with a user account) to update an existing record with their information before providing payment.

When payment is made, that record is put away and is no longer accessible to other customers.

If the customer changes their mind at checkout, or their charge attempt is unsuccessful, how do I clear their update in order other customers can then input their details and make a payment for that same record?

It would be ideal if the record was hidden whilst a customer is 'checking out' to prevent other customers trying to update and pay. Then after 10 minute of no payment, the record becomes available again.

Hope this makes sense and I hope someone can help as really struggling with this.

Kind regards,

Mike