> ## Documentation Index
> Fetch the complete documentation index at: https://docs.codaclean.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Een klant toevoegen

> Maak een klant aan, koppel zijn bankrekeningen en sociale secretariaten, vraag mandaten aan en volg ze op tot ze actief zijn.

Om de CODA- of CODB-bestanden van een klant te ontvangen, heeft Codaclean drie zaken nodig: de klant zelf, zijn bankrekeningen of sociale secretariaten, en een ondertekend mandaat voor elk ervan.

<Steps>
  <Step title="De klant aanmaken">
    Roep [`POST /customers/new`](/nl/api/endpoints/create-customer) aan met:

    * het `enterpriseNumber` (in de vorm `0123.456.789`, zonder `BE`), de `name` en de `accountingRef` van de klant;
    * het `address`: `street`, `zipCode`, `municipality`, `country` (`street2` is optioneel);
    * de `contact`: `name`, `function`, `email` en `language` (`fr`, `nl` of `en`). De vragen om mandaten te ondertekenen worden in die taal naar deze persoon gestuurd.

    U kunt `bankAccounts` (alleen de IBAN) en `payrollProviders` (alleen de code) in dezelfde aanroep meegeven, of ze later toevoegen:

    * [`POST /customers/{customerId}/bank-accounts/{iban}/new`](/nl/api/endpoints/add-bank-account)
    * [`POST /customers/{customerId}/payroll-providers/{code}/new`](/nl/api/endpoints/add-payroll-provider)

    <Warning>
      - **Bankrekeningen:** stuur alleen de IBAN. Codaclean leidt daaruit de BIC en de naam van de bank af.
      - **Sociale secretariaten:** stuur de Codaclean-code van het sociaal secretariaat, niet zijn naam. U vindt die code via [`POST /payroll-providers`](/nl/api/endpoints/list-payroll-providers).
    </Warning>

    Bestaat de klant al in het boekhoudkantoor, zoek hem dan op met [`POST /customers`](/nl/api/endpoints/search-customers) (bijvoorbeeld op `enterpriseNumber`) en voeg toe wat ontbreekt.

    **Vereiste scope:** `customers:write`
  </Step>

  <Step title="De mandaten aanvragen">
    Vraag één mandaat aan per bankrekening en één per sociaal secretariaat:

    * CODA: [`POST /customers/{customerId}/bank-accounts/{iban}/mandates/new`](/nl/api/endpoints/request-coda-mandate)
    * CODB: [`POST /customers/{customerId}/payroll-providers/{code}/mandates/new`](/nl/api/endpoints/request-codb-mandate)

    Voor bankrekeningen bepaalt de bank het product. Codaclean vraagt een CODA-mandaat aan als de bank dat ondersteunt, en anders een CODAlight-toestemming via een connector.

    In beide gevallen ontvangt u CODA-bestanden.

    <Warning>
      Per IBAN, en per sociaal secretariaat, kan er maar één mandaat tegelijk in behandeling zijn. Een tweede aanvraag geeft `409 mandateAlreadyRequested` terug.

      Verstuur elke aanvraag maar één keer en herhaal ze niet zolang het mandaat niet in `POST /mandates` verschijnt: tot dan wordt een dubbele aanvraag niet opgemerkt.

      Moet een mandaat vervangen worden, bijvoorbeeld omdat de gegevens van de klant gewijzigd zijn, dan kan de gebruiker dat in MyCodaclean doen.
    </Warning>

    **Vereiste scope:** `mandates:write`
  </Step>

  <Step title="De mandaten opvolgen">
    Mandaataanvragen worden **asynchroon** verwerkt. De aanroep bevestigt alleen dat Codaclean de aanvraag heeft ontvangen, en geeft geen ID van het mandaat terug.

    Om de mandaten op te volgen, roept u regelmatig [`POST /mandates`](/nl/api/endpoints/search-mandates) aan, bijvoorbeeld met `customerId` en met `updatedSince` ingesteld op het tijdstip van uw vorige aanroep.

    Elk mandaat heeft een `status` die verandert naarmate de procedure vordert.

    **Vereiste scope:** `mandates:read`
  </Step>
