Italiano

Read-only API

Developer documentation · v1 · 6 November 2026

The iSwiss Pay API lets a program you run (accounting software, a dashboard, a reconciliation script) read your accounts, transactions and crypto wallet. It is read-only: nothing can be moved, changed or ordered with an API key.

1. Getting a key

2. Base URL and authentication

https://app.iswisspay.ca/core/api/v1

Send the key in the Authorization header on every request. Only GET is accepted; any other method returns 405.

curl -H "Authorization: Bearer isk_live_XXXXXXXX" \
     https://app.iswisspay.ca/core/api/v1/accounts

Limits: 60 requests per minute per key (beyond that, 429). Responses are JSON, UTF-8, never cached (Cache-Control: no-store).

3. Endpoints

Method and pathWhat it returns
GET /meWho the key belongs to: clientId, name, email, profile (personal or company), and the key’s own id and name.
GET /accountsYour accounts with balances: id, currency, IBAN, BIC, UK sort code and account number where present, balance, status.
GET /transactionsYour transactions, newest first. Filters: account (an account id), from and to (dates YYYY-MM-DD, inclusive), limit (1–500, default 100).
GET /rates?from=EUR&to=GBPThe current exchange rate between two currencies (ISO 4217).
GET /cryptoYour crypto wallet: balance per asset with its value in euro, and the total.
GET /crypto/transactionsCrypto movements, newest first: exchanges with euro (buy, sell) and on-chain movements (deposits, withdrawals, transfers between iSwiss clients). limit 1–500.
GET /crypto/pricesLive prices in euro for every supported asset (mid, buy and sell, with our margin included).

GET /accounts

{
  "accounts": [
    {
      "id": "cj:5f3a…",
      "provider": "cj",
      "currency": "EUR",
      "iban": "GB12CLJU04130712345678",
      "bic": "CLJUGB21",
      "sortCode": null,
      "accountNumber": null,
      "balance": 1250.40,
      "status": "ACTIVE",
      "opened": "2026-10-01T09:12:00.000Z"
    }
  ]
}

status is ACTIVE, SUSPENDED or CLOSED. Balances are numbers in the account currency (two decimals).

GET /transactions

curl -H "Authorization: Bearer isk_live_XXXXXXXX" \
     "https://app.iswisspay.ca/core/api/v1/transactions?from=2026-11-01&to=2026-11-30&limit=200"
{
  "transactions": [
    {
      "id": "cj:9b1c…",
      "accountId": "cj:5f3a…",
      "kind": "CREDIT",
      "status": "DONE",
      "amount": 200.00,
      "fee": 0,
      "currency": "EUR",
      "at": "2026-11-06T19:36:40.000Z",
      "reference": "Invoice 1042",
      "method": "sepa",
      "sender": { "name": "Example Ltd", "number": "DE89…", "bic": "", "address": "" },
      "recipient": null
    }
  ],
  "count": 1
}

kind is CREDIT (money in), DEBIT (money out) or FEE. status is DONE, PENDING or REJECTED. amount is always positive: use kind for the direction. sender is set on credits, recipient on debits.

GET /crypto

{
  "active": true,
  "verified": true,
  "currency": "EUR",
  "balances": [
    { "asset": "USDT", "amount": 150.0, "valueEur": 134.47 },
    { "asset": "BTC", "amount": 0.0125, "valueEur": 849.18 }
  ],
  "totalEur": 983.65,
  "at": "2026-11-06T22:10:00.000Z"
}

active is false when the client has not opened the crypto wallet yet; verified is false until identity verification is complete (balances are empty in both cases).

GET /crypto/transactions

{
  "transactions": [
    { "id": "a1b2…", "kind": "exchange", "status": "done", "from": "EUR", "to": "USDT",
      "amountFrom": 100.00, "amountTo": 111.2, "rate": 0.8993, "eur": 100.00,
      "at": "2026-11-06T18:02:11.000Z", "doneAt": "2026-11-06T18:02:12.000Z" },
    { "id": "e9a5…", "kind": "deposit", "status": "confirmed", "asset": "USDT", "amount": 50.0, "fee": 0,
      "network": "tron", "standard": "TRC-20", "txid": "e9a5534b…", "from": "TEVAe4…", "to": "TXk3…",
      "at": "2026-11-06T11:39:07.000Z" }
  ],
  "count": 2
}

Exchanges (kind: "exchange") have status done, waiting_stock (order waiting for stock, nothing charged), failed or cancelled. On-chain movements have kind deposit, withdraw or transfer.

GET /rates

{ "from": "EUR", "to": "GBP", "rate": 0.8412, "at": "2026-11-06T21:00:00.000Z" }

4. Errors

StatusBodyMeaning
401{"error":"unauthorized"}Missing, revoked or expired key.
403{"error":"account_blocked"}The account is suspended: write to Support.
405{"error":"method_not_allowed"}Only GET is allowed.
429{"error":"rate_limited"}More than 60 requests in a minute: wait and retry.
404{"error":"not_found"}Unknown path.

5. Good practice

Questions: write to us from Support in the app. The iSwiss team never asks you for your API key.

iSwiss Pay Limited
Registered office: 329 Howe Street #1273, Vancouver, BC V6C 3N2, Canada