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

# Paj Public API

> Turn a bank account into an address that anyone can pay in stablecoins.

The Paj public API (`v2`) gives your product a bridge between stablecoins and
African bank accounts. It is built around one primitive:

<Card title="A bank account is an on-chain address" icon="building-columns">
  Register a bank account once, and Paj derives a deterministic on-chain address
  for it. Anything sent to that address is converted and paid out to the bank
  account as fiat. No order to create, no quote to accept, no session to manage.
</Card>

## What you can do

<CardGroup cols={3}>
  <Card title="Register a bank account" icon="plus" href="/api-reference/register-bank-account">
    Confirm a bank code and account number with the bank, then get back the
    account holder's name and the address that pays it.
  </Card>

  <Card title="Look one up" icon="magnifying-glass" href="/api-reference/search-bank-account">
    Resolve an address back to a bank account, or find the address for an
    account number you already know.
  </Card>

  <Card title="Read the rates" icon="chart-line" href="/api-reference/get-rates">
    Fetch the live onramp and offramp rates for a currency, with your business
    fee already applied.
  </Card>
</CardGroup>

## The shape of an integration

Most integrations are small. You register each of your users' bank accounts
once, store the returned `address` alongside the user, and show that address as
a payment destination. From then on the flow is entirely on-chain — a user (or
an exchange, or a third party) sends USDC to the address, and Paj handles the
conversion and the fiat payout.

<Steps>
  <Step title="Register the bank account">
    `POST /pub/v2/bank-account` with a bank code and account number. Paj
    confirms the account with the bank and assigns it an address.
  </Step>

  <Step title="Show the address">
    Display the returned `address` (and, for confidence, the `accountName` the
    bank returned) as the destination to pay.
  </Step>

  <Step title="Funds land, fiat pays out">
    Paj observes the deposit, converts it at the current offramp rate, and
    disburses to the bank account.
  </Step>
</Steps>

<Note>
  Registration is idempotent per bank account. Calling it again for the same
  bank code and account number returns the existing record and the same address,
  so it is safe to call on every sign-in rather than tracking state yourself.
</Note>

## Base URL

All endpoints live under `https://api.paj.cash` and are prefixed with
`/pub/v2`. Every request needs an `x-api-key` header — see
[Authentication](/authentication).

<Card title="Start here" icon="rocket" href="/quickstart" horizontal>
  Register your first bank account in about five minutes.
</Card>
