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

# StableMint API

> Move money between bank rails and stablecoins through one signed API.

StableMint is banking-as-a-service infrastructure for stablecoins. You collect fiat from your
customers, it settles on-chain as a regulated stablecoin, and you pay out in fiat or tokens —
through one API, without holding banking licences or custody infrastructure yourself.

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Sign your first request and read your account balance.
  </Card>

  <Card title="Sandbox" icon="flask" href="/guides/sandbox">
    A full-parity environment with simulated fiat legs.
  </Card>

  <Card title="Authentication" icon="key" href="/guides/authentication">
    Service accounts and RSA request signing.
  </Card>

  <Card title="Service accounts" icon="id-card" href="/guides/service-accounts">
    Credentials, permissions and rotation.
  </Card>
</CardGroup>

## The model

There are two kinds of account, and the distinction runs through the whole API.

<ResponseField name="Partner" type="you">
  Your own organisation. You hold accounts and balances, you make payouts, and you manage service
  accounts and team members.
</ResponseField>

<ResponseField name="Customer" type="your end users">
  A customer you create and operate on behalf of. Each one can be provisioned its own account
  details, receive deposits, and hold a balance that is segregated from yours.
</ResponseField>

If you are moving your own treasury, you only need partner-level operations. If you are embedding
accounts and payments into your own product, you will create customers.

## What a full cycle looks like

<Steps>
  <Step title="Create a customer">
    `POST /v1/customers`, then provision their account details with
    `POST /v1/customers/{id}/account`.
  </Step>

  <Step title="They fund it">
    Money arrives on the bank rail against their account details. StableMint reconciles the
    inbound payment and mints the corresponding stablecoin.
  </Step>

  <Step title="You are notified">
    A signed `partner.customer.deposit.completed` webhook fires, carrying the amount, currency and
    blockchain transaction hash.
  </Step>

  <Step title="You pay out">
    `POST /v1/payouts/fiat` to a bank beneficiary, or `POST /v1/payouts/token` to a wallet. Both
    are single, idempotent, unattended calls.
  </Step>
</Steps>

## Base URLs

| Environment | Base URL                     | Notes                                           |
| ----------- | ---------------------------- | ----------------------------------------------- |
| Production  | `https://api.stablemint.io`  | Partner accounts are provisioned by StableMint. |
| Sandbox     | `https://api.stablemint.net` | Fiat legs are simulated.                        |

Both environments run the same code and expose the same operations. The only deliberate
differences are how you get in and that sandbox money is not real — see
[Sandbox](/guides/sandbox).

## Before you start

<Note>
  The API accepts **service-account signed requests only**. There is no bearer-token access, no
  OAuth client-credentials flow, and no API-key-in-a-header shortcut. Every request carries four
  headers and an RSA signature over a canonical string. Start at
  [Authentication](/guides/authentication).
</Note>
