Integrations · Shopify · Lightspeed X-Series · Refillo API

Connect the store system you already run.

Your point of sale or ecommerce platform stays the source of truth for products, locations, on-hand stock, and sales. Refillo reads your store data, builds your daily order plan, and never overwrites your inventory behind your back.

Start free

Building a custom bridge or ERP connection? Read the Refillo API documentation at docs.refilloapp.com.

Available on all plans

Shopify

Connect your Shopify store with one OAuth click in Settings. Refillo uses Shopify Admin GraphQL API 2026-07 with read scopes for products, inventory, orders, and locations (read_products, read_inventory, read_orders, read_locations).

What Refillo reads from Shopify

  • Locations: Active and inactive store and warehouse locations.
  • Products & variants: Product title, variant title, product code, barcode, vendor, product type, unit weight, unit cost from inventoryItem.unitCost, and ex-tax list price.
  • Stock levels: On-hand, available, and incoming quantities per product and location.
  • Daily net sales: Aggregated in your shop’s timezone from paid and partially refunded orders, with refunds netted against the original sale date.

How it stays in sync & protects your data

  • Webhooks & nightly refresh: Updates on product, inventory, and order webhooks, plus a nightly catalog price and detail refresh before the plan runs.
  • No customer personal data stored: Refillo reads order line quantities and amounts only, never customer names, emails, phone numbers, or addresses.
  • Read-only by default: Continuous inventory mirroring is never permitted; your Shopify catalog and stock remain untouched.
Available on all plans

Lightspeed X-Series (Retail POS)

Built for multi-outlet brick-and-mortar retailers running Lightspeed Retail (X-Series), pinned to API version 2026-07. Refillo connects via OAuth 2.0, encrypts and refreshes access tokens automatically, and respects Lightspeed’s sliding-window rate limits.

What Refillo reads from Lightspeed X-Series

  • Outlets & timezones: Every outlet and its local IANA timezone so late-evening sales land on the right business day at each shop.
  • Products, suppliers & costs: Variants, barcodes (UPC, EAN, JAN, ISBN, ITF), supplier codes and buy prices, brands, categories, weights, and ex-tax shelf prices.
  • Inventory & consignments: Current inventory levels plus incoming stock from open supplier consignments (SENT, DISPATCHED) and in-transit outlet transfers.
  • Sales, returns & promotions: Up to 730 days of closed sales backfilled in 30-day windows, with customer returns linked back to their original sale date and outlet, plus promotional events.

How it stays in sync

  • Version-cursor delta syncs: After the initial backfill, Refillo reads only changed products, inventory, consignments, and sales by version cursor.
  • Webhooks + nightly run: Listens for sale.update, product.update, inventory.update, consignment.send, and consignment.receive, and runs a nightly delta sync before planning.
  • Strict read-only client guard: The Lightspeed data client enforces a read-only request guard before a token is ever read.
Business & Enterprise plans

Refillo API (for ERPs, POS bridges & custom stacks)

Connect SAP Business One, Microsoft Dynamics 365 Business Central, custom POS systems, or your own data warehouse using the REST API at https://app.refilloapp.com/api/v1. Full guides, runnable curl examples, TypeScript and Python webhook verifiers, and the OpenAPI 3.1 reference live at docs.refilloapp.com.

What you can push and read

  • Nine write endpoints: Push locations, products, suppliers, supplier-products, stock snapshots (upsert or full_snapshot with a 50% shrink guard and as_of timestamp check), daily sales or transaction lines (replace_window), purchase orders, and promotional events.
  • Read proposals, needs-you & reports: Query GET /v1/needs-you, GET /v1/proposals, GET /v1/products, GET /v1/metrics, GET /v1/reports/{id}, GET /v1/status, and GET /v1/ingest-reports/{batch_id}.
  • Signed outbound webhooks: Receive HMAC-signed deliveries for proposal.approved, proposal.cancelled, ingest.completed, ingest.failed, and data_quality.warning.
  • Sandbox & live keys: Test keys (rfl_test_...) validate payloads and return a full ingest report without writing rows; live keys (rfl_live_...) support Idempotency-Key replay and 5,000 records per request.

Explore the Refillo API docs at docs.refilloapp.com →

Example: push nightly stock & read proposals

curl -sS -X POST https://app.refilloapp.com/api/v1/stock \
  -H "Authorization: Bearer rfl_live_..." \
  -H "Idempotency-Key: night-2026-10-02" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "full_snapshot",
    "as_of": "2026-10-02T06:00:00-04:00",
    "records": [
      { "product_id": "PROD-1001", "location_id": "STORE-1", "on_hand": 12 }
    ]
  }'

curl -sS https://app.refilloapp.com/api/v1/proposals?limit=20 \
  -H "Authorization: Bearer rfl_live_..."

Connect your shop today

Start free on Shopify or Lightspeed X-Series, or generate a sandbox API key in Settings to test your integration.