Find & list transactions
Search every transaction by criteria: filter, sort, and page through matching transactions instead of retrieving them one ID at a time.
When you need more than a single transaction, retrieve every transaction that matches a set of criteria with the List Transactions API. It's a filtered, paginated search: you pass filter conditions (which accounts, which dates, which method or status) and PCE returns the matching transactions, newest-first.
Use it to build a transaction history, reconcile a date range, or find every transaction tied to an account, a payee, or your own externalId, without polling each transaction by ID.
List transactions vs. account ledger
List Transactions returns the transactions you scheduled (a payout, a collection, a transfer) with their status and lifecycle. The Account ledger returns the posted debits and credits with the running balance. Reach for the ledger when you're reconciling balances; reach for List Transactions when you're tracking the money movements themselves.
List transactions
Make POST request to /v1/transaction/list. Like other Treasury calls, it requires the PromiseMode header (NEVER for an immediate response, ALWAYS to defer processing).
Request
POST /v1/transaction/list
PromiseMode: NEVER
{
"pageNumber": 1,
"pageSize": 25,
"getTotalCount": true,
"sortOptions": {
"sortBy": "lastUpdatedOn",
"sortOrder": "DESC"
},
"criteria": {
"filters": [
{ "operator": "eq", "key": "source.account.id", "values": [4000693] },
{ "operator": "gte", "key": "createdOn", "values": ["07/15/2024 00:00:00"] }
]
}
}Response
{
"totalCount": 1,
"returnedCount": 1,
"pageNumber": 1,
"offset": 230001518,
"hasMore": false,
"resources": [
{
"resourceName": "transaction",
"url": "/v1/transaction/id/230001518",
"id": 230001518,
"amount": "5.00",
"type": "REGULAR",
"method": "WIRE",
"purpose": "payment",
"transactionClass": "SEND",
"source": {
"account": {
"resourceName": "account",
"url": "/v1/customer/id/4000854/account/id/4000693",
"id": 4000693
}
},
"destination": {
"externalAccount": {
"id": 4021251,
"accountNumberLast4": "2309",
"routingNumber": "011000015",
"holderName": "Lola",
"holderType": "CORPORATE",
"status": "ACTIVE"
}
},
"scheduleDate": "07/16/2024",
"status": "SCHEDULED",
"statusReason": "On User Request",
"statusDate": "07/16/2024 07:01:28",
"createdOn": "07/16/2024 07:01:28",
"lastUpdatedOn": "07/16/2024 07:01:28"
}
]
}Filters
Pass one or more filter conditions in criteria.filters[]. Each condition is a key, an operator, and one or more values. criteria is required.
| Key | Filter by |
|---|---|
id | The Passport transaction ID |
externalId | Your external identifier for the transaction |
source.account.id | Source Passport account |
source.externalAccount.id | Source external (linked bank) account |
source.card.id | Source card |
destination.account.id | Destination Passport account |
destination.externalAccount.id | Destination external (linked bank) account |
destination.address.id | Destination mailing address (for checks) |
scheduleDate | Date the transaction is scheduled to process |
type | Transaction type (e.g., REGULAR, REVERSAL) |
method | Rail: ACH, WIRE, CARD, CHECK, BOOK |
amount | Transaction amount |
status | Lifecycle status: SCHEDULED, PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED |
authCode | Authorization code |
createdOn / lastUpdatedOn | Timestamps (use gte + lte for a range) |
createdBy / lastUpdatedBy | Actor that created or last updated the transaction |
Supported operators: eq, ne, gt, gte, lt, lte, in, nin, like.
Filter by
externalIdwhen you track transactions by your own identifiers; you don't need to store Passport transaction IDs to find them again.
Pagination & sorting
A criteria match can span many transactions; page through the result set rather than pulling everything at once.
| Field | Purpose |
|---|---|
pageNumber | Page to return |
pageSize | Records per page (default 100) |
limit | Total records to return (1-100, default 100) |
offset | ID of the last record returned; pass it to fetch the next page (requires sorting by id) |
getTotalCount | Set true to include totalCount in the response |
sortOptions.sortBy | Sort field: id, createdOn, or lastUpdatedOn |
sortOptions.sortOrder | ASC or DESC |
The response echoes totalCount, returnedCount, pageNumber, offset (the ID of the last record returned), and hasMore so you can request the next page.
Scenarios
List transactions for an account
Read every transaction that moved money from one account, newest-first, the backbone of an activity view.
- Filter on
source.account.id(ordestination.account.id) witheq. - Sort
lastUpdatedOnDESC, set a modestpageSize, and page as the customer scrolls.
Reconcile a date range
Pull everything created in a window to reconcile against your own records.
- Combine
createdOngte(start) andcreatedOnlte(end). - Add
getTotalCount: trueso you know how many transactions to expect across pages.
Find failed or pending transactions
Surface transactions that need attention.
- Filter
statusin["PENDING", "FAILED"]. - Add a
methodfilter (for exampleeqACH) to narrow to one rail.
Find ACH reversals
Locate reversals generated against your ACH transactions.
- Filter
typein["REVERSAL"]. Each reversal'sprocessingDetail.parentlinks back to the original transaction.
Best practices
| Practice | Why |
|---|---|
| Track by your own IDs | Filter on externalId so you don't have to store Passport transaction IDs. |
| Page, don't pull | Use pageSize and offset for long result sets instead of requesting everything at once. |
| Prefer webhooks for live status | For a single transaction's status changes, subscribe to transaction events; use List Transactions for history and bulk queries, not polling. |
| Narrow with combined filters | Stack filters (account + date + status) to keep result sets small and responses fast. |
See also
- Transaction lifecycle: statuses, tracking a single transaction, and the payment-methods directory
- Find & track recurring transactions: list recurring schedules and the transactions they generate
- Account ledger & activity: posted debits and credits with the running balance
- Error Codes and Messages: reason and return codes when a transaction fails
Updated about 5 hours ago