List products
- Sandbox:
GET https://payme-store-staging.payme.io/api/products
- Production:
GET https://payme-store.payme.io/api/products
Credentials
- Header
Authorization: Bearer <token>
Lists the seller's products, one page at a time. page and items_per_page are required. Filter by status, text, your own product id, store currency, store price or creation date, and sort by name, status or creation date. Without sort_by the order isn't defined.
Pass the range filters in deep-object form, e.g. ?price[min]=10&price[max]=200&created_at[from]=2026-01-01.
Send Authorization: Bearer <auth_token>, the token from POST /auth-tokens. Hosts, tokens and the error format: Hosts, authentication and errors. Prices are decimal amounts in major units (99.99), not minor units.
Parameters
| Name |
In |
Type |
Required |
Description |
page |
query |
integer |
yes |
Page number, from 1. |
items_per_page |
query |
integer |
yes |
Products per page, from 1 to 100. |
status |
query |
integer |
no |
1 – available, 0 – unavailable, -1 – draft. |
search |
query |
string |
no |
Case-insensitive text to find in the name or the description. |
name |
query |
string |
no |
Case-insensitive text to find in the name, 2–100 characters. |
description |
query |
string |
no |
Case-insensitive text to find in the description, 2–100 characters. |
product_remote_id |
query |
string |
no |
Your own product id, exact match. |
currency |
query |
string |
no |
ISO 4217 code (e.g. ILS) of the store price including VAT. |
price[min] |
query |
number |
no |
Lowest store price including VAT, in major units. |
price[max] |
query |
number |
no |
Highest store price including VAT, in major units. |
created_at[from] |
query |
string |
no |
Created at or after this time: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS. |
created_at[to] |
query |
string |
no |
Created at or before this time, in the same formats. |
sort_by |
query |
string |
no |
name, status or created_at. |
sort_direction |
query |
string |
no |
asc or desc. Default desc. Applies only together with sort_by. |
Code samples
curl
curl -X GET 'https://payme-store-staging.payme.io/api/products?page=<page>&items_per_page=<items_per_page>' \
-H 'Authorization: Bearer <YOUR_TOKEN>'
Node.js
const response = await fetch("https://payme-store-staging.payme.io/api/products?page=<page>&items_per_page=<items_per_page>", {
method: "GET",
headers: {
"Authorization": "Bearer <YOUR_TOKEN>",
},
});
console.log(await response.text());
Python
import requests
response = requests.get(
"https://payme-store-staging.payme.io/api/products?page=<page>&items_per_page=<items_per_page>",
headers={
"Authorization": "Bearer <YOUR_TOKEN>",
},
)
print(response.text)
PHP
<?php
$ch = curl_init('https://payme-store-staging.payme.io/api/products?page=<page>&items_per_page=<items_per_page>');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <YOUR_TOKEN>',
],
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Responses
200 — A page of products. (success)
| Field |
Type |
Description |
items |
array |
The products on this page. |
items[].guid |
string |
Product id (a UUID) assigned by PayMe. Use it in /products/{guid}. |
items[].product_remote_id |
string |
Your own product id. Left out when not set. |
items[].name |
string |
Product name. |
items[].status |
integer |
1 – available, 0 – unavailable, -1 – draft. |
items[].description |
string |
Product description. |
items[].store_configuration |
object |
Selling price. You send it as store_prices when you create or update the product. The currency and price[min]/price[max] filters of GET /products match its price_include_vat. |
items[].store_configuration.is_vat_free |
boolean |
true if the product is exempt from VAT. |
items[].store_configuration.price_without_vat |
object |
Price before VAT. null when not set. |
items[].store_configuration.price_without_vat.amount |
number |
Decimal amount in major units, e.g. 99.99. |
items[].store_configuration.price_without_vat.currency |
string |
ISO 4217 currency code, e.g. ILS. |
items[].store_configuration.price_include_vat |
object |
Price including VAT. null when not set. |
items[].store_configuration.price_include_vat.amount |
number |
Decimal amount in major units, e.g. 99.99. |
items[].store_configuration.price_include_vat.currency |
string |
ISO 4217 currency code, e.g. ILS. |
items[].costs_details |
object |
Your cost for the product, same shape as store_configuration. You send it as costs. Left out when not set. |
items[].costs_details.is_vat_free |
boolean |
true if the product is exempt from VAT. |
items[].costs_details.price_without_vat |
object |
Price before VAT. null when not set. |
items[].costs_details.price_without_vat.amount |
number |
Decimal amount in major units, e.g. 99.99. |
items[].costs_details.price_without_vat.currency |
string |
ISO 4217 currency code, e.g. ILS. |
items[].costs_details.price_include_vat |
object |
Price including VAT. null when not set. |
items[].costs_details.price_include_vat.amount |
number |
Decimal amount in major units, e.g. 99.99. |
items[].costs_details.price_include_vat.currency |
string |
ISO 4217 currency code, e.g. ILS. |
total |
integer |
How many products match the filters, across all pages. |
page |
integer |
The page returned. |
items_per_page |
integer |
The page size you asked for. |
{
"items": [
{
"guid": "3f2b8f0e-5d7c-4a1e-9b8a-2c4d6e8f0a1b",
"product_remote_id": "PROD001",
"name": "Example product",
"status": 1,
"description": "Example description",
"store_configuration": {
"is_vat_free": false,
"price_without_vat": {
"amount": 99.99,
"currency": "ILS"
},
"price_include_vat": {
"amount": 117.99,
"currency": "ILS"
}
},
"costs_details": {
"is_vat_free": false,
"price_without_vat": {
"amount": 50,
"currency": "ILS"
},
"price_include_vat": {
"amount": 59,
"currency": "ILS"
}
}
}
],
"total": 1,
"page": 1,
"items_per_page": 20
}
400 — A required parameter is missing or a parameter is invalid, e.g. items_per_page above 100. (error)
| Field |
Type |
Description |
status_error_details |
string |
What went wrong. Validation messages are in Hebrew unless you send Accept-Language: en. |
status_error_code |
integer |
501 for a validation error or a body that isn't valid JSON, 999 for any other error. |
validation_errors |
object |
The fields that failed validation. Each key is a field name; its value maps each failed rule to a message. |
session |
string |
Trace id of the request. Quote it when you contact PayMe support. |
{
"status_error_details": "Field validation failed.",
"validation_errors": {
"items_per_page": {
"max": "The value must be less than max amount."
}
},
"status_error_code": 501,
"session": "f3a1c2b0-9e4d-11ef-8c1a-0242ac120002"
}
| Field |
Type |
Description |
status_error_details |
string |
What went wrong. |
status_error_code |
integer |
999. |
session |
string |
Trace id of the request. Quote it when you contact PayMe support. |
{
"status_error_details": "Unauthorized",
"status_error_code": 999,
"session": "f3a1c2b0-9e4d-11ef-8c1a-0242ac120002"
}
| Field |
Type |
Description |
status_error_details |
string |
What went wrong. |
status_error_code |
integer |
999. |
session |
string |
Trace id of the request. Quote it when you contact PayMe support. |