AffinEQ

Product

Platform overview Integrations Verified, not claimed What isn't built yet

Solutions

Mobile-first startups Agencies building for SMEs Fintechs & regulated teams What people build

Migrate

How a move works From Supabase From Appwrite From Firebase From AWS Amplify From any Postgres Pricing

Developers

Documentation Next.js quickstart JavaScript quickstart Changelog Support Contribute Platform status

Company

Why we exist Customers Blog Partners Contact Sign in Start building
Integrations

Bring your provider. We handle the rest.

Pick the company you already use for SMS, payments or storage, add your key in the dashboard, and we take care of the rest: the sending, the callbacks, the retries. Where we run the service ourselves it says Built by AffinEQ. Sign-in providers like Google, GitHub and X live under Authentication, and frameworks and client libraries are in the documentation.

How to read this page. Each card names the company and where it works: Global, Kenya only, or the countries. Built in means it works today and you configure it in the dashboard. Planned is decided and not built. Exploring is early research. Anything that costs us money to run, like sending an SMS from our own account, is prepaid and never free on any plan; using your own provider account costs us nothing, so it is open to everyone.
Built in

Mobitech

Kenya only

Send sign-in codes through your own Mobitech account. Add your API key and sender name under Authentication → Providers → Phone; we handle the rest, and a test button checks the key.

Built in

Africa's Talking

Kenya, Uganda, Tanzania, Rwanda, Nigeria and more

Send sign-in codes through your own Africa's Talking account. Add your username and API key; we handle the rest. Written to their documentation and not yet run against a live account: the test button will tell you.

Built in

Twilio

Global

Send sign-in codes through your own Twilio account, for countries the local providers do not cover. Add your account SID, auth token and sender. Written to their documentation and not yet run against a live account: the test button will tell you.

Planned

Termii

Nigeria and West Africa

Send sign-in codes through your own Termii account. Add your API key and sender ID; we handle the rest.

Planned

SMS delivery

Kenya first · Built by AffinEQ

We send your codes and messages from our own account, so there is no provider to sign up with. Prepaid from your wallet: a message is paid for before it is sent and refunded if it fails. No free allowance on any plan.

Per message, prepaid; priced from the carrier's cost and shown before it is spent.

Planned

WhatsApp Business & USSD

Africa · Built by AffinEQ

Send, receive and template messages over WhatsApp, and USSD for the feature phones that are still a large part of the market.

Per message or session, prepaid.

Planned

M-Pesa Paybill

Kenya only · Built by AffinEQ

Take payments to your Paybill number: STK Push prompts and customer-initiated payments, with callbacks, receipts and reconciliation handled. Add your Daraja keys, shortcode and passkey; the money goes straight to you.

Planned

M-Pesa Till (Buy Goods)

Kenya only · Built by AffinEQ

The same for a Till number: STK Push with the Buy Goods transaction type, callbacks and reconciliation handled. Add your Daraja keys, till number and passkey.

Planned

Paystack

Nigeria, Ghana, South Africa, Kenya, Côte d'Ivoire · Built by AffinEQ

Cards, bank transfers and mobile money on your own Paystack account: charges, verification and webhooks handled. Add your secret key; the money goes straight to you.

Planned

Fund your wallet with M-Pesa

Kenya only · Built by AffinEQ

Top up the prepaid wallet that pays for our managed services, straight from M-Pesa. It needs a Safaricom Paybill of ours, which is the owner's to obtain.

Exploring

eCitizen

Kenya only

Kenya's government services portal: Pesaflow payments (signed requests, a checkout, payment notifications) and single sign-on. Access is by onboarding with the eCitizen team; you hold the credentials and we handle the signing and callbacks once we have a sandbox. More

Built in

Resend

Global

Sign-in codes, magic links and password resets, sent through Resend.

Built in

Storage on our servers

United Kingdom · Built by AffinEQ

Files in a private bucket per project, with row-level policies, resumable uploads and signed links. The default; Storage → Settings says where your files are and lets you choose another location before you upload.

Included in your plan's storage quota.

Built in

Any S3-compatible bucket

Global

Point a project at a bucket you already pay for: AWS S3, Cloudflare R2, Backblaze B2, Google Cloud Storage (interoperability keys), MinIO or your own. The credentials are checked with a live round trip before they are saved.

Built, switched off

Cloudflare R2

European Union · Built by AffinEQ

