Skip to content

Integration API

Slflo runs the field side of a distribution company: reps visit shops, sell from the van or take orders, collect money and take returns, and the office approves and closes the day. Your ERP keeps the books. The integration API is how the two stay in step.

Direction What moves How
Slflo → your ERP Orders, invoices, payments (receipts, cheques), returns (credit notes) You pull them in order, then ack each one with your own document number
Your ERP → Slflo Customers and branches, units and products, price lists and prices, customer balances You push them with PUT, addressed by your own keys

Base URL https://api.slflo.com/api/integration/v1 · JSON in snake_case · a bearer token per connected system · the full description is public at /openapi.json.

  1. Get a sandbox token. Ask for sandbox access: a hosted company holding one real day of orders, invoices, payments and a return.
  2. Do the quickstart — check the token, pull orders, ack one, push a customer. About ten minutes.
  3. Read the concepts you’ll lean on: pulling by version, acks, the invoice counter and retrying safely.
  4. Build from the guides: orders into sales orders, invoices and payments by seq and master data out. For Dynamics 365 Finance and Operations, the D365 F&O connector maps each piece.
  5. Pass the go-live checklist against the sandbox, then ask us to connect the live company.
  • Nothing is missed, nothing is booked twice. Every change gets a higher version, handed out in commit order, so a cursor never skips a record. You stage rows under (id, version, line_number) and look for an existing sales order before creating one.
  • Invoices come with a counter. Invoices, receipts and credit notes also carry seq, a gap-free number per company: keep one integer and you know exactly what is new.
  • No ids to store. You push a customer as PUT /customers/CUST-0042 — your key. Slflo finds or creates it, and every record you pull names itself by Slflo’s id and by your external_ref.
  • Every write can be retried. Every POST, PUT and DELETE carries an Idempotency-Key you choose; the same key and body always give the first answer back.

With a token in SLFLO_TOKEN, this asks who you are — no scope needed:

Terminal window
curl -s https://api.slflo.com/api/integration/v1/me -H "Authorization: Bearer $SLFLO_TOKEN"
# {"data": {"client": {"name": "Sandbox", …}, "company": {"code": "t-sandbox", …}, "scopes": [ … ]}}