If a customer doesn't pay right away, can I store the token in a database and present it to them again at a later date (for example, 2 days later), so they can checkout again if they didn't complete it or didn't do it?
How to Create One-Time Payments Using Express Checkout
If the SetExpressCheckout request is successful, PayPal returns a token string in the Token response field. The default lifetime of this token is 3 hours
Hth...