Money and currency

Every monetary amount in the API is an integer count of piastres (the minor unit of the Egyptian pound; 100 piastres = 1 EGP). There are no floating-point prices anywhere in requests or responses.

You meanYou send or read
EGP 1.00100
EGP 249.5024950
EGP 4,850.00485000

Rules

  • Convert at the edge of your system, not in the middle. Store and compute in piastres; format for display last.
  • Never round-trip through floats. 249.50 * 100 is not safe in many languages; parse the decimal string instead.
  • EGP has exactly two decimal places. A value with three decimals is invalid and is rejected, never rounded.
  • Discounts, VAT and refunds are computed in piastres and rounded to the piastre by the server. Do not recompute totals client side; display what the API returns.

Imports use major units where noted

The product CSV and XLSX importers read prices as major EGP, written as a merchant would type them (250, 250.50, 1,250.50, and the Shopify export format 4850.00), never as piastres: 24950 means EGP 24,950. The importer converts strictly: two decimals at most, and a row with a third decimal (12.500, ambiguous) or a non-numeric price is reported as a row error instead of being rounded. POST /stores/:storeId/bulk/import-preview is a dry run that returns the parsed rows with prices in piastres. Exports write prices in the same EGP decimal format, so an exported file re-imports to the same prices. Details are in the help centre.

// Display only
const egp = new Intl.NumberFormat('ar-EG', { style: 'currency', currency: 'EGP' });
egp.format(24950 / 100); // two-decimal display of 249.50