Command Palette

Search for a command to run...

Skip to content

Charge in your language, not the provider's.

One call creates the payment; Reevit picks the provider, retries the failures, and streams every event back. Copy it, paste it, ship it.

8 SDKs + the REST API4 CLI commands to a verified sandbox1 MCP server for your agents

Quickstart

One request, every provider.

The request has the same shape in all six languages. Reevit decides which of your providers takes it, and fails over for you if that one doesn't answer.

  • Amounts in minor units, never floats45000 = GHS 450.00
  • Idempotency keys honored on every writeorder_8817
  • Test keys that mirror live behaviorpfk_test_…
Node SDK$ npm i @reevit/node
Official documentation
charge.ts
import Reevit from '@reevit/node'; const reevit = new Reevit('pfk_live_…', 'org_…'); // One request — Reevit picks the provider and fails over for you.const payment = await reevit.payments.createIntent(  {    amount: 45000, // GHS 450.00, in pesewas    currency: 'GHS',    method: 'mobile_money',    country: 'GH',    customer_id: 'cust_123',  },  { idempotencyKey: 'order_8817' },); console.log(payment.id, payment.status);

CLI + local sandbox

Feel a failover before you commit.

One command detects your project, creates scoped test credentials, installs the right SDKs, wires the runnable checkout and webhook flow, and verifies the sandbox. Then stream real test events to localhost without moving real money.

$ reevit init

Detect your stack, create project test credentials, install the right SDKs, and wire the complete Reevit test flow.

sandbox verified
$ reevit doctor --e2e

Prove the setup with a real sandbox payment, delivered to your handler and signed.

tampered event rejected
$ reevit listen --forward-to <url>

Stream test-mode events to your localhost, signed like production.

signed like production
$ reevit trigger <event>

Fire a real sandbox payment through the simulator, with no real money.

payment.failed · forwarded 200
Homebrew$ brew install reevit-platform/tap/reevit
npm$ npm install -g @reevit/cli

Failover, in the response

The route is part of the contract.

A timeout reroutes inside the same request. One POST, one response. The detour shows up as milliseconds, not a support ticket.

Read the routing docs

POST /v1/payments200 · 3,212 ms total

Response · example"route": [
  { "connection_id": "hubtel_live",
    "status": "failed",
    "error": "provider timeout",
    "latency_ms": 2400 },
  { "connection_id": "paystack_live",
    "status": "succeeded",
    "error": null,
    "latency_ms": 812 }
]

Both attempts ship in the response as "route": [ connection_id, status, error, latency_ms ], so your logs already tell the whole story.

SDKs for your stack

The details are already handled.

01

Idempotency keys honored on every write

idempotencyKey: 'order_8817'
02

Test mode with pfk_test keys that mirror live behavior

pfk_test_… → pfk_live_…
03

Real-time payment events over SSE

text/event-stream
04

Signed webhooks: verified, deduplicated, replayable

X-Reevit-Signature: sha256=…
05

Amounts in minor units, never floats

amount: 45000 // GHS 450.00
06

Eight SDKs, one contract between them

createIntent · create_intent · CreateIntent

MCP server

Your agents speak Reevit now.

Payment links, lookups, refunds, and analytics, from any MCP client, on a scoped API key you control.

Claude Codeclaude mcp add reevit -- npx -y @reevit/mcp
Set it up in your client

Any MCP client @reevit/mcp

Create a GHS 50 payment link for the March invoice

create_payment_link · payment_links:write

→ https://reevit.io/pay/mar-invoice-x7k2

Refund the last failed charge

create_refund · live mode — held for your approval

needs confirm: true — no money moved.

npm$ npx -y @reevit/mcp

Stop losing payments to provider downtime.

Free for your first 1,000 payments a month, and failed payments are never billed. Connect a provider and take your first payment before the coffee gets cold.