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

# Get access

> How to get onboarded, approved, and issued an API key.

Access to the Spendin API is granted per account. Provisioning and compliance
review are handled by the Spendin team rather than through the public API — the
endpoints behind them are internal and deliberately undocumented.

## The sequence

<Steps>
  <Step title="Request an account">
    Contact us at [getspendin.co](https://www.getspendin.co) with the corridors
    you intend to use and your expected monthly volume. We create your account
    and give you access to the dashboard.
  </Step>

  <Step title="Complete KYB">
    Submit your business details and supporting documents — certificate of
    incorporation, directors' identification, proof of address, and the
    ownership structure. Our compliance team reviews and issues a decision.

    Your profile has to reach `APPROVED`. Any other state blocks payouts with
    `403 COMPLIANCE_NOT_APPROVED`, including a profile that is submitted and
    still under review.
  </Step>

  <Step title="Receive your API keys">
    On approval we issue your keys. You get a separate key for testing and for
    live traffic — they are distinct credentials on distinct accounts, so a test
    key can never move real money.

    A key is displayed **once**, at issue. We store only a hash and a short
    prefix for lookup. A lost key is revoked and replaced, never recovered.
  </Step>

  <Step title="Register a refund destination">
    Before your first payout, tell us where failed-payout money goes back to.
    See [Refunds](/guides/refunds). This is the one setup step you do through the
    API yourself, and payout creation is blocked until it is done.
  </Step>
</Steps>

## Choosing scopes

Ask for the narrowest set of [scopes](/guides/authentication) that does the job,
and ask for separate keys per system. A reconciliation job that reads payouts has
no business being able to create them.

A typical split:

| System              | Scopes                                                                                         |
| ------------------- | ---------------------------------------------------------------------------------------------- |
| Payout service      | `payouts:write`, `payouts:read`, `payment_instructions:read`, `rates:read`, `identity:enquiry` |
| Reconciliation job  | `payouts:read`, `inflows:read`, `outflows:read`, `refunds:read`                                |
| Ops / configuration | `webhooks:manage`, `refunds:manage`                                                            |

## What you need before you write code

<CardGroup cols={2}>
  <Card title="Your base URL" icon="link" href="/api-reference/introduction">
    `https://api.spendin.app`, with every route under `/v1/`.
  </Card>

  <Card title="Your webhook endpoint" icon="webhook" href="/guides/webhooks">
    An HTTPS URL that returns `2xx` fast. Register it and store the signing
    secret — it is shown once.
  </Card>
</CardGroup>

<Note>
  Keys carry no expiry by default but can be issued with one, and can be revoked
  at any time. Several keys can be active at once, which is what makes rotation
  possible without downtime — see
  [Authentication](/guides/authentication#handling-keys-safely).
</Note>
