Skip to content
Last updated

Creating clients and mandates

This guide walks you through registering a client and creating mandates covering the four supported directory entry types.

Prerequisites

  • A valid API token (Authorization: <token> header)
  • Base URL: https://pdp.seqino.dev/api

Step 1: Create a client

A client represents a company you manage invoicing for. Each client gets a unique client_id that you'll pass as the X-PDP-Client-Id header in subsequent calls.

curl -X POST https://pdp.seqino.dev/api/clients \
  -H "Authorization: <your-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "organization_name": "Dupont & Fils SAS",
    "contact_email": "facturation@dupont-fils.fr",
    "external_ref": "CLIENT-001"
  }'

The response returns the created client object including its id. Save this value — you'll use it as X-PDP-Client-Id for all mandate operations below.


Step 2: Create mandates

A mandate authorizes your client to send or receive invoices on behalf of a specific directory entry. The scope of the mandate is determined by which identifier fields you provide.

All mandate requests require the X-PDP-Client-Id header set to the client ID from Step 1.

SIREN mandate

Covers all establishments under a company. Use when the counterpart hasn't specified a more granular routing.

curl -X POST https://pdp.seqino.dev/api/mandates \
  -H "Authorization: <your-token>" \
  -H "X-PDP-Client-Id: <client-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2026-01-01T00:00:00Z",
    "directory_entry": {
      "siren": "123456789",
      "name": "Dupont & Fils SAS"
    }
  }'

SIREN + suffix mandate

Targets a specific service or department within a company, identified by a free-form suffix. Use this when the counterpart routes invoices by department (e.g. Achats, DAF).

curl -X POST https://pdp.seqino.dev/api/mandates \
  -H "Authorization: <your-token>" \
  -H "X-PDP-Client-Id: <client-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2026-01-01T00:00:00Z",
    "directory_entry": {
      "siren": "123456789",
      "name": "Dupont & Fils SAS",
      "suffix": "Achats"
    }
  }'

SIRET mandate

Targets a specific establishment (site) within a company. Use when the counterpart routes invoices by establishment.

curl -X POST https://pdp.seqino.dev/api/mandates \
  -H "Authorization: <your-token>" \
  -H "X-PDP-Client-Id: <client-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2026-01-01T00:00:00Z",
    "directory_entry": {
      "siren": "123456789",
      "name": "Dupont & Fils SAS — Siège social",
      "siret": "12345678900012"
    }
  }'

SIRET + routing code mandate

Targets a specific establishment with an additional routing identifier (e.g. GLN, ODETTE). Use this when the counterpart's PDP requires structured routing beyond SIRET.

curl -X POST https://pdp.seqino.dev/api/mandates \
  -H "Authorization: <your-token>" \
  -H "X-PDP-Client-Id: <client-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2026-01-01T00:00:00Z",
    "directory_entry": {
      "siren": "123456789",
      "name": "Dupont & Fils SAS — Siège social",
      "siret": "12345678900012",
      "routing_identifier": "3012345678906",
      "routing_identifier_type": "0088",
      "routing_code_label": "Libelle Code routage",
      "administrative_status": "A",
      "establishment_nature": "Private"
    }
  }'

The supported routing_identifier_type values are:

ValueStandardDescription
0088GS1GLN (Global Location Number)
0060DUNSDun & Bradstreet number
0224SIREN/SIRETFrench national identifier
InternalInternal routing code defined by the counterpart's PDP

Next steps

Once your mandates are active, you can start submitting invoices. See the API reference for the full invoicing endpoints.