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

# Zerocash API

> Collect payments and disburse funds across Africa and beyond through a single integration.

<img src="https://mintcdn.com/zero-cash/4bFbMUmm-1fOnImS/images/hero.png?fit=max&auto=format&n=4bFbMUmm-1fOnImS&q=85&s=246ebccb839e53fb65859da1b50b8ad7" alt="Zerocash documentation. Collect and disburse across Africa — one integration for charges, payouts and webhooks." className="zc-hero" width="2400" height="1260" data-path="images/hero.png" />

Zerocash is connective financial infrastructure for businesses moving money across Africa. This
documentation covers the two things the API does:

<CardGroup cols={2}>
  <Card title="Charges" icon="arrow-down-to-line" href="/guides/collections/overview">
    Collect money from your customers via mobile money, bank transfer, card, or OPay — across
    every market Zerocash supports.
  </Card>

  <Card title="Payouts" icon="arrow-up-from-line" href="/guides/payouts/overview">
    Send money to recipients' mobile money wallets and bank accounts, with saved beneficiaries
    and cross-currency debits.
  </Card>
</CardGroup>

## Base URL

Every endpoint in this documentation is served from a single host.

<CodeGroup>
  ```bash Base URL theme={null}
  https://api.zerocash.tech
  ```
</CodeGroup>

Requests are authenticated with a bearer token that you generate from your API key. See
[Authentication](/guides/authentication) for the full flow.

## Start here

<Steps>
  <Step title="Get your keys">
    Grab your public key and API key from the **Developers → API Keys** page of your
    [dashboard](https://app.zerocash.tech).
  </Step>

  <Step title="Generate a bearer token">
    Exchange those keys for a short-lived bearer token, then send it as
    `Authorization: Bearer <token>` on every other request.
  </Step>

  <Step title="Move money in the sandbox">
    Run a charge and a payout against the sandbox with test credentials before you go live.
  </Step>

  <Step title="Listen for webhooks">
    Transactions settle asynchronously. Webhooks tell you the final status — never grant value
    on the initial API response alone.
  </Step>
</Steps>

<Card title="Quickstart" icon="rocket" href="/quickstart" horizontal>
  Make your first charge and your first payout.
</Card>

## How the API is shaped

<AccordionGroup>
  <Accordion title="Everything is a transaction" icon="receipt">
    Charges and payouts both create a transaction with a `transactionId`. You attach your own
    `externalReference` at creation time, and you can look a transaction up later by either
    identifier through [Get Transaction](/api-reference/endpoint/get-transaction).
  </Accordion>

  <Accordion title="Money movement is asynchronous" icon="clock">
    A `200` on a charge or payout means the request was accepted for processing, not that funds
    moved. The final outcome arrives by [webhook](/guides/webhooks/getting-started) or by polling
    the transaction. Treat only a terminal successful status as settlement.
  </Accordion>

  <Accordion title="Reference data drives the request" icon="table-list">
    Bank codes, mobile money operator codes, and country coverage change over time. Fetch them
    from the [reference data endpoints](/api-reference/endpoint/get-countries) rather than
    hard-coding them.
  </Accordion>

  <Accordion title="Idempotency comes from your reference" icon="fingerprint">
    `externalReference` must be unique per transaction. Reusing one is how you avoid creating
    duplicate charges or payouts when a request is retried.
  </Accordion>
</AccordionGroup>

## Get help

<Card title="support@zerocash.tech" icon="envelope" href="mailto:support@zerocash.tech" horizontal>
  Reach the team for integration support, coverage questions, or production access.
</Card>
