The Openbridge Vendor Invoices integration delivers the invoices Amazon owes you as a Vendor Central partner, along with their payment status and how each one settled, into your data warehouse.
Use it to answer the questions accounts-receivable teams ask every week:
Which invoices has Amazon paid, which are queued for payment, and which are still in progress?
How much was deducted for quantity (shortage) or price variances, or taken as a Quick Pay discount?
Which purchase orders, shortage claims and remittance payments tie back to a given invoice?
What is coming due, and when?
The data lands in three related tables: one row per invoice, plus two child tables for the invoice's related identifiers and its settlement breakdown.
How the data is collected
Openbridge calls the Amazon Selling Partner API Invoices API (version 2026-06-25), which Amazon released in July 2026 for vendors in all marketplaces.
Item | Detail |
Operation |
|
Who can use it | Vendor Central accounts only (not Seller Central) |
Required SP-API role | Finance and Accounting |
Scope | One marketplace per request ( |
Date filter |
|
Change filter |
|
Paging | 100 invoices per page, followed via |
An invoice changes after it is issued: its status moves from in progress to paid, and its settlement amounts fill in. Each sync therefore returns updated copies of invoices you already have; use last_updated_date to keep the latest version (see Example queries).
Prerequisites: the vendor account must authorize Openbridge with the Finance and Accounting role. Accounts authorized before this integration launched may need to re-authorize to grant that role.
Open question: confirm the Openbridge sync frequency and how far back the initial backfill reaches before publishing.
Data model
sp_finances_invoices is the parent table. Both child tables carry ob_invoice_id, which matches the parent's invoice_identifier; include ob_vendor_id in the join when one warehouse holds several vendor accounts.
sp_finances_invoices
One row per invoice. The primary key is invoice_identifier; with repeated syncs, keep the row with the latest last_updated_date.
Column | Type | Description | Example |
| STRING | Amazon marketplace the invoice belongs to (Openbridge metadata) |
|
| STRING | Openbridge identifier for the vendor account (Openbridge metadata) |
|
| STRING | Unique invoice key: invoice number, a tilde, then the payee code. Joins to |
|
| STRING | The vendor's invoice number. Can be a range when invoices were consolidated |
|
| STRING | Kind of invoice |
|
| STRING | Payment status |
|
| FLOAT | Total invoice amount |
|
| STRING | ISO 4217 currency of the invoice amount |
|
| TIMESTAMP | Invoice date; the field the API filters on |
|
| TIMESTAMP | When Amazon created the invoice record |
|
| TIMESTAMP | When payment is due |
|
| TIMESTAMP | When Amazon last changed the invoice; use it to pick the latest version |
|
| TIMESTAMP | Start of the billing period, for invoice types that have one | empty for |
| TIMESTAMP | End of the billing period | empty for |
| STRING | Payment terms, when Amazon supplies them | empty in sample |
| STRING | Party being paid; for vendor invoices, the vendor group ID |
|
| STRING | Type of the payee |
|
| STRING | Payee name, when supplied | empty in sample |
| STRING | Party paying the invoice |
|
| STRING | Type of the payer |
|
| STRING | Payer name, when supplied | empty in sample |
Example values come from a sample Amazon.de vendor account; Amazon may return other invoice_type and invoice_status values.
sp_finances_invoice_related_identifiers
One row per identifier type linked to an invoice: the purchase orders it bills, the shortage claims raised against it, and the payments that settled it. Typically three to five rows per invoice.
Column | Type | Description | Example |
| STRING | Marketplace (Openbridge metadata) |
|
| STRING | Vendor account (Openbridge metadata) |
|
| STRING | Parent invoice; joins to |
|
| INTEGER | Position of the identifier within the invoice (0-based) |
|
| STRING | Identifier type (values below) |
|
| STRING | List of values, stored as text in list form |
|
| What it holds |
| Amazon purchase order(s) the invoice bills |
| Vendor code the invoice was submitted under |
| Payee (remit-to) code; also the suffix of the invoice identifier |
| Remittance payment(s) that settled the invoice; present only after a payment is made |
| Shortage claim(s) Amazon raised against the invoice |
Two things to know when querying:
related_identifier_valueis a list, even for a single value. Parse it into an array before joining on it, for example to a purchase order table.One payment can settle several invoices. In the sample, payment
420187967appears on two invoices, so joining invoices to payments is many-to-many.
sp_finances_invoice_settlement_breakdowns
One row per settlement component of an invoice: how much has been paid, how much is queued, and how much was held back for discounts or variances. Each invoice carries the same five components, with zeros where a component does not apply.
Column | Type | Description | Example |
| STRING | Marketplace (Openbridge metadata) |
|
| STRING | Vendor account (Openbridge metadata) |
|
| STRING | Parent invoice; joins to |
|
| INTEGER | Nesting depth of the breakdown; |
|
| INTEGER |
| empty |
| INTEGER | Position of the breakdown within its level (0-based) |
|
| STRING | Settlement component (values below) |
|
| FLOAT | Amount of the component |
|
| STRING | ISO 4217 currency |
|
| Meaning |
| Amount Amazon has already paid on the invoice |
| Amount approved and scheduled for an upcoming payment run |
| Discount taken for early payment under a Quick Pay agreement |
| Amount held back because the quantity received differs from the quantity invoiced (shortages) |
| Amount held back because the invoiced cost differs from the purchase order cost |
The components do not always add up to the invoice total: amounts still awaiting matching are not shown as a component. For example, invoice 90803086 totals €2,044.96 with €1,080.19 paid and €50.57 in quantity variance. Recently issued invoices often show zero in all five components until Amazon matches them to receipts.
Example queries
The examples use BigQuery Standard SQL; adjust function names for Snowflake or Redshift.
1. Latest version of each invoice. Build other queries on top of this.
CREATE OR REPLACE VIEW invoices_latest AS SELECT * EXCEPT (rn) FROM ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY ob_vendor_id, invoice_identifier ORDER BY last_updated_date DESC) AS rn FROM sp_finances_invoices ) WHERE rn = 1;
2. Settlement status per invoice. Pivots the five breakdown components into columns beside the invoice total.
SELECT i.invoice_number, i.invoice_status, i.due_date, i.invoice_amount_currency_amount AS invoice_amount, SUM(IF(b.breakdown_type = 'AmountPaid', b.breakdown_amount_currency_amount, 0)) AS paid, SUM(IF(b.breakdown_type = 'QueuedForPayment', b.breakdown_amount_currency_amount, 0)) AS queued, SUM(IF(b.breakdown_type = 'QuantityVarianceAmount', b.breakdown_amount_currency_amount, 0)) AS quantity_variance, SUM(IF(b.breakdown_type = 'PriceVariance', b.breakdown_amount_currency_amount, 0)) AS price_variance, SUM(IF(b.breakdown_type = 'QuickPayDiscount', b.breakdown_amount_currency_amount, 0)) AS quick_pay_discount FROM invoices_latest i LEFT JOIN sp_finances_invoice_settlement_breakdowns b ON b.ob_invoice_id = i.invoice_identifier AND b.ob_vendor_id = i.ob_vendor_id GROUP BY 1, 2, 3, 4 ORDER BY i.due_date;
3. Invoices to purchase orders. Parses the list-form value into one row per purchase order.
SELECT r.ob_invoice_id, po_id FROM sp_finances_invoice_related_identifiers r, UNNEST(JSON_VALUE_ARRAY(REPLACE(r.related_identifier_value, "'", '"'))) AS po_id WHERE r.related_identifier_name = 'PURCHASE_ORDER_IDS';
Swap PURCHASE_ORDER_IDS for UNIQUE_PAYMENT_IDS to match invoices to remittance payments, or SHORTAGE_INVOICE_IDS to list shortage claims.
Notes and limitations
Vendors only. The Invoices API serves Vendor Central accounts. Seller Central financial data comes from the separate Finances and Settlement report integrations.
Header level, no line items. These tables hold invoice headers. Line-item detail (ASIN, quantity, unit cost) comes from the API's
getInvoiceoperation and is not part of this dataset.One marketplace at a time. Each marketplace a vendor sells in is collected separately;
ob_marketplace_idtells them apart.Rows are re-delivered as invoices change. Status and settlement amounts move until an invoice is paid; dedupe on
last_updated_dateas in query 1.Some fields are often empty. In the sample, billing period, payment terms and partner names were empty for every
AP_INVENTORYinvoice.Amounts are in the invoice currency. Convert before summing across marketplaces.
