Reseller API

Reseller accounts

A reseller brings clients to Tax Star E-Invoice. It submits each client — its TRN and email — and, once a company with that TRN is registered on the platform, follows that client's invoices as counts: sent, received and failed. It does this in the Reseller dashboard, or from its own software through the reseller endpoints. You can be a reseller with a new reseller account, or with reseller access on the E-Invoice account you already have. Either is requested by email, and only Tax Star can approve it.

A different kind of access

The OAuth API on the rest of this site is for partners: software providers and integrators who send invoices for the companies they work with. Reselling is something else, with its own endpoints and its own dashboard — and there are two ways to have it.

KindWhat it is
Reseller accountA new account, made only for reselling. It has one password, signs in to the Reseller dashboard, and its OAuth apps can call the reseller endpoints and nothing else. It holds no company roles and cannot create companies or send invoices.
Reseller access on your existing accountFor someone who already uses E-Invoice. Nothing you have changes — your companies, your roles on them, your password and your OAuth apps all stay as they are. You get a second, separate password for the Reseller dashboard, and your OAuth apps can call the reseller endpoints as well as everything they already could.

Everywhere else on this site, an OAuth app acts for a person who holds a role on companies, and reaches those companies' entities, users and invoices — see Roles and permissions. A reseller account's app does not. It reaches the reseller's own list of clients and their counts, and never an entity, a user or an invoice — not even of a client it brought in. An app of an existing account with reseller access keeps everything its owner's roles give it, and reaches the reseller's clients too.

Which kind applies comes from the account, not from anything you choose when creating the app, and it is read on every call — so it cannot be lost or worked around by creating another app.

Becoming a reseller

Step
1. Ask by emailEmail support@taxstar.app with your company name and the email address to use. Say whether you want a new reseller account, or reseller access on the E-Invoice account you already have. Email is the only way to ask: signing up on the E-Invoice app or on this site never makes you a reseller.
2. Tax Star approvesA Tax Star admin reviews the request. Only an admin can approve it, and only an admin can create a reseller account or switch reseller access on.
3a. A new reseller accountThe admin creates the account in the Tax Star admin panel with your email and a temporary password, and sends them to you. The email must not already belong to an E-Invoice account — if it does, ask for reseller access on it instead.
3b. Reseller access on your accountThe admin switches reseller access on for your existing account and generates a reseller password, which they send to you. Your E-Invoice password is not touched.
4. Sign in to the Reseller dashboardWith your email and the password Tax Star sent you. With reseller access on an existing account, that is always the reseller password — your E-Invoice password does not open the Reseller dashboard, and the reseller password does not open the E-Invoice application.

Request reseller access

Which password opens what

WherePassword
Reseller dashboardReseller account: its password. Existing account: the reseller password.
E-Invoice applicationReseller account: no access. Existing account: your E-Invoice password, as always.
This developer portalReseller account: its password. Existing account: your E-Invoice password, as always.

With reseller access on an existing account, the two passwords are kept apart on purpose: signing in or out of one never signs you in or out of the other, and too many wrong attempts at one never locks the other. If you lose the reseller password, Tax Star sets a new one; your E-Invoice password is not affected.

What a reseller does

WhatHow
Submit a clientGive the client's TRN and email, with an optional company name and notes.
See whether it is registeredThe request comes first. When a company with that TRN is registered on the platform afterwards — through FTA onboarding or any other way — it is marked as your client and the request becomes entity_created. Until then it is pending. Only the TRN is matched; the email is your contact for the client.
Follow its activityFor a client marked as yours, three counts: invoices sent, received and failed — in the Reseller dashboard or through the API. Nothing else about the company.

That is all reselling does. It never lets you create companies, send or read a client's invoices, or manage its users, and you see only the clients you submitted yourself — never another reseller's. A TRN that is already registered when you submit it is refused with 409 entity_exists: you are linked only to a company registered after your request.

Getting API access — reseller account

Step
1. Sign in hereWith your reseller account's email and password — the same ones as the Reseller dashboard.
2. Create an appOn Create an app, as anyone would. Copy the client_secret straight away: it is shown once. The app is listed under Your apps with a Reseller API only label.
3. ApprovalA Tax Star admin reviews the app, and it gets no token until it is approved. Reviewers see that it is a reseller's app, and approving it grants the reseller endpoints only — never the rest of the OAuth API.
4. Get a tokenPOST /oauth/token with grant_type client_credentials. The response says scope: "reseller".
5. Call the reseller endpointsSubmit clients, list them, and read their counts — see Reseller clients.
POST /oauth/token — a reseller account's app
{
  "access_token": "eyJhbGciOi...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "tsr_...",
  "refresh_token_expires_in": 2592000,
  "scope": "reseller"
}

Getting API access — existing account with reseller access

