> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shoppex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout

> How a Shoppex checkout session is created and completed.

A Shoppex checkout is the hosted page where a buyer pays for an order, on whichever gateway you have connected.

## Three ways to a checkout

<CardGroup cols={3}>
  <Card title="Storefront" icon="store" iconType="duotone">
    The buyer browses your shop, adds a product to the cart, and pays on the hosted checkout page.
  </Card>

  <Card title="Payment link" icon="link" iconType="duotone">
    Copy a link from a product's detail page and share it directly. The buyer lands on checkout for that one product.
  </Card>

  <Card title="Your own checkout" icon="code" iconType="duotone" href="/developers/payments">
    Create the checkout session from your own app through the Developer API.
  </Card>
</CardGroup>

The storefront route fits digital products, subscriptions, and simple shops that do not need a custom checkout. A payment link fits a single product shared on social media, in an email, or in a chat. Your own checkout fits an app or website that needs full control over the buyer flow.

## What the buyer sees

The buyer sees the payment methods you turned on for the shop, and pays on the hosted checkout page for the gateway they pick. After payment clears, delivery follows the fulfillment mode of the product. See [Products](/selling/products) for what each mode delivers.

## Test mode

Turn on **Test mode** in **Settings** before you go live, so a test payment does not move real money.

| Card       | Number                | Result                  |
| ---------- | --------------------- | ----------------------- |
| Visa       | `4242 4242 4242 4242` | Success                 |
| Mastercard | `5555 5555 5555 4444` | Success                 |
| Declined   | `4000 0000 0000 0002` | Declined                |
| 3D Secure  | `4000 0025 0000 3155` | Requires authentication |

Use any future expiry date and any three-digit CVC.

<Note>
  These numbers work for Stripe. PayPal and crypto gateways each have their own separate test mode.
</Note>

## Building your own checkout

<Note>
  For invoice and payment link endpoints, webhook signatures, and gateway-specific request fields, see [Payments](/developers/payments) in the developer section.
</Note>
