# Payd API overview

The Payd API lets your app collect money and send payouts across Africa. You ask a customer to pay by M-Pesa, mobile money, bank transfer, card or stablecoin, and you pay people out to their phone or bank account. Money lands in, and leaves from, your Payd account.

You call one REST API at `https://api.payd.money` with an API key. Every request and response is JSON. Stablecoin checkouts use `https://stables.paydlabs.com` with the same key.

## What you can build

| You want to | Use | Where it works |
| --- | --- | --- |
| Take a payment by M-Pesa | [Collect with M-Pesa](./kenya-payins.md) | Kenya |
| Take a payment by mobile money | [Collect with mobile money](./pan-african-payins.md) | Uganda, Tanzania, Rwanda, Zambia, Côte d'Ivoire, Senegal, Cameroon, Benin, Togo, Botswana |
| Take a bank transfer | [Collect by bank transfer](./bank-payins.md) | Kenya, Nigeria, Tanzania, Botswana |
| Take a card payment | [Cards](./card-payments.md) | Any country, once card payments are on for your account |
| Get paid in stablecoins | [Stablecoin payments](./stablecoin-payments.md) | Anywhere your customer has a crypto wallet |
| Pay out to an M-Pesa number | [Pay out with M-Pesa](./kenya-payouts.md) | Kenya |
| Pay out to mobile money or a bank | [Pay out across Africa](./pan-african-payouts.md) | Kenya, Uganda, Tanzania, Rwanda, Zambia, Nigeria, South Africa and more |
| Show the right payment options | [Payment options by country](./network-discovery.md) | Every market |
| Show fees before a payment | [Quotes and fees](./quotes.md) | Every market |
| Know limits and timing | [Limits and settlement](./limits-and-settlement.md) | Every market |
| Know when money moved | [Webhooks](./webhooks.md) and [payment status](./transaction-status.md) | Every market |

The lists above are what Payd offers today. [Payment options by country](./network-discovery.md) always has the current list for a country, with its limits.

## How a payment moves

Every payin and payout follows the same path.

1. **You send the request.** Payd checks it and answers right away with a reference, such as `9BD103350408eR`.
2. **Payd sends it to the network.** For a collection, the customer gets a prompt on their phone, bank details to pay into or a checkout page. For a payout, the money goes to the phone or bank account.
3. **The network answers.** This takes seconds for M-Pesa and can take up to two days for some banks. See [limits and settlement](./limits-and-settlement.md).
4. **Payd tells you.** Payd posts a [webhook](./webhooks.md) to your `callback_url`, and the [status endpoint](./transaction-status.md) shows the final state.

A `200` response means Payd accepted the request. It does not mean money has moved. Wait for `success` before you ship an order or mark a payout as paid.

## Base URL and environments

```
https://api.payd.money
```

Payd runs one environment, and it is live. There is no sandbox, so every request moves real money. Test with small amounts, such as KES 10, and use your own phone number while you build.

## Start here

1. [Create an API key](./authentication.md) in the Payd app.
2. Follow the [quickstart](./quickstart.md) to collect your first payment.
3. Read [how payments work](./core-concepts.md) before you go live. It covers references, retries and duplicates.

## Building with an AI coding assistant

Every page has a Markdown version, and the whole site is available as one file for AI tools. See [Build with AI](./ai.md) for `llms.txt`, the OpenAPI file and a prompt you can paste into your coding assistant.
