Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 43 additions & 1 deletion guides/fr-pa-registration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ The Annuaire requires every entry to be receive-capable, so there is no send-onl
Moves the silo entry into a visible "in progress" state so operator dashboards reflect that registration is underway.
</Step>
<Step title="Wait for French agreement upload">
Pauses until the signed agreement is uploaded and accepted (`gov-fr.agreement.wait.approval`).
Pauses until the signed agreement is uploaded and accepted (`gov-fr.agreement.wait.approval`). This is a **manual gate** — the party stays in <Badge color="yellow">processing</Badge> and the workflow does not advance until someone opens the agreement form and signs it. See [Complete the agreement](#complete-the-agreement) below.
</Step>
<Step title="Set State → completed">
Marks the agreement step as completed before the directory and Peppol registrations run.
Expand Down Expand Up @@ -59,6 +59,48 @@ The Annuaire requires every entry to be receive-capable, so there is no send-onl
</Tab>
</Tabs>

## Complete the agreement

After the workflow reaches **Wait for French agreement upload**, the party sits in <Badge color="yellow">processing</Badge> until the PA mandate is signed. **This step is manual and required** — the party cannot be accepted, registered in the Annuaire, or published on Peppol until it is done.

### Sign in Console

The agreement form is surfaced as a link on the party itself:

<Steps>
<Step title="Open the party entry">
In Console, open the party (silo entry) that the register workflow is running on.
</Step>
<Step title="Go to the Meta tab">
Open the **Meta** tab. The **Sign agreement for France** step publishes an agreement link there (meta key `approval-link`).
</Step>
<Step title="Open and sign the agreement form">
Click the link to open the French PA agreement form. Review the mandate that authorises Invopop to act as the party's Plateforme Agréée, sign it, and submit.
</Step>
</Steps>

### Sign through the API

You can also complete the agreement programmatically — useful when you embed the onboarding in your own product instead of sending the signer to the Invopop form. Once the workflow has paused at **Wait for French agreement upload**:

1. [Download the unsigned agreement PDF](/api-ref/apps/gov-fr/agreement-fetch) `GET /apps/gov-fr/v1/entry/{silo_entry_id}/agreement`<br />
The mandate PDF is generated from the party's data for the signer to review and sign.

2. [Upload the signed agreement](/api-ref/apps/gov-fr/agreement-upload) `POST /apps/gov-fr/v1/entry/{silo_entry_id}/agreement`<br />
Send the signed PDF together with the signature method: `esignature` for an electronic (PAdES) signature, or `identity` for a handwritten one.

3. [Upload identity images](/api-ref/apps/gov-fr/identity-upload) `POST /apps/gov-fr/v1/entry/{silo_entry_id}/identity`<br />
Only required when the signature method is `identity`. Upload one image per view: `front` and `back` for an ID card, or `page` for a passport.

4. [Confirm the submission](/api-ref/apps/gov-fr/confirm) `POST /apps/gov-fr/v1/entry/{silo_entry_id}/confirm`<br />
Marks the submission as complete and wakes the waiting workflow task.

Whichever way the agreement is signed, once it is submitted and accepted, **Wait for French agreement upload** resolves and the workflow continues to the directory and Peppol registration steps, ending in <Badge color="purple">registered</Badge>.

<Note>
If you don't open the Meta tab and sign the agreement, the party stays in <Badge color="yellow">processing</Badge> indefinitely — it is never automatically accepted.
</Note>

## Unregistration

Run the unregister workflow to revoke a party's registrations when it should no longer issue or receive invoices through Invopop.
Expand Down