This page takes you from a new business account to a collection that settles into your wallet. Everything below runs against sandbox until your business verification is approved.

1. Create your account

1

Sign up

Open the MarzPay dashboard and choose Get Started. Use a business email you can access, because verification links go there.
2

Complete onboarding

Add your business details and upload the documents in your onboarding checklist: business registration, tax ID, directors’ IDs, and proof of address. Most reviews finish in one to three business days.
3

Subscribe to a service

Open the marketplace in the dashboard and subscribe to the collection and disbursement services for the markets you need, for example Uganda MTN collection or Kenya M-Pesa disbursement. Endpoints return SERVICE_NOT_SUBSCRIBED until you do.
New businesses start in sandbox mode. You can call every endpoint immediately, with dummy responses, while verification is still in review.

2. Generate API credentials

  1. Open API Keys in the dashboard.
  2. Click Generate New API Key and give it a name your team will recognise.
  3. Copy the key and the secret. The secret is shown once.
The API uses HTTP Basic authentication:
In a shell, build the header once:
Keep credentials on the server. Never ship the secret in a mobile app, browser bundle, or public repo, and rotate the key from the dashboard if it leaks.

3. Know your base URL

There is no separate sandbox host. The dashboard setting decides whether a request creates a live transaction or a sandbox one.

4. Collect money

Send an amount, a phone number with the country code, a country, and a unique UUID reference.
201 Created
The customer gets a prompt on their phone. When they approve it, a callback lands on your callback_url with event_type: "collection.completed" and the provider transaction ID.
provider_reference is often null on the create response and is not sent on collection callbacks. The provider ID for a collection arrives as collection.provider_transaction_id.

5. Send money

Payouts use the same shape, from the other direction. This endpoint requires your IP to be whitelisted and a disbursement subscription.

6. Check your work

Read the balance

GET /balance returns available, card, and total wallet balances plus daily, weekly, and monthly summaries.

Read a transaction

GET /transactions/{uuid} returns the same envelope as the callback, so one parser handles both.

Replay a callback

Point callback_url at a request bin while you build, then swap in your real endpoint.

Verify signatures

Enable webhook signing and compare X-MarzPay-Signature before you trust a payload.

Common first-run errors