Built in Uganda for African developers

Billing & mobile-money,
integrated like Stripe.

Drop vendorpayug into any app to invoice clients, collect over MTN & Airtel, run subscriptions, and chase payment automatically. Money settles in your own account — we never hold your funds.

1 secret key 2-line JS checkout ~5 min to first charge
PHP JS cURL
// one-file SDK, no Composer
require 'vendorpay.php';
$vp = new VendorPay('sk_live_…');

// bill a customer over mobile money
$charge = $vp->createCharge([
  'customer'     => 'cust_abc123',
  'amount_minor' => 50000,        // UGX 50,000
  'currency'     => 'UGX',
], 'order-7741');            // idempotency key
Works with MTN MoMo Airtel Money Yo! Uganda Cards Flutterwave · Pesapal · soon
Everything to get paid

A complete billing stack, behind one key

The plumbing of a payments company — invoicing, collection, subscriptions, dunning and enforcement — as a few API calls.

REST API & SDKs

One secret key. A single-file PHP SDK, a 2-line JS checkout, and a clean REST API with idempotency keys.

Mobile money + cards

Collect over MTN & Airtel via Yo!, with Flutterwave & Pesapal behind one pluggable gateway interface.

Hosted checkout & links

Send a payment link or drop in a hosted page. No PCI scope, no card forms to build or maintain.

Subscriptions & proration

Recurring billing with trials, upgrades and downgrades — prorated automatically to the shilling.

Signed webhooks

Real-time events with HMAC signatures, replay protection, and automatic backoff retries.

The enforcement guard

A one-line drop-in that reminds, banners, or (gently) locks a client's app when they don't pay. Fail-soft by default.

From zero to paid

Live in three steps

No sales call, no waiting on approval. Sign up and you're in test mode immediately.

1

Get your keys

Sign up and grab a test key pair instantly. Flip to live when you've connected your Yo! account.

pk_test_… · sk_test_…
2

Drop in the SDK

Include one PHP file or one script tag. Create a customer, send an invoice, or open checkout.

require 'vendorpay.php';
3

Get paid

The customer approves on their phone. Money settles in your own account; you get a signed webhook.

charge.succeeded →
Developer-first

Verify a payment in 6 lines

No SDK lock-in, no heavyweight dependencies. The PHP SDK is a single file you can read end-to-end. Webhooks are signed so you can trust them.

  • Idempotency keys on every write — retries never double-charge.
  • Test & live modes — test keys never touch real money.
  • Self-custody option — keep your gateway credentials on your own server.
webhook.php
$event = VendorPay::verifyWebhook(
  file_get_contents('php://input'),
  $_SERVER['HTTP_VENDORPAY_SIGNATURE'],
  'whsec_…'
);

if ($event['type'] === 'charge.succeeded') {
  // ✓ money received — fulfil the order
}
Simple & honest

Pay only when you get paid

Free to build and test. A small per-transaction fee on live collections. No monthly minimums.

Test
Free
Build & integrate
  • Unlimited test-mode API
  • Full SDKs, checkout & webhooks
  • Sandbox collections
Start building
Pay as you go
Per txn · small bps fee
Go live
  • Live mobile-money collections
  • Subscriptions, dunning & enforcement
  • Funds settle in your own account
Get API keys
Platform
Custom
Scale & white-label
  • Volume pricing
  • Bill your own merchants
  • Dedicated support
Talk to us

Start billing in test mode — free

Create an account, get your keys, and make your first charge in minutes.

Create your account →