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

# Quickstart

> Create a plan, open a checkout, and take a sandbox payment.

This walks through one complete payment in sandbox. Nothing here moves real
money, and the same calls work against live once you swap the key.

<Frame caption="The page your customer opens, carrying your name and the amount">
  <img className="block dark:hidden" src="https://mintcdn.com/reclack/i_PBmgTWOy1QpaWl/images/hosted-checkout.png?fit=max&auto=format&n=i_PBmgTWOy1QpaWl&q=85&s=fbe17b6aa7836ee4002eb91d570c9509" alt="The hosted checkout page: the statement on the left with the amount and the total due, and the wallet form on the right with the network, the detected wallets and the spending limit explained in words." width="3060" height="3016" data-path="images/hosted-checkout.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/reclack/hSqUHJp0KVXvwTsQ/images/hosted-checkout-dark.png?fit=max&auto=format&n=hSqUHJp0KVXvwTsQ&q=85&s=62b0e012b0ff3e31ad161e3df55cc916" alt="The hosted checkout page: the statement on the left with the amount and the total due, and the wallet form on the right with the network, the detected wallets and the spending limit explained in words." width="3060" height="3016" data-path="images/hosted-checkout-dark.png" />
</Frame>

<Note>
  You need a Reclack account and a sandbox API key. Create one in the dashboard
  under **Developers**, then **API keys**. Sandbox keys start with
  `rk_sandbox_`.
</Note>

<Steps>
  <Step title="Set your key">
    Export the key so the examples below can use it.

    ```bash theme={null}
    export RECLACK_KEY="rk_sandbox_your_key_here"
    export RECLACK_API="https://api.reclack.com"
    ```
  </Step>

  <Step title="Create a product and a price">
    A product is what you sell. A price says how much it costs, how often it is
    billed, and on which networks it can settle. You can create both in one
    call.

    ```bash theme={null}
    curl -X POST "$RECLACK_API/v1/products" \
      -H "Api-Key: $RECLACK_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "Pro Plan",
        "description": "Everything in Starter, plus priority support",
        "price": {
          "amount": "29.00",
          "cadence": "monthly",
          "networks": ["base"]
        }
      }'
    ```

    The response carries the product with its price nested inside. Keep the
    price id: it is what a checkout session is built from.
  </Step>

  <Step title="Create a customer">
    Customers are how payments, invoices and subscriptions stay attached to a
    person rather than to an address.

    ```bash theme={null}
    curl -X POST "$RECLACK_API/v1/customers" \
      -H "Api-Key: $RECLACK_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "email": "dana@acme.dev",
        "name": "Dana Okafor",
        "external_id": "user_4821"
      }'
    ```

    `external_id` is your own identifier. Sending it means you can look a
    customer up later without storing our id.
  </Step>

  <Step title="Open a checkout session">
    A checkout session is a hosted page your customer opens to pay. Pass the
    price id and the networks you are willing to accept.

    ```bash theme={null}
    curl -X POST "$RECLACK_API/v1/checkouts" \
      -H "Api-Key: $RECLACK_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "price_id": "price_2Pb8xk9",
        "networks": ["base"],
        "customer": { "email": "dana@acme.dev" },
        "expires_in": 3600,
        "metadata": { "plan": "pro" }
      }'
    ```

    The response includes a `url`. Open it in a browser to see exactly what
    your customer sees.
  </Step>

  <Step title="Pay it in sandbox">
    The hosted page lists the wallets your browser exposes. Connect one on a
    test network, approve the spending limit, and confirm the payment.

    Sandbox runs on test chains, so you need test funds rather than real ones.
    The page tells you which network it expects.
  </Step>

  <Step title="Listen for the result">
    Create a webhook endpoint in the dashboard, then wait for the events. A
    completed subscription checkout produces `checkout.completed`,
    `payment.succeeded` and `subscription.created`.

    ```bash theme={null}
    curl "$RECLACK_API/v1/events" \
      -H "Api-Key: $RECLACK_KEY"
    ```

    That endpoint lists everything Reclack has emitted for your workspace, which
    is handy before your webhook handler exists.
  </Step>
</Steps>

## What you have now

A product with a price, a customer, a completed checkout, and a subscription
that will collect on its own schedule. From here:

<CardGroup cols={2}>
  <Card title="Subscriptions" img="https://mintcdn.com/reclack/i_PBmgTWOy1QpaWl/images/cards/subscriptions.svg?fit=max&auto=format&n=i_PBmgTWOy1QpaWl&q=85&s=1eeee465ca438d022718b775e7b84826" href="/guides/subscriptions" width="480" height="126" data-path="images/cards/subscriptions.svg">
    What happens on every billing period, and what to do when one fails.
  </Card>

  <Card title="Webhooks" img="https://mintcdn.com/reclack/i_PBmgTWOy1QpaWl/images/cards/webhooks.svg?fit=max&auto=format&n=i_PBmgTWOy1QpaWl&q=85&s=30c9c9592df5e6156573ace49587c0b7" href="/webhooks/overview" width="480" height="126" data-path="images/cards/webhooks.svg">
    Verify the signature and act on events safely.
  </Card>

  <Card title="Going live" img="https://mintcdn.com/reclack/i_PBmgTWOy1QpaWl/images/cards/going-live.svg?fit=max&auto=format&n=i_PBmgTWOy1QpaWl&q=85&s=dbd3dbab9450a9b25a1f7a8f1bb3ce87" href="/environments" width="480" height="126" data-path="images/cards/going-live.svg">
    Swap the key, register a settlement address, and ship.
  </Card>

  <Card title="API reference" img="https://mintcdn.com/reclack/i_PBmgTWOy1QpaWl/images/cards/api-reference.svg?fit=max&auto=format&n=i_PBmgTWOy1QpaWl&q=85&s=c08cda4d5e6f47b88e5c294fe75f2bc9" href="/api-reference/introduction" width="480" height="126" data-path="images/cards/api-reference.svg">
    Every endpoint, with its parameters and responses.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.