</Steps>

## Klant geregistreerd door een ander boekhoudkantoor

Een ondernemingsnummer kan maar tot één boekhoudkantoor behoren. Heeft een ander kantoor het al geregistreerd, dan geeft het aanmaken van de klant `403 belongsToAnotherTenant` terug en kunt u de klant niet toevoegen.

De boekhouder moet dan contact opnemen met de support van Codaclean om een overdrachtsprocedure op te starten. Daarvoor is het akkoord van de eindklant nodig.

## Een connector kiezen

Sommige banken zijn bereikbaar via meerdere CODAlight-connectoren. In dat geval geeft de mandaataanvraag `422 connectorSelectionRequired` terug, met een lijst `candidates`.

Roep het endpoint opnieuw aan met de gekozen `connectorId` in de body. Codaclean onthoudt die keuze voor de bankrekening.

## Statussen van mandaten

| Status                       | CODA | CODB | Betekenis                                                                                                                                                                                                    |
| ---------------------------- | ---- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `created`                    | ✓    | ✓    | De aanvraag is aangemaakt en wordt verwerkt.                                                                                                                                                                 |
| `waitingForSigner`           | ✓    | ✓    | Wacht op de handtekening van de klant.                                                                                                                                                                       |
| `expired`                    | ✓    | ✓    | Niet binnen 3 maanden ondertekend. De gebruiker kan het mandaat opnieuw versturen vanuit MyCodaclean.                                                                                                        |
| `rejectedBySigner`           | ✓    | ✓    | De ondertekenaar heeft het mandaat geweigerd.                                                                                                                                                                |
| `waitingForBank`             | ✓    |      | Ondertekend, wacht op de bank.                                                                                                                                                                               |
| `confirmedByBank`            | ✓    |      | Bevestigd door de bank, maar nog geen bestand ontvangen.                                                                                                                                                     |
| `rejectedByBank`             | ✓    |      | Geweigerd door de bank.                                                                                                                                                                                      |
| `unsupportedBank`            | ✓    |      | De bank wordt niet ondersteund.                                                                                                                                                                              |
| `waitingForPayrollProvider`  |      | ✓    | Ondertekend, wacht op het sociaal secretariaat.                                                                                                                                                              |
| `rejectedByPayrollProvider`  |      | ✓    | Geweigerd door het sociaal secretariaat.                                                                                                                                                                     |
| `unsupportedPayrollProvider` |      | ✓    | Het sociaal secretariaat wordt niet ondersteund.                                                                                                                                                             |
| `finished`                   | ✓    | ✓    | **Actief**: de ondertekening is afgerond en er worden bestanden ontvangen. In MyCodaclean weergegeven als "Actief". Wordt niet teruggegeven door `POST /mandates`, tenzij `includeFinished` op `true` staat. |
| `renewalRequired`            | ✓    |      | Alleen CODAlight: de toestemming is verlopen en de klant moet ze vernieuwen.                                                                                                                                 |
| `error`                      | ✓    | ✓    | Er is een fout opgetreden. Zie het veld `error`.                                                                                                                                                             |

## CODAlight-toestemmingen

Een CODAlight-toestemming wordt teruggegeven met `product: "CODA"`.

Ze is in de tijd beperkt: `validUntil` geeft het einde van de toestemming aan. Na die datum krijgt het mandaat de status `renewalRequired`, tot de klant de toestemming vernieuwt.

## Goed om te weten

* Mandaten die niet binnen **3 maanden** ondertekend zijn, verlopen. De gebruiker kan ze opnieuw versturen vanuit MyCodaclean.
* Codaclean stuurt eindklanten die een mandaat nog moeten ondertekenen of vernieuwen automatisch en regelmatig een herinnering.
* De lijst van ondersteunde banken vraagt u op met [`POST /banks`](/nl/api/endpoints/list-banks).
* De lijst van beschikbare sociale secretariaten en hun codes vraagt u op met [`POST /payroll-providers`](/nl/api/endpoints/list-payroll-providers).
