Search

Migration Guide: Legacy transaction tables → public.transactions

Migration Guide: Legacy transaction tables → public.transactions

Summary

Starting April 15, 2026, public.transactions will be available and will replace the legacy public.transaction_standard_orders and public.transaction_invoiced tables; legacy support ends June 15, 2026. The new table is a single daily-updated (30-day lookback) ledger-style view (one row per transaction line item / charge type) with stable Finance API–backed identifiers (e.g., transaction_id, shipment_id, refund_id, financial_event_group_id, settlement_id) and consistent English field names across marketplaces. Note: the Finance API limits history to ~2 years (older data won’t be available in public.transactions), and some fields like State/Zip are not present.

Key compatibility changes include renamed columns (e.g., typetransaction_type, product-name descriptionitem_description, quantityquantity_shipped, marketplacemarketplace_name, fulfillmentfulfillment_network, transaction_release_datematurity_date) and updated transaction_type values (e.g., legacy OrderShipment). Amazon also sends date_time in PST and maturity_date in UTC. For deferred transactions, Amazon emits both the initial deferred row and the released row; to avoid double-counting, filter to deferred_transaction_id IS NULL (or additionally require released statuses when you only want paid transactions).

Full Details

Milestone
Date
public.transactions available in your database
April 15, 2026
Support for public.transaction_standard_orders & public.transaction_invoiced (Legacy) ends
June 15, 2026
We recommend beginning your migration as soon as public.transactions is available. If you have questions about the timeline or need more runway, reach out to your account contact.

What Is public.transactions

public.transactions is a single view that replaces both public.transaction_standard_orders and public.transaction_invoiced. It is updated daily with a 30-day lookback.

Rather than the wide, column-per-type format you may be used to, this table is structured as a ledger — one row per transaction line item and charge type. This makes it easier to work with programmatically and eliminates the need to maintain custom column mappings per marketplace.

What's Different

Dimension
Legacy
public.transactions
Shape
Pivoted — revenue/expense types as separate columns
Ledger — one row per transaction_idbreakdown_type
Marketplace labels
Localized (varies by marketplace)
Always English
Unique IDs
Limited
transaction_id, shipment_id, refund_id, financial_event_group_id, settlement_id
State/Zip
Included
Not available
Deferred transactions
Inconsistent handling
Natively supported
Historical depth
2 years
2 years

⚠️ Historical data limit public.transactionscovers up to 2 years of history — this is a limitation of Amazon's Finance API. Data older than 2 years is not available in the new table. public.transaction_standard_orders & public.transaction_invoiced will remain in your database for historical reference.

Column Name Changes

Most columns carry over, but several have been renamed or behave differently:

Legacy
public.transactions
Notes
type
transaction_type
Values also changed — see below
description (product name)
item_description
description in the new table is the transaction label (e.g. Order Payment), not the product name
quantity
quantity_shipped
marketplace (e.g. amazon.com)
marketplace_name (e.g. Amazon.com)
marketplace_id also available
fulfillment (e.g. Amazon)
fulfillment_network
Values: AFN = FBA, MFN = merchant-fulfilled
transaction_release_date
maturity_date

transaction_type Value Changes

The type field from the legacy reports is now transaction_type, and the values have been renamed:

Legacy type
transaction_type
Order
Shipment
Refund
Refund
FBA Inventory Fee / Service Fee
ServiceFee
Adjustment
FBAInventoryReimbursement
Transfer
Transfer
Order_Retrocharge
Retrocharge
Note: What the legacy report called Order is now Shipment.

Timezone Notes

  • date_time: Amazon sends this in PST
  • maturity_date: Amazon sends this in UTC

breakdown_type Reference

The breakdown_type column replaces the individual revenue and expense columns from the legacy reports. Instead of a column called fba_fees, you now get a row where breakdown_type = 'FBAPerUnitFulfillmentFee'.

Below are the common mappings. Amazon defines the full list of possible values — this is a reference, not a complete enumeration.

Revenue

Legacy Column
breakdown_type
product_sales
OurPricePrincipal
shipping_credits
ShippingPrincipal
gift_wrap_credits
GiftwrapPrincipal

Discounts & Promotions

Legacy Column
breakdown_type
promotional_rebates (shipping-related)
ShippingDiscount

Amazon Fees

Legacy Column
breakdown_type
selling_fees
Commission
fba_fees (per unit fulfillment)
FBAPerUnitFulfillmentFee
fba_fees / other_transaction_fees
FBAStorageFee
fba_fees / other
FBALongTermStorageFee
other_transaction_fees
FBARemovalFee
other_transaction_fees
FBADisposalFee
other_transaction_fees
FBAInternationalInboundFreightFee
(credited back on refunds)
RefundCommission

Tax

Legacy Column
breakdown_type
product_sales_tax
OurPriceTax
marketplace_withheld_tax
MarketplaceFacilitatorTax-Principal
shipping_credits_tax
MarketplaceFacilitatorTax-Shipping
giftwrap_credits_tax
GiftwrapTax

Reimbursements & Adjustments

Legacy Column
breakdown_type
Adjustment rows
FBAInventoryReimbursement
Adjustment rows
COMPENSATED_CLAWBACK
FBA fees are now broken out. The legacy report lumped most FBA charges into a single fba_fees column. The Finance API separates them — Storage, Long-Term Storage, Removal, Disposal, and Inbound Freight each get their own row. If your reporting previously relied on fba_fees as a single number, you’ll want to decide which subtypes belong in that bucket going forward.
A note on P&L mapping: How you group breakdown_type values into your own P&L categories is specific to your reporting needs. We provide the values as Amazon defines them — your team owns the logic that maps them to your internal buckets.

Deferred Transactions

Amazon defers payment on certain transaction types — most commonly B2B invoiced orders (paid 30–45 days after the order) and delivery-date based holds (7 days). The Finance API handles these natively, but it helps to understand how the data is structured.

When a transaction is deferred, Amazon sends it twice: once when the order is placed (status: DEFERRED) and again when payment is released (status: Released). To avoid double-counting, you'll need to filter based on your use case.

Use Case 1: I want all sales and costs — I don't need to track deferred status

Filter to rows where deferred_transaction_id IS NULL. This gives you exactly one row per transaction regardless of whether it was deferred or not. Deferred orders will appear at their original order date.

WHERE deferred_transaction_id IS NULL

Use Case 2: I only want transactions that have actually been paid

Filter to rows where payment has been released AND exclude the re-sent duplicate row:

WHERE transaction_status IN ('Released', 'DEFERRED_RELEASED')
  AND deferred_transaction_id IS NULL

This excludes transactions still pending payment (DEFERRED) and avoids double-counting when a deferred transaction is released.

pl_ledger_table

pl_ledger_table users: This migration does not apply to you at this time. We'll be launching a replacement for pl_ledger_table that takes full advantage of the Finance API's improved data structure — including enhanced currency handling. Expect an announcement towards the end of Q2 2026.