GET

List Statements

Lists the balance movements caused by API operations (payins, payouts, their fees, payout refunds and deposit reversals), newest first.

Movements made only in the panel are not returned. Without dates, the last 30 days are returned; the widest range accepted is 90 days (inclusive). filters echoes the window actually used and adds date_range_defaulted: true when you did not send both dates. amount is a string with 8 decimals. origin is null for manual operations; on incoming lines only origin.type is kept (reference, sequence and total are null). Data can be up to 5 minutes old.

GEThttps://bridge.bifrostcrypto.com/v1/statements
Required scope:statements:read(a new key with no list is read-only)
ᚱ
"In the ancestral archives of Valhalla, every movement between realms is eternally recorded. The statement scrolls reveal the complete history of your journey through the nine digital worlds."
Valkyries, Keepers of the Eternal Records

Headers

KeyValue
X-Bifrost-Invoke{{api_key}}

Query Parameters

ParameterExample
page
1
per_page
50
direction
out
type
WITHDRAWAL
balance
balance_tether
date_from
2026-01-01
date_to
2026-01-31
reference_id
order_12345
amount_from
10.00
amount_to
1000.00
origin_type
recurring_transfer

cURL Example

bash
curl -X GET "https://bridge.bifrostcrypto.com/v1/statements?page=1&per_page=50&direction=out" \
  -H "X-Bifrost-Invoke: YOUR_API_KEY"

Response Example

json
{
  "message": "statements_retrieved_success",
  "statements": [
    {
      "direction": "out",
      "type": "WITHDRAWAL",
      "amount": "150.50000000",
      "balance": "balance_tether",
      "internal_reference": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "origin": {
        "type": "recurring_transfer",
        "reference": "RT-1a2b3c4d",
        "sequence": 3,
        "total": 12
      },
      "created_at": "2026-01-20 14:32:10",
      "updated_at": "2026-01-20 14:32:10",
      "reference_id": "order_12345"
    },
    {
      "direction": "in",
      "type": "DEPOSIT",
      "amount": "1000.00000000",
      "balance": "balance_tether",
      "internal_reference": "f531c319-6957-45c6-a154-d4944ca3eee3",
      "origin": null,
      "created_at": "2026-01-18 09:05:44",
      "updated_at": "2026-01-18 09:05:44",
      "reference_id": "invoice_998"
    }
  ],
  "filters": {
    "balance": "balance_tether",
    "date_from": "2026-01-01",
    "date_to": "2026-01-31"
  },
  "meta": {
    "current_page": 1,
    "per_page": 50,
    "total": 2,
    "total_pages": 1
  }
}

Errors

Every error has the shape error.code, error.message and, when useful, error.details. Authentication, scope and rate-limit errors (401, 403, 429) apply to every endpoint and are described under Authentication.

StatusCodeWhenWhat to do
400invalid_paginationpage below 1 or per_page above 50.Fix the request before sending it again.
400invalid_parametersdirection, type, balance or origin_type is not an accepted value; details.field names it.Fix the request before sending it again.
400invalid_formatA date is not YYYY-MM-DD; details.field names it.Fix the request before sending it again.
400invalid_date_rangedate_from is after date_to.Fix the request before sending it again.
400date_range_too_wideThe window is longer than details.max_days (90).Query the period in smaller windows.
400invalid_amountamount_from or amount_to is not a number ≥ 0, or amount_from is above amount_to.Fix the request before sending it again.
400invalid_reference_idreference_id is longer than 255 characters.Fix the request before sending it again.
500database_errorThe query failed.Nothing was changed. Retry later.

Other responses

Responses that are not the happy path and still need handling in your integration.

400

Date range too wide

Ask for a window longer than max_days and the request is refused rather than served slowly. Page through the period in chunks.

json
{
  "error": {
    "code": "date_range_too_wide",
    "message": "The requested date range exceeds the maximum allowed",
    "details": {
      "max_days": 90
    }
  }
}
400

Invalid filter

Other 400 codes: invalid_pagination (page below 1 or per_page above 50), invalid_parameters (direction, type, balance or origin_type outside the accepted values; details.field names it), invalid_format (date not in YYYY-MM-DD; details.field), invalid_date_range (date_from after date_to), invalid_amount (amount_from/amount_to not numeric or negative, details.field; or amount_from above amount_to, details.reason = invalid_range), invalid_reference_id (reference_id longer than 255). A database failure answers 500 database_error.

json
{
  "error": {
    "code": "invalid_parameters",
    "message": "Invalid parameters provided",
    "details": {
      "field": "balance"
    }
  }
}