Fred ViDA Api (v1)

Download OpenAPI specification:

Introduction

L'API ViDA est le point d'entrée central et sécurisé pour interagir avec l'écosystème de facturation électronique dans le cadre de la directive européenne VAT in Digital Age (ViDA). Conçue pour les Partenaires Agréés (PA) et les systèmes d'information des entreprises, elle facilite l'automatisation complète du cycle de vie des factures électroniques et la gestion des obligations fiscales associées.

Authentication

DirectoryLines

Controller for querying the e-invoicing directory within a specific company context.

Returns the directory lines registered for the specified accounting folder. Verifies the accounting folder belongs to the given company before querying the directory.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company (cabinet).

accountingFolderId
required
integer <int32>

Internal identifier of the accounting folder whose directory lines are returned.

Responses

Response samples

Content type
[
  • {
    }
]

EmissionAccess

Opens or closes e-invoice emission for the accounting folders of a cabinet, on behalf of any caller holding write access to the cabinet and to each folder.

Grants ({enabled = true}) or removes ({false}) the emission feature access of each listed folder. One outcome per distinct folder: 200 when every folder was updated, 207 when some were, 400 when none was or when the list is empty. A list of one folder follows the same rules.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the cabinet owning the folders.

Request Body schema:
required

The folders to update and the target state.

AccountingFolderIds
Array of integers or null <int32> [ items <int32 > ]

The accounting folders of the cabinet to update.

Enabled
boolean or null

true to grant the emission access, false to remove it.

Responses

Request samples

Content type
{
  • "AccountingFolderIds": [
    ],
  • "Enabled": true
}

Response samples

Content type
{
  • "SuccessCount": 0,
  • "Errors": [
    ],
  • "HasErrors": true,
  • "IsFullFailure": true
}

Mandate

Controller for managing mandates within a specific company context. Provides endpoints for creating, retrieving, sending reminders, and recreating mandates based on various criteria.

Creates one or more mandates for the given company, processing each dossier independently and exposing partial success at the HTTP level (US 67257), aligned on {CreateDirect}: 200 when every dossier was registered, 207 Multi-Status on partial success (valid dossiers registered, the others listed with a generic reason), 400 when no dossier could be registered. A single invalid dossier no longer turns the whole call into a 400, and error payloads carry only the accounting folder id (no PII).

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company (cabinet) owning the mandates.

Request Body schema:
required

List of mandate entries to create. Each entry must contain the full mandate data.

Array
Siren
required
string or null^[0-9]{9}$

SIREN number of the company for which the mandate is being created. Exactly 9 digits, with no separator (a value formatted with thousands separators is rejected for this entry only) and no surrounding whitespace.

Siret
string or null

Optional SIRET number (14-digit French establishment identifier: 9-digit SIREN + 5-digit NIC) of the establishment covered by the mandate. When provided it is transmitted to the partner and must be consistent with the target accounting folder (same SIREN and NIC). A SIRET and addressing suffixes are mutually exclusive on the same entry. {null} when the mandate targets the company at the SIREN level.

CompanyExecutive
required
string or null

Full name of the company executive (dirigeant) responsible for the mandate.

BusinessName
required
string or null

Official business name (raison sociale) of the company covered by the mandate.

Address
required
string or null

Full postal address of the company covered by the mandate.

required
object (ContactWithRoleCommand)

Contact details and role of a person involved in a mandate.
The fields flagged as required must be provided. An entry that omits one of them is not rejected at the request level: it is reported individually in the response errors, so the other entries of the batch are still processed.

required
object (CertifiedAccountantCommand)

The certified public accountant (expert-comptable) linked to the mandate. Same per-entry error reporting as Fred.ViDA.Application.Mandates.Commands.ContactWithRoleCommand.

SkipMandateCreation
required
boolean

Indicates whether to skip the creation of mandate envelopes for the KYC job.

SkipMandateLegalConfirmation
required
boolean

Indicates whether a valid Platform Designation Mandate has already been duly signed, skipping the legal confirmation step.

AccountingFolderId
required
integer <int32>

Folder id associated with the mandate.

Array of objects or null (AccountingFolderSuffixCommand)

Data-driven addressing suffixes grouped by accounting folder. Each entry maps one accounting folder to its list of addressing suffixes.

RegisterSirenAddress
boolean or null

