A business introducer brings in and manages a portfolio of client companies on Instafuel. You build your own interface; Instafuel provides the API and executes the money movements.
This page describes the model. The other guides cover the mechanics.
The portfolio
Your portfolio is the set of companies attached to your account. Three properties matter:
Exclusive. A company belongs to one introducer at any point in time. There is no shared portfolio.
Derived from the key. Your calls are automatically restricted to your portfolio. No parameter lets you step outside it — see Scope.
Not yours to change. You add a company by onboarding it. You cannot detach one, nor claim one that belongs to another introducer: those are Instafuel operations.
What you can do
Area
Capability
Required scope
Read
portfolio, wallets and ledger, transactions, drivers, alerts
COMPANIES_READ … ALERTS_READ
Onboarding
create a client company and its first fleet manager account
COMPANIES_WRITE, USERS_WRITE
Client accounts
create and update fleet manager and finance director accounts
COMPANIES_WRITE, USERS_WRITE
Money
request a wallet credit with proof — see Wallet credit
CREDIT_REQUEST_WRITE
Reports
trigger an export and fetch the produced file
REPORTS_READ
Out of reach: stations, fuel brands, platform settings, debits, wallet blocks, and any data of a company that is not in your portfolio.
Onboarding a company
A single call does three things: it creates the company, attaches it to your portfolio, and creates its initial fleet manager account — which receives its activation link.
A company already known — same RCCM or same email — is refused rather than duplicated:
{ "error": { "code": "COMPANY_ALREADY_EXISTS", "message": "Une entreprise avec ce RCCM existe déjà", "conflictingField": "rccm" }}
Attachment is not negotiable from the body
An introducer identifier sent in the body is ignored. The company is attached to the portfolio of the key you used, always.
Email is mandatory
No web account is created with a password. The fleet manager receives a single-use activation link, valid for 72 h — hence the status: "PENDING_ACTIVATION" and activationExpiresAt in the response. Without a valid email address, the account exists but can never sign in.
Check the address before the call: a typo means a blocked client and an account to recreate.
Reading the portfolio
Code
GET /v1/papi/companies # companies in the portfolioGET /v1/papi/companies/4832 # a single companyGET /v1/papi/companies/4832/wallet # balance and commitmentsGET /v1/papi/companies/4832/wallet/ledger # wallet entriesGET /v1/papi/wallets # balances across the portfolioGET /v1/papi/transactions # transactions across all companiesGET /v1/papi/transactions/{id} # a single fill-upGET /v1/papi/drivers # driver walletsGET /v1/papi/alerts # open alerts for your clientsGET /v1/papi/reports/portfolio-summary # figures for a period
Every one of these routes is restricted to your portfolio. A companyId parameter narrows it further; outside the portfolio it returns 404 — the API does not confirm the existence of a company that is not yours.
availableFcfa is what the company's drivers can actually spend: the balance minus open fill-ups (heldFcfa). That is the figure to display, not balanceFcfa.
Managing your clients' accounts
Code
GET /v1/papi/companies/4832/usersPOST /v1/papi/companies/4832/usersPUT /v1/papi/companies/4832/users/9114
Two roles can be created: fleet manager (FLEET_ADMINISTRATOR) and finance director (DAF).
{ "error": { "code": "ROLE_NOT_ALLOWED", "message": "Rôle non autorisé à la création d'un compte client", "allowedRoles": [ "FLEET_ADMINISTRATOR", "DAF" ] }}
The account created belongs to the company, not to you: it gets no access to the partner API. It receives its own activation link and signs in to the Instafuel dashboard.
The split between the two roles is deliberate: the fleet manager runs operations (vehicles, drivers, documents), the finance director runs the money (caps, top-ups, reports). See Roles.
Any other field sent is ignored server-side. You cannot move a company to another portfolio, touch its wallet, or delete it.
Reports
A single, synchronous endpoint: the portfolio summary over a period. There is no file export on this API — an ERP wants numbers to aggregate, not a spreadsheet to parse.
Without from and to, the period covers the last 30 days. Only confirmed transactions are counted: an open fill-up does not land in amountFcfa, but weighs in walletHeldFcfa.
For a file export, use the partner portal: the machine surface only produces JSON.
What you cannot do
Operation
Why
Credit a wallet directly
you are a third party; only Instafuel observes the incoming payment — see Wallet credit
Debit, refund, block a wallet
Instafuel operations
Detach a company from your portfolio
Instafuel operation
Delete a company or a client account
financial data is retained; accounts are deactivated, not deleted