Your files in our Cloudflare account, in R2's EU jurisdiction, one bucket per project, with no fee for downloads. Choose it under Storage → Settings once it is switched on. Or use your own R2 bucket today as an S3-compatible bucket.

Per GB-month, prepaid; no download fee. Provider list price $0.015/GB-month.

Built, switched off

AWS S3

Cape Town and Ireland · Built by AffinEQ

Your files in our AWS account, in Cape Town (af-south-1) for data that must stay in Africa, or Ireland. One bucket per project. Or use your own AWS bucket today as an S3-compatible bucket.

Per GB-month plus downloads, prepaid. Provider list price in Cape Town about $0.027/GB-month and $0.15/GB downloaded.

Built, switched off

Microsoft Azure Blob Storage

Johannesburg and the Netherlands · Built by AffinEQ

Your files in our Azure account, in South Africa North (Johannesburg) for data that must stay in Africa, or West Europe. A container per project.

Per GB-month plus downloads, prepaid. Provider list price about $0.023/GB-month and $0.12/GB downloaded in South Africa.

Built, switched off

Google Cloud Storage

Johannesburg and Belgium · Built by AffinEQ

Your files in our Google Cloud account, in africa-south1 (Johannesburg) or Belgium. One bucket per project. Or use your own bucket today with its interoperability (HMAC) keys.

Per GB-month plus downloads, prepaid. Provider list price about $0.023/GB-month and $0.12/GB downloaded.

Built, switched off

Backblaze B2

Amsterdam · Built by AffinEQ

The cheapest place to keep a lot of data, in our Backblaze account. One bucket per project. Or your own bucket today.

Per GB-month, prepaid. Provider list price about $0.007/GB-month.

Built in

Vector search

Global · Built by AffinEQ

pgvector is in every project from the start: store embeddings, build HNSW or IVFFlat indexes, and search by similarity through the API or an RPC.

Planned

Pinecone

Global

Keep your embeddings in Pinecone, a hosted vector database, instead of in the project's Postgres: add your API key and index. Most apps do not need it, since pgvector is in every project.

Planned

Managed embeddings

Global · Built by AffinEQ

Semantic search with no API key: a small model runs beside your database and turns text into vectors.

Per thousand texts embedded, prepaid, with a monthly cap.

Planned

Managed inference

Global · Built by AffinEQ

Text generation through a gateway, prepaid per token with a hard cap, so a runaway loop cannot spend your money in seconds.

Per token, prepaid, with a hard cap you set.

Government services

eCitizen: what we know, and what we don’t.

eCitizen is Kenya’s portal for government services, and a real reason an app here might need to talk to the state. We have read the public material and not yet spoken to the people who run it, so this is research, not a promise.

What the documentation says

  • Two APIs, in one guide at apidocs.ecitizen.go.ke: an authorization (single sign-on) API built on OAuth 2.0 and OpenID Connect, and the Pesaflow payments API.
  • An integrator is given an API client ID and a client key by the eCitizen team: access is by onboarding, not self-service. There is a sandbox and a live address.
  • Payment requests carry a secure hash: HMAC-SHA256 over the client ID and your own unique reference, keyed with the client key, base64 encoded. There are three steps: generate the hash, initiate the payment, verify it, and the checkout is shown in an iframe.

What we don’t know yet

  • Whether single sign-on is open to a private platform: the guide describes it as intended for government agencies.
  • The terms, costs and approval, and the exact fields and notification format for payments. The official site did not answer when we last looked (it returned a server error), so the signing details above come from a published integration guide and still need checking against the real documentation.

How it will fit

  • You add your eCitizen client ID and key. We build the secure hash, start the payment, receive the notification and verify it, so your app calls one function.
  • First against the sandbox, once an account is issued; it is listed as exploring until then.
  • We never hold the money. Funds move between the citizen and the agency; we are not a party to them.
Do you hold eCitizen credentials, or know someone at Pesaflow? A sandbox account and a conversation are what turn this from research into a template. Write to us, and tell us what your app needs from it.
Add one

Missing something your users depend on?

There are two ways to get it here. Both start with a conversation.

You run the service

A payment processor, an SMS gateway, an identity or government service, or a startup developers keep rebuilding. Apply to be an integration, as a Worker template or as a provider we build in.

Become a partner →

You use the service

Tell us which integration your app is waiting on. The order we build in comes from real apps, and an app waiting is the strongest signal we have.

Request an integration →

Type to search. Nothing you type leaves this page.