Invoices and Payments API overview

This guide provides a comprehensive overview of how suppliers can seamlessly access critical information about the invoices they’ve sent to Walmart. With this API, suppliers can track their financial transactions with Walmart, enabling greater visibility and efficiency in managing their accounts.

Invoices and Payments Reports API guide

Overview

Use the Invoices and Payments Reports API to request, check, and download invoice reports. Reports include invoice numbers, dates, amounts, and related payment details for invoices sent to Walmart.

Use this API to:

  • Create a new invoice report request
  • Check the status of a single report request
  • Download a ready report file

Base URLs

  • Production: https://api-gateway.walmart.com
  • Sandbox: https://sandbox.walmartapis.com

Audience

  • Walmart suppliers and their solution providers

How it works

  1. Create a report request with the report type INVOICES and reportVersion=v1. Optionally include row filters and selected columns.
  2. The API returns a requestId and a requestStatus such as RECEIVED or INPROGRESS.
  3. Download the report using the download endpoint, which returns a URL with the file location.

Before you begin

  • Obtain API credentials and generate an access token.
  • Include Walmart headers on every request.
  • Use a unique correlation ID per call.

Required headers

HeaderTypeRequiredDescription
WM_SEC.ACCESS_TOKENstringYesAccess token from the Token API.
WM_QOS.CORRELATION_IDstringYesUnique ID per request. Use a UUID.
WM_SVC.NAMEstringYesYour Walmart service name.
AcceptstringYesapplication/json.
WM_CONSUMER.CHANNEL.TYPEstringNoChannel identifier from onboarding.

Authentication

Use the Token API to obtain WM_SEC.ACCESS_TOKEN. Send the token in the header for each call. Refresh tokens when they expire.

Environments

  • Sandbox is for development and validation. It uses the same paths and headers.
  • Production returns live report metadata and download links.

Rate limits and retries

Rate limits are not specified in the OpenAPI. Plan for throttling responses such as 429 Too Many Requests and implement exponential backoff.

Errors

Handle HTTP status codes and structured error bodies. Common statuses:

StatusMeaning
200Success
400Bad request. Fix parameters or request body.
401Unauthorized. Check or refresh token.
403Forbidden. Insufficient permissions.
404Not found. Invalid requestId or report not available.
409Conflict.
429Too many requests. Back off and retry.
500Server error. Retry.
503Service unavailable. Retry.

Endpoints

Create report request

POST /v3/reports/reportRequests

Creates an invoice report request.

Query parameters

NameTypeRequiredDescription
reportTypestringYesSet to INVOICES.
reportVersionstringYesSet to v1.

Request body schema

{ "rowFilters": [ { "type": "enumFilter | rangeFilter", "columnName": "<column>", "from": "<from>", "to": "<to>", "values": ["<value>"] } ]
}
  • type determines how the filter is applied.
    • enumFilter: return rows that match one of the provided values.
    • rangeFilter: return rows between from and to. Either bound may be omitted.
  • columnName must be one of the supported columns, for example Invoice Date, Invoice Status, Net Invoice Amount, PO Number, Check Date, Reason Code, or Total Invoice Amount.

cURL example

curl -X POST 'https://api-gateway.walmart.com/v3/reports/reportRequests?reportType=INVOICES&reportVersion=v1' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 6b9a9e1b-6d8f-4b7d-932f-3e2d2a1a1111' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{ "rowFilters": [ {"type": "rangeFilter", "columnName": "Invoice Date", "from": "2025-10-03", "to": "2025-10-05"}, {"type": "enumFilter", "columnName": "Invoice Status", "values": ["PAID","UNPAID"]} ] }'

Success response

{ "requestId": "4406b7c3-674e-41e4-a18a-5fd6f123479f", "requestStatus": "RECEIVED", "requestSubmissionDate": "2025-11-28T13:34:54Z", "reportType": "INVOICES", "reportVersion": "v1"
}

Retrieve details on a single report

GET /v3/reports/singleReport

Returns metadata for a single report request and its current status.

Query parameters

NameTypeRequiredDescription
reportTypestringYesSet to INVOICES.
reportVersionstringYesSet to v1.

The OpenAPI shows a request body on GET for filters and include columns. Treat that as non‑standard. Use filters when you create the request, not when you retrieve status.

cURL example

curl -X GET 'https://api-gateway.walmart.com/v3/reports/singleReport?reportType=INVOICES&reportVersion=v1' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 98c2a2db-0b2d-4b46-9f0f-0f1f8b3a2222' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json'

Success response

{ "requestId": "4406b7c3-674e-41e4-a18a-5fd6f123479f", "requestStatus": "READY", "requestSubmissionDate": "2025-11-28T13:34:54Z", "reportType": "INVOICES", "reportVersion": "v1"
}

Download report URL

GET /v3/reports/downloadReport

Returns a download location for a ready report.

Query parameters

NameTypeRequiredDescription
reportTypestringYesSet to INVOICES.
reportVersionstringYesSet to v1.

The OpenAPI includes a request body with filters on this GET. Filters should be supplied when creating the report. Use this endpoint only to obtain the download URL for a report that is READY.

cURL example

curl -X GET 'https://api-gateway.walmart.com/v3/reports/downloadReport?reportType=INVOICES&reportVersion=v1' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 4f9a1f23-8f6e-4a1d-95a1-25b0b5ad3333' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json'

Success response

{ "downloadURL": "https://download.example/walmart/invoices/4406b7c3-674e-41e4-a18a-5fd6f123479f.zip", "downloadURLExpirationTime": "2025-11-28T14:34:54Z"
}

Filters and columns reference

You can request the report with filters and, if supported, restrict the returned columns.

Supported columns

  • Check Amount
  • Check Date
  • Check Number
  • Control Number
  • Discount Amount
  • Document Number
  • Due Date
  • Vendor Number
  • Vendor Name
  • Invoice Date
  • Invoice Number
  • Invoice Status
  • Net Invoice Amount
  • PO Number
  • Post Due
  • Reason Code
  • Reason Descriptions
  • Store Number
  • Total Invoice Amount

Filter types

  • enumFilter: results that match one of the values.
  • rangeFilter: results between from and to values.

Best practices

  • Create the report with all filters you need. Do not rely on filters in GET calls.
  • Store the requestId returned by the create call for troubleshooting.
  • Download the report as soon as it is ready. Links can expire.
  • Use ISO 8601 date values in filters.

Security and privacy

  • Do not include PII in URLs or logs.
  • Use HTTPS for all requests.
  • Rotate and protect access tokens and secrets.