Skip to main content
You use this API when your product needs to start a request-money flow and surface status to end users or internal systems. The public surface is versioned under /v1 and speaks JSON over HTTPS.

What this API offers today

  • POST /v1/request-money — You send a RequestMoneyRequest body (applicant, payout method, amount, currency, and your referenceId). The referenceId must be exactly 8 characters from a-z, A-Z, and 0-9. The API returns 201 Created with a RequestMoneyResponse: your referenceId, an operation id, a status, waLink (WhatsApp payer journey), landingLink (web landing), and related fields as in OpenAPI. Screening may respond with 403 Forbidden (for example OFAC hit) without the standard create success body.
  • GET /v1/request-money/{referenceId} — You read the public status for the same integrator referenceId. A missing or unknown resource returns 404 with JSON error and message fields as in OpenAPI.
The authoritative field list, formats (for example ISO 3166-1 alpha-2 for country), and status enum live in the API Reference tab (OpenAPI-backed).

Typical integration flow

1

Choose your base URL

Use the base URL for your environment (sandbox vs production). For Banrural sandbox integrations, the versioned API root is https://banrural-request-api-sandbox.up.railway.app/v1 (host base URL without the path: https://banrural-request-api-sandbox.up.railway.app).
2

Send your API key

On every POST and GET under /v1/request-money, include header X-API-Key with the key your integration contact gives you for that environment. Missing or wrong keys receive 401 Unauthorized. In the API Reference playground, use Authorize (or your client’s equivalent) so requests include the key.
3

Configure landing and messaging

Before POST /v1/request-money succeeds, your operator stores landingBaseUrl (HTTPS base for the payer funding page), whatsappBaseUrl, and whatsappMessageTemplate on your partner record through the partner portal or Leap admin. The API builds landingLink from landingBaseUrl by appending a ref query parameter for your referenceId. Omitting landingBaseUrl yields 422 until you configure it.
4

Create the operation

Call POST /v1/request-money with a payload that matches RequestMoneyRequest. Supply a stable referenceId (8 alphanumeric characters: a-z, A-Z, 0-9) from your own systems so you can correlate webhooks, support tickets, and later GET calls.
5

Use the returned links

Read waLink and landingLink from RequestMoneyResponse. Use the URL that matches your payer experience (WhatsApp vs browser). Treat status as the public lifecycle field (pending, processing, completed, rejected, cancelled as defined in the schema).
6

Poll or branch on status (optional)

Call GET /v1/request-money/{referenceId} when you need the latest public snapshot for that referenceId. Design your UX so you do not rely on aggressive polling unless your integration guide says otherwise.
You receive separate credentials per environment. Never use production keys in development builds, CI logs, or example code you ship to partners.
referenceId is your stable operation code: exactly 8 characters from a-z, A-Z, and 0-9. The API uses it to correlate GET responses with the original POST for your integrator account.
GET /api-docs, GET /openapi.json, and other non-versioned tooling routes may sit outside api_key security unless your deployment adds another layer in front of the process.

Quickstart

Make your first authenticated calls in a few minutes.

Authentication

How X-API-Key works, errors (including 403 screening), and operational tips.

Partner portal playground

Run guided create, GET, and optional internal status tests from the partner portal (API key for create and lookup; server secret for internal status).

API reference intro

Base URLs, headers, status codes, and response shape.

Webhooks

Receive signed callbacks for operation_created, operation_updated, and operation_error with HMAC-SHA256 verification and built-in retries.

OpenAPI playground

Interactive POST /v1/request-money with schemas and examples.

GET status endpoint

Open GET /v1/request-money/{referenceId} for the public status payload and 404 behavior.

Environments

EnvironmentHost base URLVersioned API root
Sandbox (Banrural)https://banrural-request-api-sandbox.up.railway.apphttps://banrural-request-api-sandbox.up.railway.app/v1
ProductionProvided by your integration contact{production-host}/v1
In code samples, set BASE_URL to the host base URL (no trailing slash, no /v1). Append /v1/request-money (or other versioned paths) in your client, as in the Quickstart examples. The OpenAPI servers entry and API Reference playground use the sandbox host for Banrural. Your deployment may set OPENAPI_SERVER_URL when exporting OpenAPI from the API repo so servers reflects other environments.
Do not use production API keys in development, shared sandboxes, or public repositories. Rotate keys if they are exposed.