Loam Customer API · Preview

Developer Hub

Start here to build on the Loam Customer API.

Both paths need credentials. Start by creating an API client.

Payments you can read today

List the organisation's payments with a bearer token. An empty page is a success — nothing has been recorded yet. Sending money is a different call: it needs the money.write scope, an owner grant under step-up authentication, and an approved destination, and it stays closed in preview.

GET /api/v1/payments
curl -H "Authorization: Bearer $LOAM_TOKEN" \  "$LOAM_API_BASE/payments"// Response
{
  "ok": true,
  "data": [
    {
      "id": "c4d8e2f0-1a3b-45cd-8e9f-0a1b2c3d4e5f",
      "state": "settled",
      "source_kind": "wallet_transfer",
      "fiat_amount": 2500000,
      "fiat_currency": "USD",
      "crypto_amount": null,
      "crypto_currency": null,
      "trade_id": null,
      "created_at": "2026-07-14T09:12:04.118Z",
      "updated_at": "2026-07-14T09:14:11.004Z",
      "settled_at": "2026-07-14T09:14:11.004Z",
      "failed_at": null
    }
  ],
  "page": { "next_cursor": null }
}

What the API covers today

Preview access is deliberately narrower than the published contract. Everything below is callable now or names the grant it is waiting on.

Open in preview Scopes read and write

  • Settled balances GET /api/v1/balances
  • Payments, listed GET /api/v1/payments
  • Treasury vault terms GET /api/v1/vaults
  • Foreign-exchange quotes POST /api/v1/fx/quotes

Closed in preview Scope money.write

  • Payments to an approved destination POST /api/v1/payments
  • Funds in from a bank account POST /api/v1/onramp
  • Funds out to a bank account POST /api/v1/offramp
  • Vault deposits and withdrawals POST /api/v1/vaults/…

Money movement needs a human organisation owner to grant the scope under step-up authentication, set a per-transaction limit, and approve the destination in advance. Those endpoints stay closed until preview ends.

How the API behaves

  • OAuth 2.0

    Client credentials grant

    Exchange a client id and secret for a short-lived bearer token with one form-encoded request. Scopes are read from the client per request, so narrowing one applies at once.

  • Envelope

    One shape for every route

    Success is ok then data; failure is ok: false with a machine-readable error code.

  • Idempotency

    Retries cost nothing

    Every write requires an Idempotency-Key. The same key with the same body replays the first outcome instead of writing twice.

  • Pagination

    Cursors, not offsets

    List routes return page.next_cursor. Pass it back as cursor until it comes back null.

Pick a path from here: the quickstart if you want a working request in front of you first, the reference if you already know the call you need.

Loam © 2026 Loam.

Loam is operated by Agridex Limited, company no. 13184186, registered in England and Wales, with registered office at Thomas House, 84 Eccleston Square, London, England, SW1V 1PX