Report Summary
The totals of a time window, beside the same totals for the window just before it: how many transactions, split by type and by status, how much moved per type and currency, and the fees paid on them. Use the two windows for "vs. previous period" deltas.
New in v3: v2 has no equivalent.
Authorization:
Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.
Headers:
Authorization: APIKey {SIGNED_JWT}
How to build and sign the JWT: Authentication.
Endpoint
/v3/reports/summary
Query parameters
The three report endpoints (summary, volume series, type breakdown) take the same filters, so they always describe the same transactions.
| Parameter | Type | Description |
|---|---|---|
from | string (date-time) | Required. Start of the window, inclusive. RFC 3339 (2026-07-01T00:00:00Z, any offset), or a bare date (2026-07-01), read as midnight UTC. |
to | string (date-time) | Required. End of the window, exclusive. Same format. At most 400 days after from. |
view | string | all (default), crypto (trades and crypto transfers) or fiat (bank transfers). |
transaction_type | string | One family: trade, crypto or bank. Overrides view when both are sent. |
kind | string | One sub-kind of that family: a trade side (buy, sell), a crypto direction (deposit, withdraw), a bank instrument (ach, wire, …). Any casing. Needs exactly one family: transaction_type, or view=fiat. |
status | string | Comma-separated states: preview, in_review, waiting_approval, pending, processing, confirmed, success, refund, return, issue, failed, cancelled. Absent counts every state, failed and pending included. |
coin | string | Only transactions that involve this asset, e.g. USDT. A trade counts if the asset is on either side. |
instruments | string | Comma-separated bank instruments: ach, wire, swift, clabe, debitcard, phonenum, pix, cvu, transfer. Bank-only report (view=fiat or transaction_type=bank). |
wire_type | string | domestic or international. Bank-only report, like instruments. |
search | string | Free text, at least 3 characters, over the fields the transactions listing searches: reference, external id, transaction id, account email, type, status, trade side, bank instrument. |
A transaction belongs to the window its creation time falls in. Reports cover trades, crypto transfers and bank transfers; platform fee transactions are not counted (fees reads the fees paid on the transactions themselves).
There is no account_id parameter. A workspace-scoped key (or a dashboard member) reports on the whole workspace; an account-scoped key (or a customer) reports on its own account only, and naming another account in account_id is refused with 403.
Response Sample
GET /v3/reports/summary?from=2026-07-01T00:00:00Z&to=2026-08-01T00:00:00Z
{
"current": {
"from": "2026-07-01T00:00:00Z",
"to": "2026-08-01T00:00:00Z",
"total_transactions": 6,
"counts_by_type": [
{ "type": "trade", "count": 3 },
{ "type": "crypto", "count": 2 },
{ "type": "bank", "count": 1 }
],
"counts_by_status": [
{ "status": "success", "count": 5 },
{ "status": "pending", "count": 1 }
],
"volumes": [
{
"type": "trade",
"usd_total": "363.95",
"by_currency": [
{ "currency": "EUR", "amount": "150.75", "usd_amount": "163.95", "count": 2 },
{ "currency": "USD", "amount": "200", "usd_amount": "200", "count": 1 }
]
},
{
"type": "crypto",
"usd_total": "3549.85",
"by_currency": [
{ "currency": "BTC", "amount": "0.05", "usd_amount": "3050.25", "count": 1 },
{ "currency": "USDT", "amount": "500", "usd_amount": "499.6", "count": 1 }
]
},
{
"type": "bank",
"usd_total": "0",
"by_currency": [
{ "currency": "ARS", "amount": "150000", "count": 1 }
]
}
],
"fees": {
"usd_total": "12.25",
"by_currency": [
{ "currency": "USD", "amount": "12.25", "usd_amount": "12.25", "count": 6 }
]
},
"unconverted_currencies": ["ARS"]
},
"previous": {
"from": "2026-05-31T00:00:00Z",
"to": "2026-07-01T00:00:00Z",
"total_transactions": 2,
"counts_by_type": [
{ "type": "trade", "count": 2 }
],
"counts_by_status": [
{ "status": "success", "count": 2 }
],
"volumes": [
{
"type": "trade",
"usd_total": "320",
"by_currency": [
{ "currency": "USD", "amount": "320", "usd_amount": "320", "count": 2 }
]
},
{ "type": "crypto", "usd_total": "0", "by_currency": [] },
{ "type": "bank", "usd_total": "0", "by_currency": [] }
],
"fees": {
"usd_total": "3.2",
"by_currency": [
{ "currency": "USD", "amount": "3.2", "usd_amount": "3.2", "count": 2 }
]
}
}
}
Response Schema
| Field | Type | Description |
|---|---|---|
current | window | The window asked for. |
previous | window | The window of the same length ending where current starts. Same length, not the previous calendar month: July (31 days) compares with the 31 days before it, from May 31. |
Each window:
| Field | Type | Description |
|---|---|---|
from / to | string (date-time) | The window these figures cover, in UTC. |
total_transactions | integer | How many transactions the window holds. |
counts_by_type | array | { type, count } per family (trade, crypto, bank), most frequent first. A family with none is left out. |
counts_by_status | array | { status, count } per state, most frequent first, every state reported as it is. Which ones count as unfinished is yours to decide. |
volumes | array | One entry per family the filters cover. |
volumes[].type | string | trade, crypto or bank. |
volumes[].by_currency | array | What moved, per currency. Never summed across currencies. |
volumes[].usd_total | string (decimal) | The sum of the rows' usd_amount. Leaves out any currency in unconverted_currencies. |
fees.by_currency | array | The fees paid on the window's transactions, per fee currency. |
fees.usd_total | string (decimal) | Their sum in USD, the same way. |
unconverted_currencies | array of strings | Currencies with no USD price right now. Their rows keep amount but carry no usd_amount, and the USD totals leave them out. An empty string is a row whose transaction recorded no currency. Absent when every row converted. |
Each by_currency row:
| Field | Type | Description |
|---|---|---|
currency | string | The currency the amount is in. Empty when the transaction recorded none. |
amount | string (decimal) | The total, in that currency. |
usd_amount | string (decimal) | The same total in USD, at the current market price. Absent when the currency has no price. |
count | integer | How many transactions make up the total. |
What a family's volume is:
| Family | amount is | In |
|---|---|---|
trade | The trade's quantity, its fiat side. | The quantity's currency. |
crypto | The settled amount. | The coin transferred. |
bank | The transfer amount. | The transfer's currency. |
usd_amount and usd_total are a convenience priced at request time, not a figure stored with the transaction: the same window asked twice can price differently. amount is the record.
Errors
| Status | message | When |
|---|---|---|
400 | failed to parse request | from or to is not a timestamp or a date. |
400 | invalid_window | from is not before to. |
400 | window_too_wide | The window is longer than 400 days. |
400 | invalid_status | A status value is not one of the states above. |
400 | invalid_instrument | An instruments value is not one of the instruments above. |
400 | instruments_require_fiat_view | instruments sent on a report that is not bank-only. |
400 | wire_type_requires_fiat_view | wire_type sent on a report that is not bank-only. |
400 | kind_requires_one_transaction_type | kind sent without exactly one family. |
401 | unauthorized | Missing or invalid signature. |
403 | forbidden | An account-scoped key named another account in account_id. |
422 | window_required | from or to is missing. |
422 | Validation failed | view, transaction_type or wire_type is not an accepted value, or search is shorter than 3 characters; details names it. |
Support and Resources
If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.
Stay Updated
Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:
- Instagram: BlockWyre Instagram
- Twitter: BlockWyre Twitter
- Facebook: BlockWyre Facebook
- LinkedIn: BlockWyre LinkedIn
We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!