Retrieve a card statement
Retrieve an authoritative, immutable statement for a managed card over a given period. The statement reports the card's opening and closing balances and every transaction that settled in the period. For a general introduction, see the statements overview.
Prerequisites
- An existing managed card
id. - An authenticated end-user token for a user that belongs to the card ownerCard Owner The individual or business entity that owns the cards and the funds available to be spent via card purchases. Before cards can be issued, the card owner must be onboarded on Weavr, including completing a KYB process for business card owners or a KYC process for individual card owners..
Retrieve a statement
- Response
{
"entry": [
{
"transactionId": {
"type": "AUTHORISATION",
"id": "string"
},
"entryState": "PENDING",
"originalAmount": {
"currency": "str",
"amount": 0
},
"forexRate": {
"value": 0,
"scale": -128
},
"transactionAmount": {
"currency": "str",
"amount": 0
},
"availableBalanceAdjustment": {
"currency": "str",
"amount": 0
},
"actualBalanceAdjustment": {
"currency": "str",
"amount": 0
},
"balanceAfter": {
"currency": "str",
"amount": 0
},
"availableBalanceAfter": {
"currency": "str",
"amount": 0
},
"actualBalanceAfter": {
"currency": "str",
"amount": 0
},
"transactionFee": {
"currency": "str",
"amount": 0
},
"cardholderFee": {
"currency": "str",
"amount": 0
},
"processedTimestamp": 0,
"sourceAmount": {
"currency": "str",
"amount": 0
},
"userCurrencyTransactionDetails": {
"userTransactionAmount": {
"currency": "str",
"amount": 0
},
"userExchangeRate": "string"
},
"additionalFields": {
"property1": "string",
"property2": "string"
}
}
],
"count": 0,
"responseCount": 0,
"startBalance": {
"currency": "str",
"amount": 0
},
"endBalance": {
"currency": "str",
"amount": 0
},
"footer": "string"
}
The statement contains only posted transactions — those that have settled and moved the actual balance of the card. Pending authorizations and in-flight activity are not included; retrieve those from transaction activity.
A card statement is most useful for prepaid-mode cards, which hold their own balance, so openingBalance, closingBalance, and balanceAfter refer only to the requested card. Debit-mode cards are linked to a parent managed accountManaged Account An account held at a financial institution that can be created and managed through the Weavr platform. Each account has a balance where customers can hold funds. Optionally, an IBAN can be assigned to enable wire transfers to bank accounts outside of Weavr. that can have its own independent transactions affecting the balance, so the account statement gives a more complete picture for those.
Query parameters
The statement endpoint accepts the following query parameters. Combine them to page through results, narrow to a time range, or filter by transaction type or access instrumentInstrument A financial product owned by an Identity. There are two types: Managed Accounts (stored-value accounts that hold balances and can receive wire transfers) and Managed Cards (prepaid cards - virtual or physical - used for purchases)..
| Parameter | Type | Default | Values | Notes |
|---|---|---|---|---|
startPeriod | integer | none | Epoch milliseconds | Start of the statement period. Only return entries that posted at or after this value. |
endPeriod | integer | none | Epoch milliseconds | End of the statement period. Only return entries that posted at or before this value. Must be greater than startPeriod if both are provided. |
offset | integer | 0 | 0 or greater | Zero-based offset for paging through results. |
limit | integer | none | 1–500 | Page size, capped at 500. |
sortOrder | string | ASC | ASC | DESC | ASC returns the oldest entries first; DESC returns the most recent first. |
transaction.type | array | all types | One or more of card_payments, transfers, sends, outgoing_wire_transfers, incoming_wire_transfers, correspondent_bank_transfers, fees, system_transactions | Filter by one or more transaction types. Repeat the parameter for each value. Omit to fetch all entries. |
executingAccessInstrument.id | string | none | An access instrumentInstrument A financial product owned by an Identity. There are two types: Managed Accounts (stored-value accounts that hold balances and can receive wire transfers) and Managed Cards (prepaid cards - virtual or physical - used for purchases). id | Filter by the access instrumentInstrument A financial product owned by an Identity. There are two types: Managed Accounts (stored-value accounts that hold balances and can receive wire transfers) and Managed Cards (prepaid cards - virtual or physical - used for purchases). that initiated the transaction. |
executingAccessInstrument.type | string | none | managed_cards | managed_accounts | Filter by the type of access instrumentInstrument A financial product owned by an Identity. There are two types: Managed Accounts (stored-value accounts that hold balances and can receive wire transfers) and Managed Cards (prepaid cards - virtual or physical - used for purchases). that initiated the transaction. |
Response shape
A successful request returns a Statement object:
{
"openingBalance": { "currency": "EUR", "amount": 0 },
"closingBalance": { "currency": "EUR", "amount": 195335 },
"entries": [
/* StatementEntry objects */
],
"count": 24,
"responseCount": 24,
"footer": "Electronic money account is provided by Paynetics AD..."
}
openingBalance and closingBalance are the actual balances at the start and end of the period, computed by Weavr against the entries in the period. You don't need to reconstruct them.
count is the total number of entries that match the filter criteria across the full result set. responseCount is the number of entries returned in this response, that is, this page.
footer carries the regulatory text and any card-scheme content required for digital statements. It is part of the response, not something your app generates.
Statement entry
Each entry in entries is a StatementEntry:
| Field | Purpose |
|---|---|
entryId | Stable identifier for this entry. Other entries reference it through relatedEntryId. |
transaction | { id, type } — the transaction this entry posts. type is the discriminator: card_payments, transfers, sends, outgoing_wire_transfers, incoming_wire_transfers, correspondent_bank_transfers, fees, or system_transactions. |
description | Human-readable label suitable for display. |
timestamp | When the entry posted, in epoch milliseconds. |
balanceAdjustment | How much this entry moved the balance, as a signed amount. |
balanceAfter | The actual balance after this entry posted. |
counterparty | Who the money moved to, or from, where applicable. |
fee | Reference to the fee charged for this transaction, if any. |
forex | Currency-conversion details, when a conversion was involved. |
relatedEntryId | Link to a related entry — most commonly a fee entry pointing to its parent transaction, or a reversal pointing to the original. |
executingAccessInstrument | The card or account IBANIBAN International Bank Account Number - a standardized international bank account identifier. Managed accounts can be assigned an IBAN to enable wire transfers to and from bank accounts outside of Weavr. IBANs are required for EUR accounts and enable SEPA transfers. that initiated the transaction. |
Because a statement contains only settled transactions, balanceAdjustment and balanceAfter both refer to the actual balance. There are no separate available-balance fields, and there are no pending entries.
Response formats
Set the Accept header to choose the format:
application/json— for programmatic use.application/pdf— for download and presenting to end customers. The PDF is our curated, out-of-the-box rendering of the statement, including the regulatory footer. See the UI reference implementation for a worked example.text/csv— for export into spreadsheets and downstream tooling.
This endpoint replaces the previous card statement behaviour, which is now deprecated. The change is non-breaking: the previous behaviour remains the default, and the deprecated endpoint stays available at /deprecated/managed_cards/{id}/statement.
If you currently use the deprecated endpoint, to opt in to the new behaviour send the x-api-version: LATEST header with your request. The main differences are:
- The statement now contains settled transactions only, so the response no longer mixes
PENDINGandCOMPLETEDentries. - Balances are renamed to
openingBalanceandclosingBalance, and each entry exposes a singlebalanceAdjustmentandbalanceAfter. - Type-specific data moves out of the untyped
additionalFieldsmap into typed fields on each entry. - Fees are first-class entries linked back to their parent transaction through
relatedEntryId.