# Storefront purchases Use these operations to manage Storefront purchases. Purchases are transactions that have been executed related to the purchase of goods or services. Storefront operations interact directly with the customer, and provide the customer with access to their own data. To use Storefront operations, the customer must be issued a JWT with limited permissions. For more information, see [Create a session with username and password](https://www.rebilly.com/catalog/all/storefront-account/storefrontpostlogin) and [Exchange an authentication token](https://www.rebilly.com/catalog/all/customer-authentication/postauthenticationtokenexchange). Storefront operations are intended to be used directly from an untrusted browser. ## Perform a payment - [POST /storefront/payment](https://www.rebilly.com/static/_spec/catalog/all-3.0/storefront-purchases/storefrontpostpayment.md): Performs a payment for a transaction or an invoice. If the customer's JSON Web Token (JWT) contains a , or value, these values are used instead of the JWT value. The has a higher priority than the . ## Make a purchase - [POST /storefront/purchase](https://www.rebilly.com/static/_spec/catalog/all-3.0/storefront-purchases/storefrontpostpurchase.md): Executes a purchase. A purchase can be completed both with and without authentication. Purchases that use a pre-created payment instrument must use authentication. To preview the purchase before completing it, use the Purchase preview operation. ## Preview a purchase - [POST /storefront/preview-purchase](https://www.rebilly.com/static/_spec/catalog/all-3.0/storefront-purchases/storefrontpostpreviewpurchase.md): Previews a purchase. Use this operation to preview a purchase before completing it. A purchase can be completed both with and without authentication. Purchases that use a pre-created payment instrument must use authentication. > The shipping aspect of this API is experimental and may change to support multiple shipping methods. ## Ready to pay - [POST /storefront/ready-to-pay](https://www.rebilly.com/static/_spec/catalog/all-3.0/storefront-purchases/storefrontpostreadytopay.md): Retrieves available payment methods for a specific transaction or purchase. The order in which the payment methods are displayed to the customer must be the same as the order in the response. The list of payment methods is generated from available gateway accounts and the last matched action on the event. If no rules match for the specific request, all methods supported by the gateway accounts are sent. To invert this behavior, place an all matching rule at the end of the event in the rules engine, and include an empty property for the action. For more information, see Update event rules and Gateway accounts. If this operation to pay is used with a transaction-scoped JSON Web Token (JWT), all fields are ignored except . ## Ready to payout - [POST /storefront/ready-to-payout](https://www.rebilly.com/static/_spec/catalog/all-3.0/storefront-purchases/storefrontpostreadytopayout.md): Retrieves available payment methods for a specific payout amount and currency. The order in which the payment methods are displayed to the customer must be the same as the order in the response. The list of payment methods is generated from available gateway accounts and the last matched action on the event. If no rules match for the specific request, all methods supported by the gateway accounts are sent. To invert this behavior, place all matching rules at the end of the event in the rules engine, and include an empty property for the action. For more information, see Update event rules and Gateway accounts.