Whether the bare-SIREN addressing line must be registered for this SIREN alongside its suffixes (US 70094). Nullable so an absent value means "register" (bug 70505): {null} or {true} both register the SIREN-level line — the routing safety net for invoices addressed to the SIREN only. Set to {false} to register only the suffixed address(es) (e.g. SIREN_LMNP_ACHATS) without the bare SIREN — used when the bare SIREN is already carried by another accredited platform (PA) the client keeps. When {false}, at least one addressing suffix is required.

Responses

Request samples

Content type
[
  • {
    }
]

Response samples

Content type
{
  • "SuccessCount": 0,
  • "Errors": [
    ],
  • "HasErrors": true,
  • "IsFullFailure": true
}

Registers a batch of dossiers with the PA (ChainTrust) using the cabinet-less PME direct flow. Each dossier is processed independently: incomplete or ineligible dossiers are returned as per-entry errors (keyed by accounting folder id) while valid dossiers proceed.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the PME enterprise owning the dossiers.

Request Body schema:
required

The dossiers to register. The list size is bounded by the command validator.

Array
AccountingFolderId
required
integer <int32>

Folder (dossier) being registered. The SIREN is read from this folder.

BusinessName
string or null

Official business name (raison sociale) of the company being registered.

Address
string or null

Full postal address of the company's registered office.

CompanyExecutive
string or null

Optional company executive (dirigeant). When absent, the signatory's full name is used.

object (DirectMandateSignatory)

The signatory of a direct-flow registration entry.
The fields flagged as required must be provided. An entry that omits one of them is not rejected at the request level: it is reported individually in the response errors, so the other entries of the batch are still processed.

Responses

Request samples

Content type
[
  • {
    }
]

Response samples

Content type
{
  • "SuccessCount": 0,
  • "Errors": [
    ],
  • "HasErrors": true,
  • "IsFullFailure": true
}

Attaches a new accounting folder to a SIREN that already has a terminal (reusable) mandate, including a Finalized one (US 67459). Generates the SIREN_suffix addressing identifiers of the new folder and re-arms the existing mandate so a new formal agreement is triggered at the partner (ChainTrust); the existing mandate is reused — no new mandate is created in ViDA.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company (cabinet) owning the mandate.

Request Body schema:
required

The new accounting folder id and its addressing suffixes.

Array of objects or null (AccountingFolderSuffixCommand)

New accounting folders (each with its addressing suffixes) to attach to the existing mandate.

Responses

Request samples

Content type
{
  • "FolderSuffixes": [
    ]
}

Response samples

Content type
{
  • "property1": null,
  • "property2": null
}

Switches the bare-SIREN carrier directory line to a different accounting folder (immutable-mandate model B, US 68788). The carrier of the bare SIREN is held by the directory line, not by the mandate, so the switch is an explicit operation: the SIREN is resolved from the target folder and the directory line is moved from the current carrier folder to the target folder. No mandate is mutated and no ChainTrust call is made. Switching to the folder that already carries the SIREN is a no-op.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company (cabinet) owning the mandate.

Request Body schema:
required

The target accounting folder that should become the carrier.

AccountingFolderId
required
integer <int32>

Target accounting folder that should become the carrier of the bare SIREN line.

Responses

Request samples

Content type
{
  • "AccountingFolderId": 0
}

Response samples

Content type
{
  • "property1": null,
  • "property2": null
}

Retrieves the mandate detail for the given accounting folder for the specified company. The folder may be the bare-SIREN carrier or a folder attached to it (immutable-mandate model B): the exposed {SyncStatus} is always resolved for THIS folder specifically, so an attachment in progress on it is never masked by an older Finalized mandate on the same SIREN (US 68789).

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company owning the mandate.

accountingFolderId
required
integer <int32>

Internal identifier of the accounting folder linked to the mandate.

Responses

Response samples

Content type
{
  • "Id": 0,
  • "CompanyId": 0,
  • "AccountingFolderId": 0,
  • "CreatedAt": "2019-08-24T14:15:22Z",
  • "SignedAt": "2019-08-24T14:15:22Z",
  • "Siren": "string",
  • "ErrorMessage": "string",
  • "Documents": [
    ],
  • "SyncStatus": "Received",
  • "SignatureSettings": {
    },
  • "FolderSuffixes": [
    ],
  • "ErrorCode": "DuplicateCsv",
  • "IdentityDocuments": [
    ],
  • "KycVerificationPortalLink": "string",
  • "DateFrom": "2019-08-24T14:15:22Z",
  • "Siret": "string",
  • "CompanyExecutive": "string",
  • "BusinessName": "string",
  • "Address": "string",
  • "CompanyLegalRepresentative": {
    },
  • "CertifiedAccountant": {
    }
}

