---
canonical_url: "https://docs.pimabill.com"
---
<u-page-hero>
<template v-slot:title="">

One API. Every payment provider. <br />

 Billing without borders.

</template>

<template v-slot:description="">

PimaBill is open-source billing for the way Africa pays. Connect Stripe, Flutterwave, Paystack, Pesapal, MTN MoMo, Airtel Money and more through one API. Manage customers, subscriptions, invoices, payments, payouts and a double-entry ledger in any currency.

</template>

<template v-slot:links="">
<u-button size="xl" to="https://docs.pimabill.com/getting-started/quickstart" trailing-icon="i-lucide-arrow-right">

Get Started

</u-button>

<u-button size="xl" to="http://localhost:4000/api/reference" color="neutral" target="_blank" variant="outline">

API Reference

</u-button>
</template>
</u-page-hero>

<u-page-section>
<template v-slot:title="">

Why PimaBill?

</template>

<card-group>
<card icon="i-lucide-globe" title="Borderless by Default" to="https://docs.pimabill.com/guides/payment-providers">

Support 17 currencies across 40+ countries. Automatic currency matching routes payments to the right provider -- from mobile money in Nairobi to card payments in New York.

</card>

<card icon="i-lucide-building-2" title="Multi-Tenant Architecture" to="https://docs.pimabill.com/getting-started/quickstart">

Every tenant gets an isolated database with encrypted credentials. Built for SaaS platforms that need to offer billing to their own customers.

</card>

<card icon="i-lucide-zap" title="Ship in Minutes" to="https://docs.pimabill.com/sdks/typescript">

Type-safe TypeScript and Python SDKs generated from our OpenAPI spec. Full autocomplete, comprehensive error handling, and always in sync with the API.

</card>

<card icon="i-lucide-credit-card" title="4 Payment Providers" to="https://docs.pimabill.com/guides/payment-providers">

Stripe and PayPal for global cards. Flutterwave and Paystack for West Africa. Pesapal, MTN MoMo and Airtel Money for East Africa. USDT and Bitcoin straight to your own wallet.

</card>

<card icon="i-lucide-refresh-cw" title="Smart Subscriptions" to="https://docs.pimabill.com/guides/subscriptions">

Free trials, plan upgrades, downgrades, pausing, resuming, and automated renewals. Proration and dunning handled automatically.

</card>

<card icon="i-lucide-file-text" title="Invoices & Checkout" to="https://docs.pimabill.com/guides/invoices-and-payments">

Auto-generate PDF invoices. Create hosted checkout URLs for any invoice. Email delivery on every billing event with automatic retries.

</card>

<card icon="i-lucide-bar-chart-3" title="Revenue Analytics" to="https://docs.pimabill.com/guides/analytics">

Track revenue, subscriptions, churn, and payment success rates. Filter by date range, currency, and provider with daily, weekly, or monthly grouping.

</card>

<card icon="i-lucide-bell" title="Real-Time Webhooks" to="https://docs.pimabill.com/guides/webhooks">

Signature-verified webhook notifications for every event -- payments, subscriptions, invoices. Automatic retries with exponential backoff.

</card>

<card icon="i-lucide-lock" title="Enterprise Security" to="https://docs.pimabill.com/getting-started/authentication">

AES-256 credential encryption, JWT + API key dual authentication, scoped permissions, and rate limiting out of the box.

</card>
</card-group>
</u-page-section>

<u-page-section>
<template v-slot:title="">

Get Started in 60 Seconds

</template>

<template v-slot:description="">

Install an SDK and create your first subscription.

</template>

<code-group sync="pkg">

```bash [npm]
npm install pimabill
```

```bash [pip]
pip install pimabill
```

</code-group>

<code-group sync="lang">

```typescript [TypeScript]
import { PimaBillClient } from 'pimabill';

const pima = new PimaBillClient({
  token: process.env.PIMABILL_API_KEY!,
});

// Create a customer
const customer = await pima.customers.create({
  externalId: 'usr_001',
  email: 'amina@kampaltech.ug',
  name: 'Amina Nakato',
  currency: 'UGX',
});

// Subscribe them to a plan
const sub = await pima.subscriptions.create({
  customerId: customer.id,
  planId: 'plan_growth',
  currency: 'UGX',
});

console.log(sub.status); // "ACTIVE"
```

