List products

Credentials

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"
}

401 — The Authorization header is missing, or the access token is invalid or expired. Get a new token with POST /refresh-exchanges or POST /auth-tokens. (error)

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"
}

500 — Server error. Contact PayMe support and quote the session. (error)

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.