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

# Quickstart

> From your API key to your first payment

This guide takes you from zero to a first test payment. Use a **test key** (`sk_test_…`): no money moves, and your service can collect right away, before our team has reviewed it.

**1. Get your API keys**

In your dashboard, create a test key and a live key, and add the IP addresses of your servers to the allowlist. See [Authentication](https://docs.kemypay.com/authentication.md).

**2. Pick a category**

```bash theme={null}
curl https://api.kemypay.com/v1/mobile-money/categories \
  -H "Authorization: Bearer sk_test_YOUR_KEY"
```

**3. Create your service**

```bash theme={null}
curl -X POST https://api.kemypay.com/v1/mobile-money/services \
  -H "Authorization: Bearer sk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Afroyamo",
    "category": "dating",
    "description": "Dating app for the African diaspora. Premium subscriptions paid by mobile money.",
    "url": "https://afroyamo.com",
    "support_email": "support@afroyamo.com",
    "support_phone": "+237670000000",
    "webhook_url": "https://api.afroyamo.com/kemypay/webhooks"
  }'
```

The answer contains the `code` of the service and its **`webhook_secret`. Store the secret now: it is shown only once.**

**4. Check the price**

```bash theme={null}
curl -X POST https://api.kemypay.com/v1/mobile-money/quote \
  -H "Authorization: Bearer sk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "operator": "MTN_CMR", "currency": "XAF", "amount": "1000", "fee_bearer": "customer" }'
```

**5. Request a payment**

```bash theme={null}
curl -X POST https://api.kemypay.com/v1/mobile-money/collections \
  -H "Authorization: Bearer sk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "SERVICE_CODE",
    "amount": "1000",
    "currency": "XAF",
    "operator": "MTN_CMR",
    "phone_number": "237670000789",
    "reference": "order-0001",
    "description": "Afroyamo Premium"
  }'
```

In test mode, a number ending with `789` succeeds. See [Test mode](https://docs.kemypay.com/test-mode.md) for every outcome.

**6. Receive the webhook**

Your `webhook_url` receives `mobile_money.collection.completed`. Verify its signature, then deliver the order. See [Webhooks](https://docs.kemypay.com/guides/webhooks.md).

## Going live

1. Wait for your service to be `active` (we email you when it is reviewed).
2. Switch to your `sk_live_…` key. Nothing else changes in your code.
3. Use real phone numbers: your customers receive a real prompt and pay real money.

> [!NOTE]
>
> Collections, quotes and operator prediction are in **beta** while they roll out in production.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.