What this report contains
A financial transaction is one posted entry in Amazon's ledger for your account: a charge, a fee, a payment or an adjustment, posted on a date, in a marketplace, with a total. This report is the Finances API's listTransactions feed, and one row of it is one transaction, identified by transaction_id, posted at posted_date, carrying transaction_type, transaction_status, description, total_amount beside total_amount_currency_code, the marketplace (reported_marketplace_id, marketplace_name), selling_partner_id and account_type. A transaction Amazon is holding back also carries deferral_reason and maturity_date.
Each transaction document nests four collections, so the file lands as six tables, and the field reference below is grouped under one heading per table — which is why transaction_id and posted_date appear once under each of the six. After the transactions table come:
- Items — one row per item in the transaction, keyed by transaction_id and item_index, with the item's own description and total_amount, and its product context flattened on: asin, sku, fulfillment_network, quantity_shipped. Every item has exactly one. - Item-level breakdowns and transaction-level breakdowns — the recursive tree of what an amount is made of. Each node is a row with its level, its slash-joined breakdown_path (Expenses/AmazonFees/Commission), its breakdown_type and its breakdown_amount. Four levels were observed in production, Sales down through ProductCharges to Base, and parents are written before children. - Item identifiers and transaction identifiers — name/value pairs Amazon attaches, related_identifier_name and related_identifier_value, at both levels.
Two facts about the shape matter more than any column. A breakdown parent's amount already sums its children, so a breakdown table is a tree, not a list to total. And every child row carries posted_date copied from its transaction, because posted date is the axis the whole report is filtered and re-stated on.
Transactions arrive in three statuses — RELEASED, DEFERRED and DEFERRED_RELEASED — and a deferred one changes status in place, to DEFERRED_RELEASED, when it is released; maturity_date is the date Amazon is due to release it. Amazon also sends an address context on transactions, but it arrives with no fields at all without a restricted data token, so it is not carried here. The column set was established from 2,500 production transactions in the US marketplace.
How to get it
There is no Reports API report type for this data. It comes from the Selling Partner API Finances API, version 2024-06-19, through the listTransactions operation on GET /finances/2024-06-19/transactions — a synchronous, paginated live endpoint. The posted-date window is postedAfter and postedBefore, the store is marketplaceId, and pagination is nextToken; transactionStatus, relatedIdentifierName and relatedIdentifierValue narrow the result further. Amazon marks every parameter optional, but postedAfter is required unless you pass a related identifier, both dates must be more than two minutes older than the request, and you have to follow nextToken until it comes back null because the operation can return empty pages in the middle of a result. The response is JSON, and each transaction document nests the four collections that become the six tables.
The nearest thing in Seller Central is the Payments dashboard's Transaction View tab. Amazon's own seller site gives two ways to it — Reports → Payments, then the Transaction View tab, or Payments → Payments, which opens the dashboard on Statement View. Amazon does not say what that tab carries, so treat it as where to eyeball a transaction, not as an export of this feed.
Unlike the region-wide flat-file reports, the marketplaceId parameter here is honoured: a response is one marketplace, and in 2,500 of 2,500 validated transactions the document's own marketplace matched the one requested. So to cover an account you make one call per marketplace, and you can trust reported_marketplace_id on each row.
The window is a posted-date filter, and the rows it returns are their current state. One request's span is capped: if postedAfter and postedBefore are more than 180 days apart the response comes back empty, so a backfill has to be walked in windows rather than asked for in one call. Amazon also warns that the response "might not include orders from the last 48 hours", which makes the newest two days of any window provisional. And because a deferred transaction's status flips when it is released, a day you pulled once is not final, so a rolling window of posted days has to be re-pulled and re-stated rather than read once and kept.
The trap that stops the call working at all is authorization vintage. An older refresh token, granted before this operation existed for your app, answers 403 Access to requested resource is denied on listTransactions — even while the same credential's v0 listFinancialEvents works. The grant is per operation, not per API version; the same old credential is refused on v0 listFinancialEventGroups too. The fix is for the seller to re-authorize the app, and nothing in the request changes.
Sample rows
Illustrative values, not data from a real account. Shown to give the shape of the file.
| transaction_id | posted_date | transaction_status | total_amount | total_amount_currency_code | reported_marketplace_id | marketplace_name | deferral_reason | maturity_date |
|---|---|---|---|---|---|---|---|---|
| TX-EXAMPLE-0001 | 2026-09-08T14:05:00Z | RELEASED | 42.50 | USD | ATVPDKIKX0DER | Amazon.com | ||
| TX-EXAMPLE-0002 | 2026-09-08T16:20:00Z | RELEASED | 18.00 | USD | ATVPDKIKX0DER | Amazon.com | ||
| TX-EXAMPLE-0003 | 2026-09-09T09:15:00Z | DEFERRED | 120.00 | USD | ATVPDKIKX0DER | Amazon.com | DD7 | 2026-09-16T00:00:00Z |
| TX-EXAMPLE-0004 | 2026-09-10T11:40:00Z | DEFERRED_RELEASED | 58.00 | USD | ATVPDKIKX0DER | Amazon.com | DD7 | 2026-09-10T00:00:00Z |
| TX-EXAMPLE-0005 | 2026-09-11T18:30:00Z | RELEASED | 9.99 | USD | ATVPDKIKX0DER | Amazon.com |
Field reference
Main table
| Column | Type | Description |
|---|---|---|
transaction_id | string | Amazon's identifier for the transaction, and the row's identity in the transactions table. Every child row in the other five tables carries the same value to join back on. |
posted_date | timestamp_ms | When Amazon posted the transaction. This is the one column the request window filters on, so it decides which day's pull a transaction belongs to, and it is copied onto every child row so each table can be re-stated by posted day. |
transaction_type | string | Amazon's classification of the transaction. Amazon's reference documents a single possible value, Shipment, and does not model the field as an enum, so the full vocabulary is neither published nor confirmed from the evidence behind this page. |
transaction_status | string | One of RELEASED, DEFERRED or DEFERRED_RELEASED, all three observed in production and all three enumerated in Amazon's reference. It changes in place: a DEFERRED transaction becomes DEFERRED_RELEASED when it is released, so the same transaction_id can come back with a different status on a later pull of the same posted day. |
description | string | Amazon's text describing the transaction. |
total_amount | decimal | The transaction's total, as a decimal, beside total_amount_currency_code. The transaction-level breakdown table describes what it is made of; this column is the whole-transaction figure. |
total_amount_currency_code | string | The currency total_amount is in. Every amount in this report sits beside its own currency code and nothing is converted, so group on this before summing across marketplaces. |
reported_marketplace_id | string | The marketplace id Amazon wrote in the document itself, as opposed to the one requested. In 2,500 of 2,500 production transactions it matched the requested marketplace; it is carried so that a response which ever spanned marketplaces would land visibly rather than mislabelled. |
marketplace_name | string | The marketplace's name as Amazon labels it in the document, alongside reported_marketplace_id. |
selling_partner_id | string | The seller account the transaction belongs to. |
account_type | string | Amazon's account type label on the transaction. Amazon's reference describes it only as "the type of account in the transaction" and publishes no value list, and it cannot be filtered on, so the literal values are not confirmed from the evidence behind this page either. |
deferral_reason | string | Why Amazon is holding the transaction, flattened from the transaction's DeferredContext — codes such as DD7. Expect it empty on a transaction that was never deferred. |
maturity_date | timestamp_ms | When a deferred transaction is due to release, from the same DeferredContext. Once it passes, transaction_status changes in place on the same row. |
items
| Column | Type | Description |
|---|---|---|
transaction_id | string | Items table. The transaction this item belongs to; join it to the transactions table on this column. |
posted_date | timestamp_ms | Items table. The parent transaction's posted date, copied onto the item row so the table is re-stated by the same posted-day window as its parent. |
item_index | int64 | Items table. The item's position within its transaction. With transaction_id it identifies the item, and it is the key the item-level breakdowns and item identifiers carry to join back to it. Amazon's Item schema carries no index of its own, so this is the position in the items array as it arrived rather than a field Amazon publishes. |
description | string | Items table. Amazon's text describing the item. |
total_amount | decimal | Items table. The item's total, as a decimal, beside its own currency code. The item-level breakdown table describes what it is made of. |
total_amount_currency_code | string | Items table. The currency the item's total_amount is in. |
asin | string | Items table. The item's ASIN, flattened from its ProductContext — every item carries exactly one. |
sku | string | Items table. The seller SKU, from the same ProductContext as asin. |
fulfillment_network | string | Items table. Which fulfilment network handled the item, from its ProductContext. Amazon documents it as a plain string with no value list, so the literal values are not confirmed from the evidence behind this page either. |
quantity_shipped | int64 | Items table. Units shipped for this item, from its ProductContext. The one count column in the whole report; everything else numeric is money. |
item_level_breakdowns
| Column | Type | Description |
|---|---|---|
transaction_id | string | Item-level breakdowns table. The transaction this breakdown node descends from. |
posted_date | timestamp_ms | Item-level breakdowns table. The parent transaction's posted date, copied down. |
item_index | int64 | Item-level breakdowns table. Which item of the transaction this node breaks down; join on transaction_id and item_index together. |
level | int64 | Item-level breakdowns table. The node's depth in the item's breakdown tree. Four levels were observed in production. Filter on this, or on breakdown_path, before summing — a parent's amount already includes its children. |
breakdown_path | string | Item-level breakdowns table. The node's slash-joined ancestry, such as Expenses/AmazonFees/Commission. Parents are written before their children. |
breakdown_type | string | Item-level breakdowns table. The name of this node — Sales, ProductCharges, Base and so on, the last segment of breakdown_path. |
breakdown_amount | decimal | Item-level breakdowns table. This node's amount, as a decimal, beside its own currency code. A parent's amount already sums its children, so summing the whole column double-counts. |
breakdown_amount_currency_code | string | Item-level breakdowns table. The currency breakdown_amount is in. |
item_related_identifiers
| Column | Type | Description |
|---|---|---|
transaction_id | string | Item identifiers table. The transaction this identifier belongs to. |
posted_date | timestamp_ms | Item identifiers table. The parent transaction's posted date, copied down. |
item_index | int64 | Item identifiers table. Which item of the transaction this identifier is attached to. |
related_identifier_name | string | Item identifiers table. The name of a reference Amazon attached to the item, from its name/value identifier list. Amazon's item-level enum is ORDER_ADJUSTMENT_ITEM_ID, COUPON_ID, REMOVAL_SHIPMENT_ITEM_ID and TRANSACTION_ID — a different and shorter list than the transaction-level one. Which of them a real file carries is not confirmed from the evidence behind this page. |
related_identifier_value | string | Item identifiers table. The value of that reference. |
transaction_level_breakdowns
| Column | Type | Description |
|---|---|---|
transaction_id | string | Transaction-level breakdowns table. The transaction this node breaks down. |
posted_date | timestamp_ms | Transaction-level breakdowns table. The transaction's posted date, copied down. |
level | int64 | Transaction-level breakdowns table. The node's depth in the transaction's breakdown tree; four levels were observed. Filter on it before summing. |
breakdown_path | string | Transaction-level breakdowns table. The node's slash-joined ancestry, parents before children. |
breakdown_type | string | Transaction-level breakdowns table. The name of this node — the last segment of breakdown_path. |
breakdown_amount | decimal | Transaction-level breakdowns table. This node's amount, beside its own currency code. A parent's amount already sums its children. |
breakdown_amount_currency_code | string | Transaction-level breakdowns table. The currency breakdown_amount is in. |
transaction_related_identifiers
| Column | Type | Description |
|---|---|---|
transaction_id | string | Transaction identifiers table. The transaction this identifier belongs to. |
posted_date | timestamp_ms | Transaction identifiers table. The transaction's posted date, copied down. |
related_identifier_name | string | Transaction identifiers table. The name of a reference Amazon attached to the whole transaction. Amazon's transaction-level enum is ORDER_ID, SHIPMENT_ID, FINANCIAL_EVENT_GROUP_ID, REFUND_ID, INVOICE_ID, DISBURSEMENT_ID, TRANSFER_ID, DEFERRED_TRANSACTION_ID, RELEASE_TRANSACTION_ID and SETTLEMENT_ID; only ORDER_ID and FINANCIAL_EVENT_GROUP_ID can be filtered on in the request. Which of them a real file carries is not confirmed from the evidence behind this page. |
related_identifier_value | string | Transaction identifiers table. The value of that reference. |
Use cases
Getting the real fee on a single order item. Filter the item-level breakdowns to one transaction_id and item_index, then to the leaf you want by breakdown_path — for example Expenses/AmazonFees/Commission — and read breakdown_amount. The item row beside it gives the asin, sku and quantity_shipped the fee applied to.
Knowing how much cash Amazon is holding. Transactions with transaction_status of DEFERRED are money that has posted but not released. Sum their total_amount grouped by total_amount_currency_code, and use maturity_date to see when each is due and deferral_reason to see why it is held.
Building a per-SKU net from the ledger. The items table carries sku and asin on every item, and the item-level breakdowns split each item's amount into sales and fees. Joining the two on transaction_id and item_index, and keeping one level of the tree, gives net proceeds per SKU per posted day without a settlement file.
Keeping marketplaces apart in a multi-country account. One call is one marketplace and every row carries reported_marketplace_id, so a European or North American account can be reported per country from this feed without the currency guesswork the account-level event groups require.
Tracing a transaction back to its source record. The identifier tables hold the name/value references Amazon attaches at transaction and item level, related_identifier_name beside related_identifier_value. Amazon's reference enumerates the transaction-level names as ORDER_ID, SHIPMENT_ID, FINANCIAL_EVENT_GROUP_ID, REFUND_ID, INVOICE_ID, DISBURSEMENT_ID, TRANSFER_ID, DEFERRED_TRANSACTION_ID, RELEASE_TRANSACTION_ID and SETTLEMENT_ID, and gives items a separate, shorter list — ORDER_ADJUSTMENT_ITEM_ID, COUPON_ID, REMOVAL_SHIPMENT_ITEM_ID and TRANSACTION_ID. These are the hooks to match a ledger entry to the order, refund or payout it came from.
Limitations and gotchas
Summing a breakdown table double-counts. Each node's breakdown_amount already includes its children — the Sales node includes ProductCharges, which includes Base. Totalling a breakdown table across all rows counts every leaf once per ancestor. Filter on level, or on a path prefix, before you add anything.
Statuses change in place. RELEASED, DEFERRED and DEFERRED_RELEASED all appear, and a DEFERRED transaction's status changes when its maturity_date passes, on a row you may already have stored. Anything that pulls a posted day once and keeps it will hold stale statuses. Re-pull a rolling window of posted days and overwrite.
Six tables share column names. transaction_id, posted_date, description, total_amount and item_index each appear in several tables. A join on transaction_id alone fans out across items; anything below an item needs item_index as well.
Money is not converted. Every amount carries its own currency code, and nothing is converted. Group on the currency code before summing.
Address data is absent. The address context Amazon attaches arrives with no fields at all unless the call carries a restricted data token, so it is deliberately not part of this report.
Old authorizations get 403. A seller who authorized your app before listTransactions was part of its grant is denied on it until they re-authorize, even when other Finances calls succeed for them. It looks like a permissions bug in your code and is not one.
Some vocabularies are open-ended, and some are just unpublished. breakdown_type Amazon states outright is "an open-ended string" with no published list of values, added to as needed — so Sales, ProductCharges and Base are examples, and anything reading a breakdown table has to tolerate a type it has never seen. The rest is silence rather than openness: the reference settles the three status values and both identifier-name lists, but documents transaction_type with a single possible value, Shipment, which plainly is not the whole set, and gives account_type and fulfillment_network no value list at all. Amazon also publishes no earliest date for the operation — only the 180-day cap on one request's span — so how far back it answers is unknown until a real backfill is run.
FAQ
listFinancialEvents is the v0 Finances API operation; listTransactions is the 2024-06-19 version, and this report is built on it. Access to each is granted separately, so a credential can work on one and be refused on the other.
Because the report lands as six tables: the transactions themselves, their items, the item-level and transaction-level breakdown trees, and the identifier lists at both levels. Every child row carries transaction_id and posted_date to join back and to be re-stated by posted day, so the columns repeat once per table. The field reference is grouped under a heading per table, so each repeat sits with the table it belongs to.
All three appear in production and all three are enumerated in Amazon's reference. DEFERRED money has posted but Amazon is holding it, with a deferral reason such as DD7 and a maturity date; RELEASED money is not held. DEFERRED_RELEASED is a transaction that was deferred in the past and is now released — Amazon states that a deferred transaction's status is updated to DEFERRED_RELEASED when the transaction is released. The change happens in place, on the same transaction id.
Because the breakdowns are a tree and a parent's amount already includes its children. Sales includes ProductCharges, which includes Base, so summing every row counts each leaf several times. Pick one level, or one path, and sum only that.
No. The marketplaceId parameter is honoured, so a response is one marketplace and each row carries the marketplace Amazon wrote in the document. Make one call per marketplace to cover an account.
Because access follows the vintage of the authorization. A refresh token granted before the operation was part of your app's grant is refused on it even though other Finances calls work for the same seller. The seller has to re-authorize your app; nothing in the request is wrong.
Sources
Every researched claim on this page, and the Amazon or Walmart page it came from.
- marketplaces — developer-docs.amazon.com/finances-api-v2024-06-19-use-case-guide — the Finances API guide's Roles table gives listTransactions a Regions value of "NA, EU, FE", Amazon's three SP-API regions, with no per-store exception. The v0 operations listed beside it are qualified "NA, EU, FE except where noted"; the v2024-06-19 operations are not, so the operation is published for every store a seller sells in.
- latency — developer-docs.amazon.com/finances-api-v2024-06-19-reference — the listTransactions description states "Financial events might not include orders from the last 48 hours", and both postedAfter and postedBefore must be "more than two minutes before the time of the request".
- history_window — developer-docs.amazon.com/finances-api-v2024-06-19-reference — postedBefore states "If PostedAfter and PostedBefore are more than 180 days apart, the response is empty". That caps one request's span. Amazon publishes no earliest date, retention period or archive statement for the operation.
- how-to-get-it (request parameters) — developer-docs.amazon.com/finances-api-v2024-06-19-reference — GET /finances/2024-06-19/transactions takes postedAfter, postedBefore, marketplaceId, transactionStatus, relatedIdentifierName, relatedIdentifierValue and nextToken. All are marked optional, but postedAfter "is required if you do not specify a related identifier", and nextToken is to be followed "until nextToken is null" because "this operation can return empty pages".
- fields (transaction_status) — developer-docs.amazon.com/finances-api-v2024-06-19-reference — the reference enumerates the same three values the evidence observed, DEFERRED, RELEASED and DEFERRED_RELEASED, and states "The status of a deferred transaction is updated to DEFERRED_RELEASED when the transaction is released".
- fields (related_identifier_name) — developer-docs.amazon.com/finances-api-v2024-06-19-reference — the RelatedIdentifierName enum is ORDER_ID, SHIPMENT_ID, FINANCIAL_EVENT_GROUP_ID, REFUND_ID, INVOICE_ID, DISBURSEMENT_ID, TRANSFER_ID, DEFERRED_TRANSACTION_ID, RELEASE_TRANSACTION_ID and SETTLEMENT_ID. Items carry a separate ItemRelatedIdentifierName enum: ORDER_ADJUSTMENT_ITEM_ID, COUPON_ID, REMOVAL_SHIPMENT_ITEM_ID and TRANSACTION_ID. Only ORDER_ID and FINANCIAL_EVENT_GROUP_ID can be filtered on.
- fields (transaction_type) — developer-docs.amazon.com/finances-api-v2024-06-19-reference — the Transaction schema documents transactionType as "The type of transaction. Possible value: Shipment" — a single value, not modelled as an enum. Amazon publishes no fuller list, and the same schema's description examples ("Order Payment", "Refund Order") show the field cannot really be one-valued.
- fields (account_type, fulfillment_network) — developer-docs.amazon.com/finances-api-v2024-06-19-reference — SellingPartnerMetadata.accountType is documented only as "The type of account in the transaction" and ProductContext.fulfillmentNetwork only as "The fulfillment network of the item", both plain strings with no possible-value list, and neither can be filtered on in the request. The Finances API guide and both v2024-06-19 use-case guides publish no list either, so these two vocabularies stay unconfirmed until a real file is read.
- fields (breakdown_type) — developer-docs.amazon.com/get-latest-transactions — Amazon states that breakdownType "is an open-ended string; Amazon does not publish a closed list of values, and new values are added as needed", and names CSBAFee, MPFRegulatoryFee, MarketplaceFacilitatorRegulatoryFee-Principal and OurPriceRegulatoryFee as common ones. The Sales / ProductCharges / Base values the evidence observed are therefore examples, not an enum.
- fields (item_index) — developer-docs.amazon.com/finances-api-v2024-06-19-reference — Amazon's Item schema carries description, relatedIdentifiers, totalAmount, breakdowns and contexts, and no index of its own. item_index is this report's position within the items array rather than an Amazon field, so whether it starts at 0 or 1 is a property of the pull and not something Amazon publishes.
- fields (amount sign) — developer-docs.amazon.com/finances-api-v2024-06-19-reference — every money value is a Currency whose currencyAmount is a BigDecimal, defined as "A signed decimal number", so a negative amount is possible. Amazon does not say which transactions or breakdowns carry one, so the sample shows only the positive rows the evidence establishes.
- history_window (what is not published) — developer-docs.amazon.com/finances-api — the Finances API guide publishes regions, roles, sandbox mode and release notes for listTransactions, and no earliest date, retention period or archive statement. Neither do the two v2024-06-19 use-case guides nor the SP-API documentation index, whose only retention pages are Data Kiosk's. The 180-day cap is on one request's span, not on how far back the operation answers.
- how-to-get-it (console path) — sell.amazon.com/seller-export-and-delivery — "To view charges for SEND, select Reports, then Payments from the main menu. Then select the Transaction View tab"; and sell.amazon.com/amazon-seller-payments — "hover over Payments in the main menu, then select Payments. This takes you to the Statement View page of the Payments Dashboard". Both pages are Amazon's own and open without a login. Neither states what that tab carries, so it is not evidence that the screen holds the same columns as the operation.