Skip to main content

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

GET/managed_cards/{id}/statementTry it
{
"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.

Best suited to prepaid-mode cards

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)..

ParameterTypeDefaultValuesNotes
startPeriodintegernoneEpoch millisecondsStart of the statement period. Only return entries that posted at or after this value.
endPeriodintegernoneEpoch millisecondsEnd of the statement period. Only return entries that posted at or before this value. Must be greater than startPeriod if both are provided.
offsetinteger00 or greaterZero-based offset for paging through results.
limitintegernone1500Page size, capped at 500.
sortOrderstringASCASC | DESCASC returns the oldest entries first; DESC returns the most recent first.
transaction.typearrayall typesOne or more of card_payments, transfers, sends, outgoing_wire_transfers, incoming_wire_transfers, correspondent_bank_transfers, fees, system_transactionsFilter by one or more transaction types. Repeat the parameter for each value. Omit to fetch all entries.
executingAccessInstrument.idstringnoneAn 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). idFilter 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.typestringnonemanaged_cards | managed_accountsFilter 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:

FieldPurpose
entryIdStable 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.
descriptionHuman-readable label suitable for display.
timestampWhen the entry posted, in epoch milliseconds.
balanceAdjustmentHow much this entry moved the balance, as a signed amount.
balanceAfterThe actual balance after this entry posted.
counterpartyWho the money moved to, or from, where applicable.
feeReference to the fee charged for this transaction, if any.
forexCurrency-conversion details, when a conversion was involved.
relatedEntryIdLink to a related entry — most commonly a fee entry pointing to its parent transaction, or a reversal pointing to the original.
executingAccessInstrumentThe 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.
Posted activity only

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.
Migrating from the previous statement endpoint

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 PENDING and COMPLETED entries.
  • Balances are renamed to openingBalance and closingBalance, and each entry exposes a single balanceAdjustment and balanceAfter.
  • Type-specific data moves out of the untyped additionalFields map into typed fields on each entry.
  • Fees are first-class entries linked back to their parent transaction through relatedEntryId.