--- title: "Purchase Button" slug: "purchase-button" updated: 2026-02-05T20:35:01Z published: 2026-02-05T20:35:01Z canonical: "developer.upgrade.com/purchase-button" --- > ## Documentation Index > Fetch the complete documentation index at: https://developer.upgrade.com/llms.txt > Use this file to discover all available pages before exploring further. # Purchase Button ## Purchase Button When implementing your booking button, there are certain [logic considerations](/v1/docs/payment-status) based on the Payment Status when the Pay Monthly option is selected. ### When to enable/disable the booking button? The purchase/booking button should remain **disabled** throughout the Flex Pay application flow, only **enabled** when `TOKEN_AVAILABLE` or `TOKEN_RETRIEVED` statuses are triggered. ⚠️ **WARNING** If the button is enabled on `TOKEN_AVAILABLE` and for some reason the `OFFER_AVAILABLE` status is triggered again, the button must be disabled. See the below images for reference: ![Booking Button - Disable - Flow](https://cdn.document360.io/ff52d920-99b4-4c2b-9b32-5d5fe9700cb0/Images/Documentation/Booking%20Button%20-%20Disable%20-%20Flow%201.png) ![Booking Button - Enable](https://cdn.document360.io/ff52d920-99b4-4c2b-9b32-5d5fe9700cb0/Images/Documentation/Booking%20Button%20-%20Disable%20-%20Flow%202.png) ### Purchase button styling At this point, you are not required to change your original booking/purchase button; however, make sure to validate the [enable/disable rules](/v1/docs/payment-status) to ensure the button is active only in the valid cases. In addition, confirm that the booking button status is appropriate when selecting between the different payment options and the Pay Monthly. ### Purchase button click handle Once the user has selected Pay Monthly and the corresponding Uplift application was approved, a Flex Pay Payment token is available. The `onChange` handler will fire with a `TOKEN_AVAILABLE` status, signaling that the token can be obtained. At this point, Flex Pay is ready to pay the partner and you are required to [obtain the available token](/v1/docs/step-6-receive-payment). ⚠️ **WARNING** Make sure to obtain the available token **ONLY** when the user clicks on the purchase button by calling `window.Uplift.Payments.getToken()`.