Skip to main content
The FileXpress External API lets third-party systems (POS, ERP, online stores, biometric clocks, payroll or BI systems) integrate with a FileXpress business to:
  • Billing: issue sales, record purchases and manage customers, suppliers and products.
  • Human Resources: query employees and payrolls, send attendance punches, configure labor rules, schedules and holidays, check schedule compliance and create leave requests.
  • Accounting: query the chart of accounts and financial statements (also by cost center), manage cost centers and create draft journal entries.
  • Inventory: query stock, movements, lots and alerts, record adjustments and transfer between branches.
  • Projects: query projects with their financial summary, create them and link documents to them.
  • Accounts receivable and payable: query outstanding balances, record or reverse customer collections and supplier payments, and create banks, petty cash funds and checkbooks.
  • Pricing and promotions: query and sync price lists, and calculate promotions on a cart.
  • Cash register: open and close the register with a cash count, record income and expenses, and query closings.

Base URL

The paths in this documentation are relative to that URL, except those in the API v2 section, which use https://api.filexpress.app/api/external/v2. Request and response bodies are JSON (Content-Type: application/json). If your integration still uses the unversioned path, migrating only requires changing the base URL: endpoints, bodies, responses, permissions and API Key do not change.

Versioning

The External API is published by major version in the path prefix: Within a version, only endpoints or optional fields are added; a breaking change (removing or renaming fields or paths, changing their meaning) is published in a new version and announced in advance. Your integration must ignore response fields it does not recognize.

Migrate to v2

We suggest migrating to the available v2 paths (sales, purchases and currencies) before March 30, 2027. This is a recommendation, not a retirement: v1 keeps working. The only thing being retired is the unversioned path (/api/external), on January 1, 2027; those integrations must move at least to /api/external/v1.
v2 adds multi-currency, taxes by id and errors with a stable code. It only changes the endpoints listed below; the rest of your integration stays on /api/external/v1 and you can use both versions with the same API Key. To migrate a client that already issues sales and purchases:
  1. Change the base URL of those endpoints to https://api.filexpress.app/api/external/v2.
  2. Add tax_ids to each products line (use [] if no tax applies).
  3. In sales, calculate taxes, withholdings and income tax exactly: v2 rejects anything that does not match the server’s recalculation. See Taxes by id.
  4. If you will issue in a foreign currency, send currency_code (and exchange_rate if you set your own rate). To query the active currencies and their rates before issuing, the integration also needs the currencies permission; issuing only requires sales or expenses.
  5. Handle errors by code instead of the message text. See errors and codes.
v1 does not accept currency: it ignores currency_code and exchange_rate, and its amounts are always in the business’s base currency. Accounts receivable and accounts payable (v1) now return the document’s currency reference (currency_code, base_currency_code, exchange_rate, foreign_total, foreign_balance) without changing their amounts, which remain in the base currency.

Try the API

Each endpoint has a page in the Interactive reference with a playground: you enter your API Key, fill in the parameters and run the real request from the browser. Each page includes code examples (cURL, JavaScript, Python and PHP) and examples of successful and error responses.
The playground sends real requests to your API Key’s business. Use an integration from the test environment to experiment, never the production one.

Postman collection

If you prefer Postman, download the collection with all the endpoints (grouped by module, with sample bodies and saved responses) and its environment: Import both files into Postman (Import), select the FileXpress API Externa environment and fill in the api_key variable. Authentication is defined once in the collection and all requests inherit it. Requests are real: use an integration from the test environment.

Test environment

FileXpress does not use a different URL for testing: the environment is defined by the business the integration belongs to. To develop your integration:
1

Ask support for a business in the test environment

Write to soporte@filexpress.app with the name of your integration and the modules you will use.
2

Create an integration in that business and use its API Key in your development and in the playground

3

When going to production, create the integration in the real business

Only the API Key changes: the URL and endpoints are the same.
A business’s current environment is shown in Support → Company Information → Environment.

Authentication

Every request must include the integration’s API Key in the X-API-Key header:
The API Key is obtained when you create the integration in FileXpress (Integrations → New Integration), where you also assign its permissions. See External Integrations.
Store the API Key as a secret: anyone who has it can operate with the integration’s permissions. If it is exposed, regenerate it from FileXpress; the previous one stops working immediately.

Data scope

An integration belongs to one business. All queries and writes are automatically limited to that business: an ID from another business returns 404, just like a nonexistent one.

Get the branches (branch_id)

Many endpoints require the branch’s branch_id. This endpoint requires no permissions:
Each branch includes its establishment code and its points of sale. See Branches and points of sale.

Permissions

Each integration can only use the endpoint groups assigned to it. If it calls one without permission, it receives 403 with the required permission:
The branches.write permission and those for HR, Accounting, Inventory, Projects, Accounts receivable/payable, Pricing and promotions and Cash register expose personal, salary and financial data, or move balances and stock. They are never granted by default, not even to existing integrations with full access: the business administrator must enable them one by one in External integrations.

Response format

The HR, Accounting, Inventory, Projects, Accounts receivable and payable modules and the sales, purchases and branches endpoints respond:
The customers, suppliers, products and catalogs endpoints use the legacy format:
v2 paths add a stable code to errors: { "status": false, "code": "currency_not_enabled", "message": "...", "errors": { } }. See v2 errors and codes.

Paginated lists

The lists of employees, journal entries, stock, movements, lots, transfers and projects are paginated (per_page; page to navigate) and return:

Dates and amounts

  • Dates: YYYY-MM-DD. Times: HH:MM in 24-hour format.
  • Amounts: decimal numbers with 2 places, in the business’s base currency. In v2, documents can be sent in another active currency (currency_code); see API v2.

Status codes

Idempotency

Writes that move money or stock (collections, payments and their reversals, inventory adjustments and transfers, project creation, register opening, movements and closing) accept the optional Idempotency-Key header. We recommend always sending it on those POST requests: if the network fails and you retry, the operation is not applied twice.
  • The key is per integration and allows up to 100 characters (longer responds 422). Use a unique value per operation, for example a UUID or the document’s ID in your system.
  • Without the header, every request always runs.

Rate limit

Each integration has a requests-per-minute limit defined by FileXpress (100 by default). When exceeded, the API responds 429:
Wait a few seconds and retry with exponential backoff. If your use case needs a higher limit, request it from support.

Call log

Every call is recorded in FileXpress (endpoint, method, response code, duration and errors). The business administrator can review it in Integrations → Logs / Statistics, which makes it easier to diagnose integration problems.

Check the connection

Responds Working without requiring authentication. It also exists in v2 (GET /api/external/v2/health).