Developers

Move money with a few lines of code.

A predictable REST API, typed SDKs, an MCP server and a sandbox that behaves like production, for every product: accounts, collections, payouts and cards.

{{ cur.file }}{{ cur.lang }}
{{ cur.code }}
API reference

One consistent model for every product

{{ r.t }}

{{ r.p }}

{{ r.d }}

{{ e.m }}{{ e.p }}
MCP server

A controlled wallet for any assistant

The assistant never sees your live keys or your balance. It only gets what the agent's policy allows.

{{ l.alt }}
{{ m.n }}
{{ m.d }}
Sandbox

Test every scenario before going live

With a sk_test_ key, magic values trigger specific outcomes. No real card is issued and no real funds move.

{{ s.a }}{{ s.r }}
Errors

Errors that people and agents can act on

Every decline returns a stable code and a readable message, so your code or your agent knows whether to retry, ask for less or stop.

{{ errCode }}
{{ p.k }}

{{ p.t }}

{{ p.d }}

Get your sandbox keys

The sandbox is free and opens with test balances in several currencies.

Open an accountIntegrations
Developers

Move money with a few lines of code.

A predictable REST API, typed SDKs, an MCP server and a sandbox that behaves like production, for every product: accounts, collections, payouts and cards.

terminalbash
# Node.js
npm install @monerail/node

# Python
pip install monerail

# MCP server (Claude, Cursor…)
npx -y @monerail/mcp

# Environment
export MONERAIL_API_KEY=sk_test_••••
API reference

One consistent model for every product

Accounts

Accounts

Multi-currency balances and local account details.

POST/v1/accounts
GET/v1/accounts/:id/balances
GET/v1/accounts/:id/details

Conversions

Accounts

Quote a rate, lock it and convert between balances.

POST/v1/conversions/quote
POST/v1/conversions
GET/v1/rates

Payment links

Collect

Shareable links and hosted checkout pages.

POST/v1/payment_links
GET/v1/payment_links/:id
PATCH/v1/payment_links/:id

Collections

Collect

Card, bank transfer and mobile money payments.

POST/v1/collections
GET/v1/collections/:id
POST/v1/collections/:id/refund

Payouts

Payouts

Single and batch payouts on local, SWIFT, mobile money and stablecoin rails.

POST/v1/payouts
POST/v1/payout_batches
GET/v1/payouts/:id

Recipients

Payouts

Verified bank, wallet and mobile money recipients.

POST/v1/recipients
GET/v1/recipients/:id
DELETE/v1/recipients/:id

Cards

Cards

Issue, fund, freeze, reveal and close any card.

POST/v1/cards
POST/v1/cards/:id/fund
DELETE/v1/cards/:id

Cardholders

Cards

Teammates and customers, with their identity checks.

POST/v1/cardholders
GET/v1/cardholders/:id
POST/v1/cardholders/:id/kyc_link

Agents and policies

Agent cards

Agent identities, limits, merchants and approval thresholds.

POST/v1/agents
POST/v1/policies
POST/v1/agents/:id/freeze

Spend requests

Agent cards

The agent asks; the policy or a human decides.

POST/v1/spend_requests
POST/v1/spend_requests/:id/approve
POST/v1/spend_requests/:id/decline

Connected accounts

Platform

Accounts you open and manage for your own customers.

POST/v1/connected_accounts
GET/v1/connected_accounts/:id
POST/v1/account_links

Transactions and events

Shared

One ledger for every movement, and signed webhooks retried for 72 hours.

GET/v1/transactions
POST/v1/webhook_endpoints
POST/v1/events/:id/replay
MCP server

A controlled wallet for any assistant

The assistant never sees your live keys or your balance. It only gets what the agent's policy allows.

ClaudeChatGPTCursor
request_payment
Ask for an amount at a merchant, with a reason.
get_card
Retrieve the approved card to complete a checkout.
get_budget
Tell the agent how much it has left to spend.
list_payments
List the agent’s recent payments.
cancel_request
Cancel a request that is no longer needed.
Sandbox

Test every scenario before going live

With a sk_test_ key, magic values trigger specific outcomes. No real card is issued and no real funds move.

phone: +254 700 000 001Mobile money payment succeeds
iban: DE00 TEST 0000 0002Payout returned: account closed
amount: 4242Card payment requires 3-D Secure
$1.00 – $250.00Agent request approved
$250.01 – $499.99Agent request pending approval
$666.00Declined: blocked merchant
Errors

Errors that people and agents can act on

Every decline returns a stable code and a readable message, so your code or your agent knows whether to retry, ask for less or stop.

HTTP 402
{
  "error": {
    "code": "limit_exceeded",
    "message": "The amount exceeds this agent's
                daily limit.",
    "remaining_today": 1850,
    "retry": "reduce_amount"
  }
}
idempotency

Idempotent requests

Retry safely with an Idempotency-Key, never charging, paying or issuing twice.

versioning

Dated versions

Your integration stays pinned to the version you chose.

test / live

Separate keys

Distinct test and live keys, revocable at any time.

scopes

Restricted keys

One key per service or agent, limited to the actions it needs.

Get your sandbox keys

The sandbox is free and opens with test balances in several currencies.