Step
1. Use the apps you haveSign in here with your E-Invoice email and password, as before. Every approved app you own can call the reseller endpoints as soon as reseller access is on — there is nothing to create or re-approve. Your apps show a + Reseller API label under Your apps.
2. Or create oneA new app is created and approved like any other, and once approved it reaches both your companies and the reseller endpoints.
3. Get a token and callThe same token as always: it keeps its usual scope. Call /oauth/reseller/* with it alongside the rest of the API. GET /oauth/me says reseller_access: true while the access is on.
GET /oauth/me — an app with reseller access
{
  "app_id": "6710c0ffee0000000000aaaa",
  "client_id": "tsk_...",
  "name": "Our ERP",
  "owner_email": "you@example.com",
  "scope": "entities users invoices",
  "account_type": "client",
  "reseller_access": true
}

What each app can call

API callReseller account's appApp of an account with reseller accessAny other app
POST /oauth/token — get an access tokenYesYesYes
GET /oauth/me — who the token belongs toYesYesYes
POST /oauth/reseller/clients — submit a clientYesYesNo
GET /oauth/reseller/clients and /{client_id} — clients and their countsYesYesNo
/oauth/users — create and read usersNoYesYes
/oauth/entities — create, read, update, delete entitiesNoYesYes
/oauth/invoices — validate, send, update, list, read, statusNoYesYes
/oauth/webhooks — subscribe to invoice eventsNoYesYes

For a reseller account's app, everything marked No answers 403 insufficient_scope, whatever the method, before any work is done and without counting against the rate limit:

GET /oauth/entities — a reseller account's app
{
  "error": "insufficient_scope",
  "error_description": "This application belongs to a reseller account. It can call the reseller endpoints (/einv/oauth/reseller/*) and GET /einv/oauth/me only."
}

For an app of an existing account with reseller access, the rest of the API answers exactly as it does for any app — by its owner's role on each company. The reseller endpoints share the same rate limits as the rest of the API, counted per app, and the same token lifetimes.

In this portal

Signed in to this portalReseller accountAny other account
Create an app, see it under Your apps, rename itYesYes
Generate a new client secret, deactivate or reactivate the appYesYes
See the app's activity logYesYes
Entities this app can accessNoYes
Manage webhooks, invoice activity chartsNoYes

A reseller account's app has no entities and no webhooks, so Your apps shows a note in their place, and the webhooks manager does not list the app. With reseller access on an existing account, the portal is unchanged: your apps keep their entities, webhooks and charts.

Clients, status and counts

statusMeaning
pendingSubmitted, and no entity with this TRN has been registered since. activity is null: there is nothing to count.
entity_createdAn entity with the client's TRN has been registered — whichever way — and is marked as your client. entity_created_at says when, and from then on activity carries its counts.
activityCounts
sentInvoices from the client that reached the Peppol network.
receivedInvoices to the client that arrived over the Peppol network.
failedThe client's send attempts whose latest status is a failure.

The counts are the same ones the Tax Star admin panel shows for that company, so everyone reading them sees the same number. They are counts only: no invoice, amount, buyer or document is returned. A client whose entity is later deleted reads activity: null again.

totals on the list covers every client you have submitted, not only the current page, and counts each company once even if two of your submissions — its 15-digit TRN and its 10-digit TIN — turned out to be the same company.

GET /oauth/reseller/clients
{
  "clients": [
    {
      "id": "6710c0ffee0000000000abcd",
      "trn": "100000000000003",
      "email": "client@example.com",
      "company_name": "Client LLC",
      "notes": "",
      "status": "entity_created",
      "created_at": "2026-10-01T09:00:00+00:00",
      "entity_created_at": "2026-10-03T12:30:00+00:00",
      "activity": { "sent": 42, "received": 17, "failed": 2 }
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 25,
  "total_pages": 1,
  "totals": {
    "clients": 1,
    "pending": 0,
    "entity_created": 1,
    "activity": { "sent": 42, "received": 17, "failed": 2 }
  }
}

When Tax Star switches reseller access off

Tax Star can switch reseller access off from the admin panel, for either kind. From the next request the reseller endpoints answer 403 reseller_inactive and the Reseller dashboard closes. Switching it back on restores both at once, with the same apps and credentials.

A reseller account's app does not fall back to the full API: every other endpoint still answers 403 insufficient_scope. An existing account loses only the reseller side — its companies, its E-Invoice sign-in and the rest of its apps' API are untouched.

Responses

ResponseMeaning
403 insufficient_scopeA reseller account's app called anything but /oauth/reseller/* and GET /oauth/me. Or an app whose owner is not a reseller in either way called /oauth/reseller/*.
403 reseller_inactiveTax Star has switched off the reseller access of the account that owns the app. The token is valid; the account is not active as a reseller. For an existing account with reseller access, only the reseller endpoints are refused — the rest of the API works as before.
403 account_suspendedSubmitting a client while the account is suspended. Reading still works.
403 reseller_accountA reseller account's sign-in used outside its own surface: opening entities, webhooks or invoice charts in this portal, or any part of the E-Invoice application — companies, invoices, connections. Never answered to an existing account with reseller access.
401 invalid_tokenNo token, or one that is expired, revoked, or for an app not approved or deactivated.
404 not_foundGET /oauth/reseller/clients/{client_id} for an id that is not one of your clients.

The endpoints are on Reseller clients. Account types and company roles are on Roles and permissions. Creating an app is on Create an app, managing it on Your apps, and tokens on Authentication.