```python [Python]
import os
from pimabill import PimaBillClient

pima = PimaBillClient(token=os.environ["PIMABILL_API_KEY"])

# Create a customer
customer = pima.customers.create(
    external_id="usr_001",
    email="amina@kampaltech.ug",
    name="Amina Nakato",
    currency="UGX",
)

# Subscribe them to a plan
sub = pima.subscriptions.create(
    customer_id=customer.id,
    plan_id="plan_growth",
    currency="UGX",
)

print(sub.status)  # "ACTIVE"
```

```bash [cURL]
# Create a customer
curl -X POST http://localhost:4000/api/customers \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "usr_001",
    "email": "amina@kampaltech.ug",
    "name": "Amina Nakato",
    "currency": "UGX"
  }'

# Create a subscription
curl -X POST http://localhost:4000/api/subscriptions \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "cust_abc123",
    "planId": "plan_growth",
    "currency": "UGX"
  }'
```

</code-group>

<tip to="https://docs.pimabill.com/getting-started/quickstart">

**Ready to dive deeper?** Follow the full [Quickstart Guide](https://docs.pimabill.com/getting-started/quickstart) for a complete walkthrough -- from registration to your first payment.

</tip>
</u-page-section>

<u-page-section>
<template v-slot:title="">

Supported Currencies

</template>

<template v-slot:description="">

PimaBill supports **17 currencies** across Africa and internationally.

</template>

<table>
<thead>
  <tr>
    <th>
      Region
    </th>
    
    <th>
      Currencies
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        West Africa
      </strong>
    </td>
    
    <td>
      <code>
        NGN
      </code>
      
       <code>
        GHS
      </code>
      
       <code>
        XOF
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        East Africa
      </strong>
    </td>
    
    <td>
      <code>
        KES
      </code>
      
       <code>
        UGX
      </code>
      
       <code>
        TZS
      </code>
      
       <code>
        RWF
      </code>
      
       <code>
        ETB
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        North Africa
      </strong>
    </td>
    
    <td>
      <code>
        EGP
      </code>
      
       <code>
        MAD
      </code>
      
       <code>
        DZD
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Central Africa
      </strong>
    </td>
    
    <td>
      <code>
        XAF
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Southern Africa
      </strong>
    </td>
    
    <td>
      <code>
        ZAR
      </code>
      
       <code>
        ZMW
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        International
      </strong>
    </td>
    
    <td>
      <code>
        USD
      </code>
      
       <code>
        EUR
      </code>
      
       <code>
        GBP
      </code>
    </td>
  </tr>
</tbody>
</table>
</u-page-section>

<u-page-section>
<template v-slot:title="">

Explore the Docs

</template>

<card-group>
<card icon="i-lucide-play" title="Quickstart" to="https://docs.pimabill.com/getting-started/quickstart">

Register, create API keys, configure a payment provider, and start billing in under 5 minutes.

</card>

<card icon="i-lucide-key" title="Authentication" to="https://docs.pimabill.com/getting-started/authentication">

Understand JWT tokens for tenant management and API keys for data operations.

</card>

<card icon="i-lucide-code" title="TypeScript SDK" to="https://docs.pimabill.com/sdks/typescript">

Full reference for the PimaBillClient with type-safe methods for every resource.

</card>

<card icon="i-lucide-terminal" title="Python SDK" to="https://docs.pimabill.com/sdks/python">

Sync and async clients with comprehensive type hints and error handling.

</card>
</card-group>
</u-page-section>

## Resources for Agents

- [API catalog: every service document this site publishes](https://docs.pimabill.com/.well-known/api-catalog)
- [Sitemap (XML)](https://docs.pimabill.com/sitemap.xml)
- [Sitemap (Markdown): every page on the site](https://docs.pimabill.com/sitemap.md)
- [MCP server card: MCP endpoint at https://docs.pimabill.com/mcp](https://docs.pimabill.com/.well-known/mcp/server-card.json)
- [MCP endpoint (streamable HTTP)](https://docs.pimabill.com/mcp)
- [llms.txt: index of the documentation for LLMs](https://docs.pimabill.com/llms.txt)
- [llms-full.txt: the full documentation as a single file](https://docs.pimabill.com/llms-full.txt)
- [OpenAPI document: every route this site serves to agents](https://docs.pimabill.com/openapi.json)


## Sitemap

See the full [sitemap](https://docs.pimabill.com/sitemap.md) for all pages.
