paystack-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@paystack-mcpcreate a checkout link for 250 rand for order #42"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
paystack-mcp
An MCP server for Paystack, the payments API covering Nigeria, Ghana, South Africa, Kenya and Côte d'Ivoire. It lets an AI assistant create checkout links, verify payments and read transaction history.
Test mode is enforced by the key you give it, not by configuration.
Node 20+. One runtime dependency (the MCP SDK) plus zod.
The safety model
Wrapping a payments API means a language model can move money, so:
1. The key is the mode. Paystack encodes the environment in the secret key
(sk_test_ / sk_live_). This server reads it from the prefix, so there is no
way to believe you are in test mode while holding a live key. A key whose
prefix is unrecognised is refused outright, never assumed to be test.
2. A live key still needs a second opt-in. PAYSTACK_ALLOW_LIVE must be set
to an explicit acknowledgement. Supply a live key without it and the server
refuses to start rather than quietly transacting for real.
3. Amounts are major units, never subunits. Paystack's API takes kobo and
cents; this server takes rands and naira and converts. Handing a model a field
where 500 might mean five rand or five hundred is how accounts get emptied.
The ceiling is expressed in the same units the caller passes, so the two agree.
4. A ceiling. PAYSTACK_MAX_AMOUNT (default 1000) caps any single
transaction. It also catches the 100× error where someone passes subunits
anyway — there is a test for exactly that.
5. Per-call confirmation, only where it means something. On a live key,
paystack_initialize_transaction requires confirm="CONFIRM LIVE PAYMENT"
exactly. In test mode it does not: friction on imaginary money only teaches
people to click through.
6. The API's own answer is cross-checked. Paystack echoes domain: "test"
or "live" on a verified transaction. If that ever disagrees with the key
prefix, the tool says so loudly instead of hiding it.
7. Secrets stay out of output. The environment tool shows sk_test_...1234
— enough to tell two keys apart, never the key. A test fails if it leaks.
Related MCP server: paystack-mcp-server
Setup
npm install
cp .env.example .env # paste your sk_test_ key
npm run check # validates the key and reads your balanceGet the key from the Paystack dashboard under Settings → API Keys & Webhooks. Signup needs no registered company: pick Starter Business and you get test keys immediately.
Tools
Tool | Reads/writes | Notes |
| read | Mode, currency, ceiling. No network call. |
| read | Confirms the key and returns balances. |
| read | Supported banks and codes, by country. |
| write | Returns a checkout URL. Confirmation required on a live key. |
| read | Whether a payment succeeded. |
| read | Recent transactions. |
Connecting a client
{
"mcpServers": {
"paystack": {
"command": "npx",
"args": ["-y", "paystack-mcp"],
"env": {
"PAYSTACK_SECRET_KEY": "sk_test_...",
"PAYSTACK_CURRENCY": "ZAR"
}
}
}
}Tests
npm test24 tests. Fourteen cover the guards as pure functions. Ten spawn the real binary and speak MCP to it over stdio, checking that a live key refuses to start unacknowledged, that live payments demand the confirmation phrase, that over-ceiling and malformed requests are rejected before any network call, and that the key never reaches the output.
One test is a genuine live call: /bank is a public Paystack endpoint, so the
suite verifies the whole path end to end against the real API and asserts it
gets recognisable South African banks back — without any credential at risk.
Status
Early, but the read path is proven against the live API. The write path
(initialize_transaction) is built from Paystack's documented request shape
and exercised only through the guards; it has not yet created a real test
transaction. Do that first with an sk_test_ key before trusting it.
Not covered yet: refunds, transfers and payouts, subscriptions and plans, split payments and subaccounts, customer management, and webhook signature verification.
Licence
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Nigeria payments for AI agents — bank transfer / USSD via Paystack. Never holds funds.
Stripe payments for AI agents. Create links, verify, manage customers.
South Africa payments for AI agents — cards / EFT via Paystack. Never holds funds.
Pakistan payments for AI agents — Safepay checkout via Safepay. Never holds funds.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI agents to interact with multiple payment providers (Stripe, Paystack) through a unified API. Supports payment initialization, verification, refunds, customer management, and invoicing without requiring knowledge of specific provider implementations.2-

paystack-mcp-serverofficial
AlicenseAqualityCmaintenanceEnables AI assistants to interact with the full range of Paystack APIs, allowing operations like transaction management, customer creation, and payments through natural language.234 npm56MIT- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to accept payments, verify transactions, and manage customers via Paystack API through natural language.MIT
- AlicenseBqualityDmaintenanceEnables AI agents to manage Paystack payments, products, customers, and transactions through natural language.283 npm9MIT