Overview
API authentication
Authenticate Remitflex API requests with API keys, understand scopes, and handle auth errors.
GET
/
transactions
List transactions
curl --request GET \
--url http://localhost:4000/v1/transactions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:4000/v1/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "http://localhost:4000/v1/transactions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": "success",
"message": "Transactions fetched",
"data": {
"transactions": [
{
"id": "dep-uuid-001",
"kind": "payment_route",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerName": "Acme Ltd",
"status": "success",
"destination": "Base · USDC → 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"amount": "250 USDT",
"amountUsd": "250.00",
"createdAt": "2026-06-26T11:00:00.000Z",
"receipt": {
"type": "payment_route_deposit",
"depositId": "dep-uuid-001",
"relayRequestId": "req_abc123",
"routeId": "route-uuid-001",
"routeName": "Supplier collection",
"status": "success",
"origin": {
"network": "Tron",
"symbol": "USDT",
"amount": "250",
"amountUsd": "250.00"
},
"destination": {
"network": "Base",
"symbol": "USDC",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"amount": "250",
"amountUsd": "250.00"
},
"depositTxHash": "0xabc123def4567890"
}
}
],
"total": 1
}
}Business endpoints accept an API key as a Bearer token. Key management requires a dashboard JWT and is not available via API key.
Authorization header
Authorization: Bearer rmf_live_xxxxxxxxSSSSSSSSSSSSSSSSSSSSSS
curl -X GET https://api.remitflex.io/v1/transactions \
-H "Authorization: Bearer rmf_test_xxxx"
const res = await fetch("https://api.remitflex.io/v1/transactions", {
headers: { Authorization: `Bearer ${process.env.REMITFLEX_API_KEY}` },
});
import os, requests
r = requests.get(
"https://api.remitflex.io/v1/transactions",
headers={"Authorization": f"Bearer {os.environ['REMITFLEX_API_KEY']}"},
)
Key prefixes
| Prefix | Environment |
|---|---|
rmf_test_ | Test / sandbox |
rmf_live_ | Production |
Live keys move real funds on-chain. Use
rmf_test_ keys during development.Obtaining keys
- Log in at dashboard.remitflex.io.
- Go to Settings → API Keys.
- Create a key with full access (
api:read+api:write) unless you only need a read-only reporter. - Copy the raw key immediately — it cannot be retrieved later.
Scopes
Secret API keys useapi:read and/or api:write (write implies read). Publishable keys (rmf_pk_*) are limited to payment-link embed reads (collections:read).
A 403 response with Missing required scopes: ... means the key is valid but lacks permission. Create a new key with the required scopes.
Auth errors
- 401 — Invalid key
- 403 — Missing scope
- 400 — No idempotency key
{
"status": "error",
"message": "Invalid API key"
}
{
"status": "error",
"message": "Missing required scopes: api:write"
}
{
"status": "error",
"message": "Idempotency-Key header is required for mutating API requests"
}
Dashboard JWT
The dashboard uses JWT access tokens (Authorization: Bearer eyJ...) with full access to business routes. JWT is required for /v1/auth/* and /v1/api-keys/*.
See the Authentication guide for the full key-creation workflow.Authorizations
API key created in the Remitflex Dashboard at dashboard.remitflex.io (rmf_live_... or rmf_test_...).
Key management endpoints require a dashboard JWT and are not part of this reference.
Query Parameters
Filter results to a single customer under your organisation.
Example:
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
⌘I
List transactions
curl --request GET \
--url http://localhost:4000/v1/transactions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:4000/v1/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "http://localhost:4000/v1/transactions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": "success",
"message": "Transactions fetched",
"data": {
"transactions": [
{
"id": "dep-uuid-001",
"kind": "payment_route",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerName": "Acme Ltd",
"status": "success",
"destination": "Base · USDC → 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"amount": "250 USDT",
"amountUsd": "250.00",
"createdAt": "2026-06-26T11:00:00.000Z",
"receipt": {
"type": "payment_route_deposit",
"depositId": "dep-uuid-001",
"relayRequestId": "req_abc123",
"routeId": "route-uuid-001",
"routeName": "Supplier collection",
"status": "success",
"origin": {
"network": "Tron",
"symbol": "USDT",
"amount": "250",
"amountUsd": "250.00"
},
"destination": {
"network": "Base",
"symbol": "USDC",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"amount": "250",
"amountUsd": "250.00"
},
"depositTxHash": "0xabc123def4567890"
}
}
],
"total": 1
}
}