> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getmint.money/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getmint.money/_mcp/server.

# Overview

> Core Mint concepts and the recommended way to approach the public integration surface.

Mint lets you create a payment on your backend, then choose who owns the buyer
experience: Mint's hosted page, the Mint React SDK, or your own client.

Start by creating a checkout and API keys in the Mint Dashboard. Keep the
secret key on your server; use the public key only in browser code.

## The payment lifecycle

1. Your backend creates a payment for a checkout.
2. The buyer pays through the hosted page, the React SDK, or your own flow.
3. Mint records the payment attempt and confirms the payment.
4. Your server receives a signed `payment.paid` webhook and fulfils the order.

The browser is useful for showing progress, but it is not the source of truth
for fulfilment. Use a verified webhook or Mint's authenticated API to make
that decision.

## Core concepts

### Checkout

A checkout is the merchant configuration that defines how payments should be accepted and settled.

### Payment

A payment is a single payment intent created against a checkout. It includes the amount, currency, and optional metadata such as `order_id`, `customer_id`, `return_url`, and `line_items`.

### Payment URL

If hosted payments are enabled, Mint returns a `payment_url` when a payment is created. You can redirect the buyer to that URL instead of embedding the SDK yourself.

### Payment attempt

When a buyer starts paying, Mint creates a payment attempt for the selected method. In the crypto flow, Mint computes the destination address and the settlement amount.

### Payment status

The main payment statuses are:

* `pending`
* `confirming_payment`
* `paid`
* `failed`

`confirming_payment` means Mint has seen a buyer transaction but has not yet
completed the payment. Fulfil only after `paid`.

## Choose your next guide

| If you want to…                                | Start here                                                            |
| ---------------------------------------------- | --------------------------------------------------------------------- |
| Launch quickly with a Mint-hosted payment page | [Hosted Payments](/getting-started/hosted-payments)                   |
| Keep checkout inside a React app               | [React SDK Quickstart](/getting-started/react-sdk-quickstart)         |
| Create payments from your own backend          | [Backend Payment Creation](/getting-started/backend-payment-creation) |
| Keep your order system in sync                 | [Webhooks](/getting-started/webhooks)                                 |

## What the React SDK gives you

The `@mintmoney/react` package provides the client-side pieces needed to embed Mint checkout in a React application:

* `createConfig(...)`
* `MintMoneyProvider`
* `Checkout`
* `getPaymentById(...)`

The SDK is designed to work with a server-side payment creation step. Your
backend creates the payment with your Mint secret key, and the frontend uses
the SDK with your public key.