Retrieves, per SIREN, every accounting folder linked to it (the bare-SIREN carrier and every folder attached to it) with its own resolved mandate status (immutable-mandate model B, US 68789 read model). An attachment still in progress on a folder is never masked by an older Finalized mandate on another folder of the same SIREN.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company whose mandates are retrieved.

Responses

Response samples

Content type
[
  • {
    }
]

Sends a friendly reminder to the signatories of the specified mandates.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company owning the mandates.

Request Body schema:
required

List of internal mandate identifiers whose signatories should be reminded.

Array
integer <int32>

Responses

Request samples

Content type
[
  • 0
]

Response samples

Content type
{
  • "property1": null,
  • "property2": null
}

Recreates mandates that are in an expired or rejected state for the specified company.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company owning the mandates to recreate.

Request Body schema:
required

List of internal identifiers of the expired or rejected mandates to recreate.

Array
integer <int32>

Responses

Request samples

Content type
[
  • 0
]

Response samples

Content type
{
  • "SuccessCount": 0,
  • "Errors": [
    ]
}

Cancels the mandate identified by mandateId. When the mandate has a PartnerId, acts as a pass-through to the ChainTrust Partner API: the cancel call is forwarded and ChainTrust recursively cancels the linked Yousign signature requests and rejects the linked directory line requests. When the mandate has no PartnerId (never sent to the partner, e.g. waiting for its SIREN), it is cancelled locally only. A finalized mandate is refused: it is the signed proof of an agreement that has already produced its directory lines.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company owning the mandate.

mandateId
required
integer <int32>

Internal identifier of the mandate to cancel.

Responses

Response samples

Content type
{
  • "property1": null,
  • "property2": null
}

Downloads a signed KYC document from the partner for the given mandate. The document is streamed back as-is (PDF or ZIP depending on the partner response).

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company owning the mandate.

mandateId
required
integer <int32>

Internal identifier of the mandate containing the document.

documentId
required
integer <int32>

Internal identifier of the document to download.

Responses

Response samples

Content type
"string"

