Skip to main content

Amazon Vendor Invoices API

Written by Openbridge Support

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

getInvoiceHeaders — GET /finances/invoices/2026-06-25/invoices

Who can use it

Vendor Central accounts only (not Seller Central)

Required SP-API role

Finance and Accounting

Scope

One marketplace per request (marketplaceId)

Date filter

fromIssueDate / toIssueDate on the invoice issue date, at most 90 days apart; defaults to the last 90 days

Change filter

invoicesModifiedAfter returns invoices changed after a timestamp

Paging

100 invoices per page, followed via nextToken

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

ob_marketplace_id

STRING

Amazon marketplace the invoice belongs to (Openbridge metadata)

A1PA6795UKMFR9 (Amazon.de)

ob_vendor_id

STRING

Openbridge identifier for the vendor account (Openbridge metadata)

amzn1.vg.5602922

invoice_identifier

STRING

Unique invoice key: invoice number, a tilde, then the payee code. Joins to ob_invoice_id in the child tables

90802047~9GUYM

invoice_number

STRING

The vendor's invoice number. Can be a range when invoices were consolidated

90802047, 90804983-90805257

invoice_type

STRING

Kind of invoice

AP_INVENTORY

invoice_status

STRING

Payment status

IN_PROGRESS, PARTIALLY_PAID, PAID

invoice_amount_currency_amount

FLOAT

Total invoice amount

23132.48

invoice_amount_currency_code

STRING

ISO 4217 currency of the invoice amount

EUR

issue_date

TIMESTAMP

Invoice date; the field the API filters on

2026-08-11T00:00:00Z

creation_date

TIMESTAMP

When Amazon created the invoice record

2026-08-12T14:02:42Z

due_date

TIMESTAMP

When payment is due

2026-10-16T23:59:59Z

last_updated_date

TIMESTAMP

When Amazon last changed the invoice; use it to pick the latest version

2026-10-10T08:48:02.754Z

billing_period_start_date

TIMESTAMP

Start of the billing period, for invoice types that have one

empty for AP_INVENTORY

billing_period_end_date

TIMESTAMP

End of the billing period

empty for AP_INVENTORY

payment_terms

STRING

Payment terms, when Amazon supplies them

empty in sample

payee_partner_id

STRING

Party being paid; for vendor invoices, the vendor group ID

5602922

payee_partner_type

STRING

Type of the payee

VENDOR

payee_partner_name

STRING

Payee name, when supplied

empty in sample

payer_partner_id

STRING

Party paying the invoice

AMAZON

payer_partner_type

STRING

Type of the payer

AMAZON

payer_partner_name

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

ob_marketplace_id

STRING

Marketplace (Openbridge metadata)

A1PA6795UKMFR9

ob_vendor_id

STRING

Vendor account (Openbridge metadata)

amzn1.vg.5602922

ob_invoice_id

STRING

Parent invoice; joins to sp_finances_invoices.invoice_identifier

90803086~9GUYM

ob_idx

INTEGER

Position of the identifier within the invoice (0-based)

0

related_identifier_name

STRING

Identifier type (values below)

PURCHASE_ORDER_IDS

related_identifier_value

STRING

List of values, stored as text in list form

['420173816', '420187967']

related_identifier_name

What it holds

PURCHASE_ORDER_IDS

Amazon purchase order(s) the invoice bills

VENDOR_CODE

Vendor code the invoice was submitted under

PAYEE_CODE

Payee (remit-to) code; also the suffix of the invoice identifier

UNIQUE_PAYMENT_IDS

Remittance payment(s) that settled the invoice; present only after a payment is made

SHORTAGE_INVOICE_IDS

Shortage claim(s) Amazon raised against the invoice

Two things to know when querying:

  • related_identifier_value is 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 420187967 appears 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

ob_marketplace_id

STRING

Marketplace (Openbridge metadata)

A1PA6795UKMFR9

ob_vendor_id

STRING

Vendor account (Openbridge metadata)

amzn1.vg.5602922

ob_invoice_id

STRING

Parent invoice; joins to sp_finances_invoices.invoice_identifier

90803086~9GUYM

ob_level

INTEGER

Nesting depth of the breakdown; 0 = top level

0

ob_parent_idx

INTEGER

ob_idx of the parent breakdown when nested; empty at the top level

empty

ob_idx

INTEGER

Position of the breakdown within its level (0-based)

3

breakdown_type

STRING

Settlement component (values below)

QuantityVarianceAmount

breakdown_amount_currency_amount

FLOAT

Amount of the component

50.57

breakdown_amount_currency_code

STRING

ISO 4217 currency

EUR

breakdown_type

Meaning

AmountPaid

Amount Amazon has already paid on the invoice

QueuedForPayment

Amount approved and scheduled for an upcoming payment run

QuickPayDiscount

Discount taken for early payment under a Quick Pay agreement

QuantityVarianceAmount

Amount held back because the quantity received differs from the quantity invoiced (shortages)

PriceVariance

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 getInvoice operation and is not part of this dataset.

  • One marketplace at a time. Each marketplace a vendor sells in is collected separately; ob_marketplace_id tells them apart.

  • Rows are re-delivered as invoices change. Status and settlement amounts move until an invoice is paid; dedupe on last_updated_date as in query 1.

  • Some fields are often empty. In the sample, billing period, payment terms and partner names were empty for every AP_INVENTORY invoice.

  • Amounts are in the invoice currency. Convert before summing across marketplaces.

References

Did this answer your question?