# 📋 Create multiple mandates

Create multiple mandates in a single batch operation.
This endpoint allows creating multiple mandates for a client at once,
which is useful when onboarding clients with multiple entities or
when importing existing mandate data.
All mandates in the batch will use the same client_id from the header.
If any mandate fails to create, the entire batch will be rolled back.

Endpoint: POST /mandates/batch
Version: 0.29.6
Security: APIKeyHeader

## Header parameters:

  - `X-PDP-Client-Id` (string, required)
    ID of the PDP Client for which the operation is performed

## Request fields (application/json):

  - `mandates` (array, required)
    List of mandates to create

  - `mandates.start_date` (string, required)
    When the mandate becomes active. Note: if the requested start date is today or in the past, it will be updated with the real start date returned by the PPF once the status of the mandate becomes CREATED.

  - `mandates.end_date` (any)
    When the mandate should expire. Optional: when omitted (null) the mandate never expires and stays active indefinitely (in the PPF directory this maps to an effective end date of 9999-12-31).

  - `mandates.directory_entry` (object, required)
    Complete directory entry with all information.

  - `mandates.directory_entry.siren` (string, required)
    Company identification number (SIREN or BCE number)

  - `mandates.directory_entry.name` (string, required)
    Company name

  - `mandates.directory_entry.suffix` (any)
    Service suffix - when using simple SIREN+suffix nomenclature

  - `mandates.directory_entry.siret` (any)
    Establishment identification number (SIRET)

  - `mandates.directory_entry.routing_identifier` (any)
    Routing identifier

  - `mandates.directory_entry.routing_identifier_type` (any)
    Type of routing identifier

  - `mandates.directory_entry.routing_code_label` (any)
    Label for the routing code

  - `mandates.directory_entry.establishment_nature` (any)
    Nature of the establishment. Required for routing codes

  - `mandates.directory_entry.legal_commitment_management` (any)
    Legal commitment management status

  - `mandates.directory_entry.administrative_status` (any)
    Administrative status. Required for routing codes.

  - `mandates.directory_entry.addressable` (any)
    Whether the company is addressable

  - `mandates.directory_entry.address` (any)
    Establishment address

  - `mandates.directory_entry.address.address_line_1` (string, required)
    First line of address

  - `mandates.directory_entry.address.address_line_2` (any)
    Second line of address

  - `mandates.directory_entry.address.address_line_3` (any)
    Third line of address

  - `mandates.directory_entry.address.postal_code` (string, required)
    Postal code

  - `mandates.directory_entry.address.subdivision` (any)
    Country subdivision (region/state)

  - `mandates.directory_entry.address.city` (string, required)
    City or locality

  - `mandates.directory_entry.address.country_code` (string, required)
    Country code (ISO 3166-1 alpha-2)

  - `mandates.file_attachment` (any)
    Deprecated: no longer required. The file attachment is now handled by the KYB process; this field will be removed in a future version.

  - `mandates.vat_regime` (string)
    French VAT regimes; each determines the e-reporting transmission periodicity.
    Enum: "real_normal_monthly", "real_normal_quarterly", "simplified", "franchise"

## Response 201 fields (application/json):

  - `mandates` (array, required)
    Created mandates

  - `mandates.client_id` (string, required)
    Reference to the client who owns this mandate

  - `mandates.start_date` (string, required)
    When the mandate becomes active. Note: if the requested start date is today or in the past, it will be updated with the real start date returned by the PPF once the status of the mandate becomes CREATED.

  - `mandates.end_date` (any)
    When the mandate expires. Optional: when omitted (null) the mandate never expires and stays active indefinitely. In the PPF directory an open-ended mandate maps to an effective end date of 9999-12-31. An expiry can be set or removed later via PATCH /mandates/{id}.

  - `mandates.file_attachment` (any)
    Optional file attachment for the mandate

  - `mandates.status` (string, required)
    Status of the mandate.
    Enum: "processing", "created", "pending_kyb", "active", "expired", "error", "portability"

  - `mandates.emit_only` (boolean)
    Whether the mandate is only for emitting invoices

  - `mandates.vat_regime` (string)
    French VAT regimes; each determines the e-reporting transmission periodicity.
    Enum: "real_normal_monthly", "real_normal_quarterly", "simplified", "franchise"

  - `mandates.created_at` (string, required)
    When the mandate was created

  - `mandates.updated_at` (any)
    When the mandate was last updated

  - `mandates.error_cause` (any)
    Cause details in case of error.

  - `mandates.id` (any)
    Unique mandate identifier

  - `message` (string, required)
    Success message

  - `created_count` (integer, required)
    Number of mandates created

## Response 422 fields (application/json):

  - `detail` (array)

  - `detail.loc` (array, required)

  - `detail.msg` (string, required)

  - `detail.type` (string, required)

