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
- Create a report request with the report type
INVOICESandreportVersion=v1. Optionally include row filters and selected columns. - The API returns a
requestIdand arequestStatussuch asRECEIVEDorINPROGRESS. - 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
| Header | Type | Required | Description |
|---|---|---|---|
WM_SEC.ACCESS_TOKEN | string | Yes | Access token from the Token API. |
WM_QOS.CORRELATION_ID | string | Yes | Unique ID per request. Use a UUID. |
WM_SVC.NAME | string | Yes | Your Walmart service name. |
Accept | string | Yes | application/json. |
WM_CONSUMER.CHANNEL.TYPE | string | No | Channel 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:
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request. Fix parameters or request body. |
| 401 | Unauthorized. Check or refresh token. |
| 403 | Forbidden. Insufficient permissions. |
| 404 | Not found. Invalid requestId or report not available. |
| 409 | Conflict. |
| 429 | Too many requests. Back off and retry. |
| 500 | Server error. Retry. |
| 503 | Service unavailable. Retry. |
Endpoints
Create report request
POST /v3/reports/reportRequests
Creates an invoice report request.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
reportType | string | Yes | Set to INVOICES. |
reportVersion | string | Yes | Set to v1. |
Request body schema
{ "rowFilters": [ { "type": "enumFilter | rangeFilter", "columnName": "<column>", "from": "<from>", "to": "<to>", "values": ["<value>"] } ]
}
typedetermines how the filter is applied.enumFilter: return rows that match one of the providedvalues.rangeFilter: return rows betweenfromandto. Either bound may be omitted.
columnNamemust be one of the supported columns, for exampleInvoice Date,Invoice Status,Net Invoice Amount,PO Number,Check Date,Reason Code, orTotal 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
| Name | Type | Required | Description |
|---|---|---|---|
reportType | string | Yes | Set to INVOICES. |
reportVersion | string | Yes | Set 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
| Name | Type | Required | Description |
|---|---|---|---|
reportType | string | Yes | Set to INVOICES. |
reportVersion | string | Yes | Set 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 thevalues.rangeFilter: results betweenfromandtovalues.
Best practices
- Create the report with all filters you need. Do not rely on filters in GET calls.
- Store the
requestIdreturned 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.
Updated 2 days ago