Generates the PA (Plateforme d'Accès) mandate coverage CSV export for the cabinet. Scope: the cabinet's ACTIVE accounting folders only, one row each, with the PA mandate status when a mandate exists for that folder. Access is restricted to the cabinet identified by the route's companyId.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Internal identifier of the company (cabinet) whose PA coverage is exported.

Responses

Response samples

Content type
"string"

SubTokens

Manages ChainTrust sub-tokens on behalf of the authenticated partner. Requests are persisted locally (company and accounting folders) while ChainTrust stays the live source of truth for IsActive and scopes. Requires the Fred.ViDA.Application.Common.FeatureFlags.SubTokens feature flag.
Every route taking a client id answers 404 when the sub-token does not belong to the company. Routes that link inbound routes answer 207 Multi-Status when ChainTrust refused some: the folders carrying the refused addresses are listed in the response, and every other route is linked.

Lists the sub-tokens of the company, with IsActive and Scopes read live from ChainTrust.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>

Responses

Response samples

Content type
[
  • {
    }
]

Creates a sub-token covering the accounting folders listed in the body. Fred.ViDA.Application.SubTokens.ViewModels.SubTokenCreatedViewModel.ClientSecret is returned only here and never stored server-side. Refused inbound routes come back in Fred.ViDA.Application.SubTokens.ViewModels.SubTokenCreatedViewModel.RejectedAccountingFolderIds.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>
Request Body schema:
required
DisplayName
required
string or null
Scopes
Array of strings or null
Enum: "DirectoryRead" "FlowsRead" "FlowsWrite"
AccountingFolderIds
Array of integers or null <int32> [ items <int32 > ]

Responses

Request samples

Content type
{
  • "DisplayName": "string",
  • "Scopes": [
    ],
  • "AccountingFolderIds": [
    ]
}

Response samples

Content type
{
  • "ClientId": "string",
  • "ClientSecret": "string",
  • "DisplayName": "string",
  • "IsActive": true,
  • "Scopes": [
    ],
  • "Sirens": [
    ],
  • "AccountingFolderIds": [
    ],
  • "RejectedAccountingFolderIds": [
    ]
}

Returns one sub-token, named by its OAuth2 client id, with its live ChainTrust data.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>
clientId
required
string

Responses

Response samples

Content type
{
  • "ClientId": "string",
  • "DisplayName": "string",
  • "IsActive": true,
  • "Scopes": [
    ],
  • "Sirens": [
    ],
  • "AccountingFolderIds": [
    ],
  • "RejectedAccountingFolderIds": [
    ]
}

Aligns a sub-token on the accounting folders given in the body, and updates its scopes, display name and active flag. The perimeter only ever widens: a request that would take a SIREN or an inbound route out of it is refused whole. Removing a folder is done by remove-accounting-folders and by nothing else. Refused inbound routes come back in Fred.ViDA.Application.SubTokens.ViewModels.SubTokenDetailViewModel.RejectedAccountingFolderIds.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>
clientId
required
string
Request Body schema:
required
DisplayName
required
string or null
IsActive
boolean or null
Scopes
Array of strings or null
Enum: "DirectoryRead" "FlowsRead" "FlowsWrite"
AccountingFolderIds
Array of integers or null <int32> [ items <int32 > ]

Responses

Request samples

Content type
{
  • "DisplayName": "string",
  • "IsActive": true,
  • "Scopes": [
    ],
  • "AccountingFolderIds": [
    ]
}

Response samples

Content type
{
  • "ClientId": "string",
  • "DisplayName": "string",
  • "IsActive": true,
  • "Scopes": [
    ],
  • "Sirens": [
    ],
  • "AccountingFolderIds": [
    ],
  • "RejectedAccountingFolderIds": [
    ]
}

Creates the sub-token of a cabinet from its identifier alone: authorised SIRENs and inbound routes are derived from the directory lines of its accounting folders, so the caller enumerates nothing. Fred.ViDA.Application.SubTokens.ViewModels.SubTokenCreatedViewModel.ClientSecret is returned only here and never stored server-side. Refused inbound routes come back in Fred.ViDA.Application.SubTokens.ViewModels.SubTokenCreatedViewModel.RejectedAccountingFolderIds.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>
Request Body schema:
required
DisplayName
required
string or null
Scopes
Array of strings or null
Enum: "DirectoryRead" "FlowsRead" "FlowsWrite"

Responses

Request samples

Content type
{
  • "DisplayName": "string",
  • "Scopes": [
    ]
}

Response samples

Content type
{
  • "ClientId": "string",
  • "ClientSecret": "string",
  • "DisplayName": "string",
  • "IsActive": true,
  • "Scopes": [
    ],
  • "Sirens": [
    ],
  • "AccountingFolderIds": [
    ],
  • "RejectedAccountingFolderIds": [
    ]
}

Aligns a sub-token on the whole cabinet: the perimeter is derived from the directory lines of its accounting folders, so the request carries no body, and the display name, active flag and scopes are read back from ChainTrust rather than sent. The perimeter only ever widens: a derived perimeter that would take a SIREN or an inbound route out of it is refused whole. Refused inbound routes come back in Fred.ViDA.Application.SubTokens.ViewModels.SubTokenDetailViewModel.RejectedAccountingFolderIds.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>
clientId
required
string

Responses

Response samples

Content type
{
  • "ClientId": "string",
  • "DisplayName": "string",
  • "IsActive": true,
  • "Scopes": [
    ],
  • "Sirens": [
    ],
  • "AccountingFolderIds": [
    ],
  • "RejectedAccountingFolderIds": [
    ]
}

Removes accounting folders from a sub-token — the only operation that takes anything out of a perimeter. The inbound routes of the folders listed are unlinked first, then the SIRENs no remaining folder carries are dropped from the authorised list. A route another retained folder still carries stays in place, so removing one folder never cuts the inbound flows of another sharing its SIREN. A folder the sub-token does not carry is reported as already absent, not rejected.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>
clientId
required
string
Request Body schema:
required
AccountingFolderIds
Array of integers or null <int32> [ items <int32 > ]

Responses

Request samples

Content type
{
  • "AccountingFolderIds": [
    ]
}

Response samples

Content type
{
  • "ClientId": "string",
  • "RequestedAccountingFolderIds": [
    ],
  • "RemovedAccountingFolderCount": 0,
  • "AlreadyAbsentAccountingFolderCount": 0,
  • "UnlinkedIdentifierCount": 0,
  • "RetainedIdentifierCount": 0,
  • "RemovedSirenCount": 0,
  • "AccountingFolderIds": [
    ]
}

Regenerates the client secret and revokes every access token already issued, so no credential obtained before the rotation keeps working: every consumer must be given the new secret and obtain a new token. Fred.ViDA.Application.SubTokens.ViewModels.SubTokenSecretRegeneratedViewModel.NewClientSecret is returned only here and never stored server-side — lost by its recipient, it can only be replaced by another regeneration.

Authorizations:
oauth2
path Parameters
companyId
required
integer <int32>
clientId
required
string

Responses

Response samples

Content type
{
  • "ClientId": "string",
  • "NewClientSecret": "string"
}

Support

Read-only investigation and targeted correction of a single mandate, for the IT support.

Flows

Retrieves the flows associated with the given flow IDs and the specified accounting folder.

Authorizations:
oauth2
path Parameters
accountingFolderId
required
integer <int32>

The ID of the accounting folder to which the flows belong.

query Parameters
flowsIds
Array of integers or null <int32> [ items <int32 > ]

The list of flow IDs to filter the requested flows.

Responses

Response samples

Content type
[
  • {
    }
]

Searches invoices within an accounting folder using optional filters. Only provided (non-null) parameters are applied to narrow the results. Without any filter the endpoint returns all invoices that are waiting for integration or available.

Authorizations:
oauth2
path Parameters
accountingFolderId
required
integer <int32>

The ID of the accounting folder to search within.

Request Body schema:
required

The query object containing the search filters.

Status
string or null
Enum: "None" "Deposited" "IssuedByPlatform" "ReceivedFromPlatform" "Available" "Processing" "Approved" "PartiallyApproved" "InDispute" "Suspended" "Completed" "Refused" "PaymentTransmitted" "Cashed" "Rejected" "Targeted" "Cancelled" "RoutingError" "PayerAccountChange" "Inadmissible" "LifeCycleRejected" "Scheduled"

Possible values:

  • None (0)
  • Deposited (200): [Facture] Déposée (Obligatoire)
  • IssuedByPlatform (201): [Facture] Emise par la plateforme (Facultatif)
  • ReceivedFromPlatform (202): [Facture] Reçue de la plateforme (Facultatif)
  • Available (203): [Facture] Mise à disposition (Facultatif)
  • Processing (204): [Facture] Prise en charge (Facultatif)
  • Approved (205): [Facture] Approuvée (Facultatif)
  • PartiallyApproved (206): [Facture] Approuvée partiellement (Facultatif)
  • InDispute (207): [Facture] En litige (Facultatif)
  • Suspended (208): [Facture] Suspendue (Facultatif)
  • Completed (209): [Facture] Complétée (Facultatif)
  • Refused (210): [Facture] Refusée (Obligatoire)
  • PaymentTransmitted (211): [Facture] Paiement transmis (Facultatif)
  • Cashed (212): [Facture] Encaissée (Obligatoire)
  • Rejected (213): [Facture] Rejetée (Obligatoire)
  • Targeted (214): [Facture] Visée (Facultatif)
  • Cancelled (220): [Facture] Annulée (Facultatif)
  • RoutingError (221): [Facture] ERREUR_ROUTAGE (Facultatif)
  • PayerAccountChange (227): [Facture] Changement de Compte à Payer (Facultatif)
  • Inadmissible (501): [Flux] Irrecevable (Obligatoire)
  • LifeCycleRejected (601): [CDV] Rejeté (Facultatif)
  • Scheduled (-1): [Inqom] Programmée, status mis sur la facture quand elle est envoyée à ViDA pour transmission à la PA
SupplierName
string or null
InvoiceNumber
string or null
InvoiceType
string or null
Enum: "SellerInvoice" "BuyerInvoice"

Possible values:

  • SellerInvoice (0)
  • BuyerInvoice (1)
IssueDateFrom
string or null <date-time>
IssueDateTo
string or null <date-time>
DueDateFrom
string or null <date-time>
DueDateTo
string or null <date-time>
TotalAmountMin
number or null <double>
TotalAmountMax
number or null <double>
VatAmountMin
number or null <double>
VatAmountMax
number or null <double>
SortField
string or null
Enum: "SupplierName" "InvoiceNumber" "IssueDate" "DueDate" "TotalAmount" "VatAmount" "BuyerName"

Possible values:

  • SupplierName (0)
  • InvoiceNumber (1)
  • IssueDate (2)
  • DueDate (3)
  • TotalAmount (4)
  • VatAmount (5)
  • BuyerName (6)
SortDirection
string or null
Enum: "Ascending" "Descending"

Possible values:

  • Ascending (0)
  • Descending (1)
PageNumber
integer or null <int32>
PageSize
integer or null <int32>
BuyerName
string or null
DocumentTypes
Array of strings or null
Enum: "None" "CommercialInvoice" "CreditNote" "PrePaymentInvoice" "IntermediateInvoice" "BalanceInvoice" "DebitNote" "SelfBilledInvoice" "SelfBilledCreditNote"

Responses

Request samples

Content type
{
  • "Status": "None",
  • "SupplierName": "string",
  • "InvoiceNumber": "string",
  • "InvoiceType": "SellerInvoice",
  • "IssueDateFrom": "2019-08-24T14:15:22Z",
  • "IssueDateTo": "2019-08-24T14:15:22Z",
  • "DueDateFrom": "2019-08-24T14:15:22Z",
  • "DueDateTo": "2019-08-24T14:15:22Z",
  • "TotalAmountMin": 0.1,
  • "TotalAmountMax": 0.1,
  • "VatAmountMin": 0.1,
  • "VatAmountMax": 0.1,
  • "SortField": "SupplierName",
  • "SortDirection": "Ascending",
  • "PageNumber": 0,
  • "PageSize": 0,
  • "BuyerName": "string",
  • "DocumentTypes": [
    ]
}

Response samples

Content type
{
  • "Items": [
    ],
  • "PageNumber": 0,
  • "PageSize": 0,
  • "TotalCount": 0,
  • "PageCount": 0,
  • "HasPreviousPage": true,
  • "HasNextPage": true
}

Retrieves the details of a specific invoice associated with the specified accounting folder.

Authorizations:
oauth2
path Parameters
accountingFolderId
required
integer <int32>

The unique identifier of the accounting folder containing the invoice.

flowId
required
integer <int32>

The unique identifier of the invoice to retrieve within the specified accounting folder.

Responses

Response samples

Content type
{
  • "PdfUrl": "string",
  • "Items": [
    ]
}

Applies one life cycle status to a batch of invoices of the accounting folder.

The invoices are designated by the Id returned by POST .../invoices/search.

Approved, InDispute and Suspended first put the invoice into accounting: the status is transmitted to the platform once the accounting entries exist. A disputed or suspended invoice stays in accounting and no payment is forced. Any other status is transmitted at once.

Each invoice gets its own outcome: 200 when all of them succeeded, 207 when some failed (listed in Failed with the reason), 400 when none could be processed or the request itself is invalid (missing status, missing motive, or a motive the status does not admit). Asking again for the status an invoice already carries is refused for that invoice.

Reserved to company executive, DAF and group DAF accounts: any other role is refused with 403.

Authorizations:
oauth2
path Parameters
accountingFolderId
required
integer <int32>

The unique identifier of the accounting folder containing the invoices.

Request Body schema:
required

The invoice flow IDs, the status to apply, and its motive when it carries one.

ReferencedFlowIds
Array of integers or null <int32> [ items <int32 > ]

Invoices to update, designated by the Id returned by POST .../invoices/search. Each one gets its own outcome in the result.

Status
string or null
Enum: "None" "Deposited" "IssuedByPlatform" "ReceivedFromPlatform" "Available" "Processing" "Approved" "PartiallyApproved" "InDispute" "Suspended" "Completed" "Refused" "PaymentTransmitted" "Cashed" "Rejected" "Targeted" "Cancelled" "RoutingError" "PayerAccountChange" "Inadmissible" "LifeCycleRejected" "Scheduled"

Status applied to every listed invoice. A recipient answers an invoice with Approved, PartiallyApproved, InDispute, Suspended, Refused or PaymentTransmitted.

Possible values:

  • None (0)
  • Deposited (200): [Facture] Déposée (Obligatoire)
  • IssuedByPlatform (201): [Facture] Emise par la plateforme (Facultatif)
  • ReceivedFromPlatform (202): [Facture] Reçue de la plateforme (Facultatif)
  • Available (203): [Facture] Mise à disposition (Facultatif)
  • Processing (204): [Facture] Prise en charge (Facultatif)
  • Approved (205): [Facture] Approuvée (Facultatif)
  • PartiallyApproved (206): [Facture] Approuvée partiellement (Facultatif)
  • InDispute (207): [Facture] En litige (Facultatif)
  • Suspended (208): [Facture] Suspendue (Facultatif)
  • Completed (209): [Facture] Complétée (Facultatif)
  • Refused (210): [Facture] Refusée (Obligatoire)
  • PaymentTransmitted (211): [Facture] Paiement transmis (Facultatif)
  • Cashed (212): [Facture] Encaissée (Obligatoire)
  • Rejected (213): [Facture] Rejetée (Obligatoire)
  • Targeted (214): [Facture] Visée (Facultatif)
  • Cancelled (220): [Facture] Annulée (Facultatif)
  • RoutingError (221): [Facture] ERREUR_ROUTAGE (Facultatif)
  • PayerAccountChange (227): [Facture] Changement de Compte à Payer (Facultatif)
  • Inadmissible (501): [Flux] Irrecevable (Obligatoire)
  • LifeCycleRejected (601): [CDV] Rejeté (Facultatif)
  • Scheduled (-1): [Inqom] Programmée, status mis sur la facture quand elle est envoyée à ViDA pour transmission à la PA
ReasonCode
string or null
Enum: "NON_TRANSMISE" "JUSTIF_ABS" "ROUTAGE_ERR" "AUTRE" "COORD_BANC_ERR" "TX_TVA_ERR" "MONTANTTOTAL_ERR" "CALCUL_ERR" "NON_CONFORME" "DOUBLON" "DEST_INC" "DEST_ERR" "TRANSAC_INC" "EMMET_INC" "CONTRAT_TERM" "DOUBLE_FACT" "CMD_ERR" "ADR_ERR" "SIRET_ERR" "CODE_ROUTAGE_ERR" "REF_CT_ABSENT" "REF_ERR" "PU_ERR" "REM_ERR" "QTE_ERR" "ART_ERR" "MODPAI_ERR" "QUALITE_ERR" "LIVR_INCOMP" "REJ_SEMAN" "REJ_UNI" "REJ_COH" "REJ_ADR" "REJ_CONT_B2G" "REJ_REF_PJ" "REJ_ASS_PJ" "IRR_VIDE_F" "IRR_TYPE_F" "IRR_SYNTAX" "IRR_TAILLE_PJ" "IRR_NOM_PJ" "IRR_VID_PJ" "IRR_EXT_DOC" "IRR_TAILLE_F" "IRR_ANTIVIRUS"

Motive of the status, from the AFNOR XP Z12-012 table of status motives. Mandatory for InDispute. Each status admits its own motives, listed per value below; a status that lists none takes no motive. A motive the status does not admit rejects the whole request.

Possible values:

  • NON_TRANSMISE (0): Destinataire non connecté — admitted by Deposited
  • JUSTIF_ABS (1): Justificatif absent ou insuffisant — admitted by Suspended
  • ROUTAGE_ERR (2): Erreur de routage — admitted by RoutingError
  • AUTRE (3): Autre (à expliquer en texte libre) — admitted by PartiallyApproved, InDispute
  • COORD_BANC_ERR (4): Erreur de coordonnées bancaires — admitted by InDispute, Suspended
  • TX_TVA_ERR (5): Taux de TVA erroné — admitted by InDispute, Refused
  • MONTANTTOTAL_ERR (6): Montant total erroné — admitted by InDispute, Refused, Rejected
  • CALCUL_ERR (7): Erreur de calcul de la facture — admitted by InDispute, Refused, Rejected
  • NON_CONFORME (8): Mention légale manquante — admitted by InDispute, Refused
  • DOUBLON (9): Facture en doublon (déjà émise / reçue) — admitted by InDispute, Refused, Rejected
  • DEST_INC (10): Destinataire inconnu — admitted by Rejected
  • DEST_ERR (11): Erreur de destinataire — admitted by InDispute, Refused
  • TRANSAC_INC (12): Transaction inconnue — admitted by InDispute, Refused
  • EMMET_INC (13): Émetteur inconnu — admitted by InDispute, Refused
  • CONTRAT_TERM (14): Contrat terminé — admitted by InDispute, Refused
  • DOUBLE_FACT (15): Double facture (prestation ou livraison déjà facturée) — admitted by InDispute, Refused
  • CMD_ERR (16): N° de commande incorrect ou manquant — admitted by PartiallyApproved, InDispute, Suspended, Refused
  • ADR_ERR (17): Adresse de facturation électronique erronée — admitted by InDispute, Refused, Rejected
  • SIRET_ERR (18): SIRET erroné ou absent — admitted by PartiallyApproved, InDispute, Suspended
  • CODE_ROUTAGE_ERR (19): CODE_ROUTAGE absent ou erroné — admitted by PartiallyApproved, InDispute, Suspended
  • REF_CT_ABSENT (20): Référence contractuelle nécessaire au traitement de la facture manquante — admitted by PartiallyApproved, InDispute, Suspended, Refused
  • REF_ERR (21): Référence incorrecte (préciser laquelle en texte libre) — admitted by PartiallyApproved, InDispute, Suspended
  • PU_ERR (22): Prix unitaires incorrects — admitted by PartiallyApproved, InDispute
  • REM_ERR (23): Remise erronée — admitted by PartiallyApproved, InDispute
  • QTE_ERR (24): Quantité facturée incorrecte — admitted by PartiallyApproved, InDispute
  • ART_ERR (25): Article facturé incorrect — admitted by PartiallyApproved, InDispute
  • MODPAI_ERR (26): Modalités de paiement incorrectes — admitted by PartiallyApproved, InDispute
  • QUALITE_ERR (27): Qualité d'article livré incorrecte — admitted by PartiallyApproved, InDispute
  • LIVR_INCOMP (28): Problème de livraison — admitted by PartiallyApproved, InDispute
  • REJ_SEMAN (29): Rejet pour erreur sémantique — admitted by Rejected
  • REJ_UNI (30): Rejet sur contrôle unicité — admitted by Rejected
  • REJ_COH (31): Rejet sur contrôle cohérence de données — admitted by Rejected
  • REJ_ADR (32): Rejet sur contrôle d'adressage — admitted by Rejected
  • REJ_CONT_B2G (33): Rejet sur contrôles métier B2G — admitted by Rejected
  • REJ_REF_PJ (34): Rejet sur référence de PJ — admitted by Rejected
  • REJ_ASS_PJ (35): Rejet sur erreur d'association de la PJ — admitted by Rejected
  • IRR_VIDE_F (36): Contrôle de non vide sur les fichiers du flux — admitted by Inadmissible
  • IRR_TYPE_F (37): Contrôle de type et extension des fichiers du flux — admitted by Inadmissible
  • IRR_SYNTAX (38): Contrôle syntaxique des fichiers du flux — admitted by Inadmissible
  • IRR_TAILLE_PJ (39): Contrôle de taille des PJ de chaque fichier du flux — admitted by Inadmissible
  • IRR_NOM_PJ (40): Contrôle du nom des PJ de chaque fichier du flux (absence de caractères interdits) — admitted by Inadmissible
  • IRR_VID_PJ (41): Contrôle de PJ non vide de chaque fichier du flux — admitted by Inadmissible
  • IRR_EXT_DOC (42): Contrôle de l'extension des PJ de chaque fichier du flux — admitted by Inadmissible
  • IRR_TAILLE_F (43): Contrôle de taille max des fichiers contenus dans le flux — admitted by Inadmissible
  • IRR_ANTIVIRUS (44): Contrôle anti-virus — admitted by Inadmissible
ReasonText
string or null

Free-text explanation of the motive, transmitted with the status. Expected with the AUTRE motive and with REF_ERR, to say which reference is wrong.

Responses

Request samples

Content type
{
  • "ReferencedFlowIds": [
    ],
  • "Status": "None",
  • "ReasonCode": "NON_TRANSMISE",
  • "ReasonText": "string"
}

Response samples

Content type
{
  • "Succeeded": [
    ],
  • "Failed": [
    ],
  • "HasErrors": true,
  • "IsFullFailure": true
}

Platform

ViDAPlatform_GetAccountingFolderPlatformConfiguration

Authorizations:
oauth2
path Parameters
accountingFolderId
required
integer <int32>

Responses

Response samples

Content type
{
  • "AccountingFolderId": 0,
  • "HasIncomingConfiguration": true,
  • "HasOutgoingConfiguration": true,
  • "DirectoryLines": [
    ]
}