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

# ACD

export const OverviewLegend = ({showTitle = true}) => <blockquote>
    {showTitle && <p>
        <strong>Overview legend 🧭</strong>
      </p>}
    <table>
      <thead>
        <tr>
          <th>Column</th>
          <th>Value</th>
          <th>Meaning</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Geography</td>
          <td>🇫🇷 FR · 🇧🇪 BE · …</td>
          <td>Countries where the connector is officially supported.</td>
        </tr>
        <tr>
          <td rowSpan={3}>Software type</td>
          <td>SaaS</td>
          <td>Through API.</td>
        </tr>
        <tr>
          <td>On-premise (local agent)</td>
          <td>
            Software running locally — installation of a local agent is
            required.
          </td>
        </tr>
        <tr>
          <td>On-premise (API)</td>
          <td>Software running locally — API available.</td>
        </tr>
        <tr>
          <td rowSpan={2}>Status</td>
          <td>🔵 Live</td>
          <td>Connector is generally available and production-ready.</td>
        </tr>
        <tr>
          <td>🟣 Beta</td>
          <td>
            Connector is in beta — usable in production but may still evolve.
          </td>
        </tr>
        <tr>
          <td>Multi folder</td>
          <td>✅ Yes / ❌ No</td>
          <td>
            Connection to multiple accounting folders at the same time (see{' '}
            <a href="/developer-guides/api-guides/accounting/folders">
              accounting folders guide
            </a>
            ).
          </td>
        </tr>
        <tr>
          <td>Rate limits</td>
          <td>✅ No / ❌ Yes</td>
          <td>Whether the target software sets rate limits on API calls.</td>
        </tr>
        <tr>
          <td rowSpan={3}>API keys</td>
          <td>❎ No</td>
          <td>
            No API keys required (OAuth2 client secret and client ID). No
            requirements to activate the connector — you can create a
            connection.
          </td>
        </tr>
        <tr>
          <td>🔑</td>
          <td>
            Keys are required to activate the connector. Chift cannot act as
            intermediary to obtain them; we can still assist with steps to get
            keys directly from the software provider.
          </td>
        </tr>
        <tr>
          <td>🔑 ☑️ via Chift</td>
          <td>
            Keys are required to activate the connector. You can go through
            Chift to get the keys (intermediary or partnership keys). An
            approval process may still apply, but you do not need to request
            keys from the vendor on your own.
          </td>
        </tr>
        <tr>
          <td rowSpan={3}>Approval / certification process</td>
          <td>⚡ Instant</td>
          <td>
            No keys required, or Chift can encode their keys for you when
            requested. Activation is instantaneous.
          </td>
        </tr>
        <tr>
          <td>🟢 Approval — [Duration]</td>
          <td>
            Approval will be granted. The vendor may require information or app
            configuration in a developer portal before issuing keys.
          </td>
        </tr>
        <tr>
          <td>🟠 Approval — [Duration]</td>
          <td>
            Approval is not guaranteed — often due to integration strategy; the
            vendor may do a deeper assessment (competitors, partnership
            requirements, and similar).
          </td>
        </tr>
        <tr>
          <td rowSpan={2}>Activation time</td>
          <td>⚡ Instant</td>
          <td>
            If no keys are required, or Chift has keys ready to share with you.
          </td>
        </tr>
        <tr>
          <td>Time</td>
          <td>
            Estimated time to get the connector activated in production as a
            result of the approval or certification process (e.g. ⏱️ 2 days, 1
            week).
          </td>
        </tr>
        <tr>
          <td rowSpan={3}>Extra fees — software editor</td>
          <td>❎ No</td>
          <td>No fees charged by the software editor.</td>
        </tr>
        <tr>
          <td>💰 🕹️</td>
          <td>Fees associated with obtaining a testing account.</td>
        </tr>
        <tr>
          <td>💰 🔑</td>
          <td>Fees charged to get API keys.</td>
        </tr>
        <tr>
          <td rowSpan={2}>Extra fees — end user</td>
          <td>❎ No</td>
          <td>The end user does not pay extra to get integrated.</td>
        </tr>
        <tr>
          <td>💰 Yes</td>
          <td>The end user must pay extra to get integrated.</td>
        </tr>
        <tr>
          <td>Comments on costs</td>
          <td>—</td>
          <td>Additional notes on fees or pricing when relevant.</td>
        </tr>
        <tr>
          <td rowSpan={4}>Sandbox account</td>
          <td>✅ via Chift</td>
          <td>Chift can provide you with a sandbox.</td>
        </tr>
        <tr>
          <td>🟠 Only through integrator</td>
          <td>Only the software's integrator can provide a sandbox.</td>
        </tr>
        <tr>
          <td>✅ Self-service</td>
          <td>You can create your own sandbox.</td>
        </tr>
        <tr>
          <td>✅ Trial account</td>
          <td>It is possible to create a trial account.</td>
        </tr>
      </tbody>
    </table>
  </blockquote>;

export const ConnectorCardIframe = ({api = 'accounting', connectors}) => {
  const [theme, setTheme] = React.useState('light');
  React.useEffect(() => {
    const checkTheme = () => {
      const isDark = document.documentElement.classList.contains('dark');
      setTheme(isDark ? 'dark' : 'light');
    };
    checkTheme();
    const observer = new MutationObserver(checkTheme);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ['class']
    });
    return () => observer.disconnect();
  }, []);
  const queryParams = new URLSearchParams({
    api,
    theme,
    ...connectors ? {
      connectors
    } : {}
  });
  const iframeUrl = `https://chift-coverage-matrix.s3.eu-west-3.amazonaws.com/connector-card.html?${queryParams.toString()}`;
  return <iframe src={iframeUrl} title={`Chift connector information - ${api}`} style={{
    display: 'block',
    width: '100%',
    height: '480px',
    margin: 0,
    padding: 0,
    border: 'none'
  }} />;
};

export const CoverageIframe = ({api = 'accounting', connectors}) => {
  const [theme, setTheme] = React.useState('light');
  const [isFullscreen, setIsFullscreen] = React.useState(false);
  const [currentIframeUrl, setCurrentIframeUrl] = React.useState(null);
  const iframeRef = React.useRef(null);
  React.useEffect(() => {
    const checkTheme = () => {
      const isDark = document.documentElement.classList.contains('dark');
      setTheme(isDark ? 'dark' : 'light');
    };
    checkTheme();
    const observer = new MutationObserver(checkTheme);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ['class']
    });
    return () => observer.disconnect();
  }, []);
  React.useEffect(() => {
    const handleFullscreenChange = () => {
      setIsFullscreen(!!document.fullscreenElement);
    };
    document.addEventListener('fullscreenchange', handleFullscreenChange);
    return () => document.removeEventListener('fullscreenchange', handleFullscreenChange);
  }, []);
  React.useEffect(() => {
    const handleMessage = event => {
      if (!event.origin.includes('chift-coverage-matrix.s3.eu-west-3.amazonaws.com')) return;
      if (event.data?.type === 'urlChange' && event.data?.url) {
        setCurrentIframeUrl(event.data.url);
      }
    };
    window.addEventListener('message', handleMessage);
    return () => window.removeEventListener('message', handleMessage);
  }, []);
  const queryParams = new URLSearchParams({
    api,
    theme,
    ...connectors ? {
      connectors
    } : {}
  });
  const iframeUrl = `https://chift-coverage-matrix.s3.eu-west-3.amazonaws.com/coverage.html?${queryParams.toString()}`;
  const openUrl = currentIframeUrl || iframeUrl;
  const toggleFullscreen = () => {
    if (!document.fullscreenElement) {
      iframeRef.current?.requestFullscreen();
    } else {
      document.exitFullscreen();
    }
  };
  const isDark = theme === 'dark';
  const buttonStyle = {
    display: 'inline-flex',
    alignItems: 'center',
    gap: '8px',
    padding: '4px 12px',
    fontSize: '14px',
    fontWeight: '500',
    color: isDark ? '#d4d4d4' : '#374151',
    backgroundColor: 'transparent',
    border: `1px solid ${isDark ? '#404040' : '#e5e7eb'}`,
    borderRadius: '12px',
    cursor: 'pointer',
    textDecoration: 'none',
    transition: 'all 0.15s ease'
  };
  const hoverBg = isDark ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.03)';
  const hoverBorder = isDark ? '#525252' : '#d1d5db';
  const defaultBg = 'transparent';
  const defaultBorder = isDark ? '#404040' : '#e5e7eb';
  return <>
  <div style={{
    display: 'flex',
    justifyContent: 'flex-end',
    gap: '12px',
    marginBottom: '8px'
  }}>
    <button onClick={toggleFullscreen} style={buttonStyle} onMouseEnter={e => {
    e.target.style.backgroundColor = hoverBg;
    e.target.style.borderColor = hoverBorder;
  }} onMouseLeave={e => {
    e.target.style.backgroundColor = defaultBg;
    e.target.style.borderColor = defaultBorder;
  }}>
      <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
        {isFullscreen ? <>
            <polyline points="4 14 10 14 10 20"></polyline>
            <polyline points="20 10 14 10 14 4"></polyline>
            <line x1="14" y1="10" x2="21" y2="3"></line>
            <line x1="3" y1="21" x2="10" y2="14"></line>
          </> : <>
            <polyline points="15 3 21 3 21 9"></polyline>
            <polyline points="9 21 3 21 3 15"></polyline>
            <line x1="21" y1="3" x2="14" y2="10"></line>
            <line x1="3" y1="21" x2="10" y2="14"></line>
          </>}
      </svg>
      {isFullscreen ? 'Exit Fullscreen' : 'Fullscreen'}
    </button>
    <a href={iframeUrl} target="_blank" rel="noopener noreferrer" style={buttonStyle} onMouseEnter={e => {
    e.target.style.backgroundColor = hoverBg;
    e.target.style.borderColor = hoverBorder;
  }} onMouseLeave={e => {
    e.target.style.backgroundColor = defaultBg;
    e.target.style.borderColor = defaultBorder;
  }}>
      <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
        <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path>
        <polyline points="15 3 21 3 21 9"></polyline>
        <line x1="10" y1="14" x2="21" y2="3"></line>
      </svg>
      Open in new tab
    </a>
  </div>
  <iframe ref={iframeRef} src={iframeUrl} title={`Chift Coverage Matrix - ${api}`} style={{
    height: 'max(500px, 80vh)'
  }} className="w-full" allowFullScreen />
  <blockquote>
    <p>
      <strong>Matrix Legend 🧭</strong>
    </p>
    <table>
      <thead>
        <tr>
          <th>Status</th>
          <th>Meaning</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>✅ Implemented</td>
          <td>Endpoint is implemented and available.</td>
        </tr>
        <tr>
          <td>❌ Not supported</td>
          <td>
            Endpoint is not supported by the target software (connector
            limitation). Cannot be implemented.
          </td>
        </tr>
        <tr>
          <td>💬 On request</td>
          <td>
            Endpoint is not implemented but feasibility is validated. Can be
            implemented on request — contact your Chift point of contact to
            discuss scope and timing.
          </td>
        </tr>
        <tr>
          <td>🔎 To be analyzed</td>
          <td>
            Endpoint is not implemented and feasibility has not yet been fully
            assessed. Analysis is pending.
          </td>
        </tr>
      </tbody>
    </table>
  </blockquote>
</>;
};

<ConnectorCardIframe api="accounting" connectors="ACD" />

<Accordion title="Overview Legend 🧭">
  <OverviewLegend showTitle={false} />
</Accordion>

## Introduction

ACD supports the digitalization of your business through a modular software suite. Integrating a complete range of production and management, coupled with many specialized modules, web and mobile. Deliver the ACD integration your customers want in no time.

## Configure ACD

**Prerequisite(s)**
There is no prerequisite to enable ACD on your Chift APP.

**Activation Process**
Activate the ACD integration on the Chift platform.

## Test ACD

To test the software integration, ask Chift to contact and request ACD for a sandbox account and test file (French speaking contacts) on your behalf.
ACD will provide us with an account ID, password and file code for dummy data.
Use this link to log onto your account: [here](https://isuiteapiprod.suiteexpert.fr/cnx/iSuiteExpert/Connection)

## Connect ACD

To activate a connection with ACD, users will have to go through the following steps.

* French article: [Help Center - ACD FR](https://help.chift.app/articles/9297801393-acd?lang=fr)

* English article: [Help Center - ACD EN](https://help.chift.app/articles/9297801393-acd?lang=en)

## Coverage

<CoverageIframe api="accounting" connectors="ACD" />

## Troubleshooting

<Warning>
  User must check that "Compta web" is available on iSuite and if not: contact ACD.
</Warning>

### Specific errors for ACD:

| Error Code                                       | Error description                                                                                                | Resolution                                                                                                |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| ERROR\_CURRENCY\_NOT\_ALLOWED                    | Invoices can only be created in Euros in ACD                                                                     | Please change currency or convert before submitting to ACD                                                |
| ERROR\_ACCOUNT\_NUMBER\_NOT\_NOT\_GOOD\_SCOPE    | The account 'XXXXXX' cannot be used to create entries.                                                           | Please change account number in the invoice line with a product/charge ledger account                     |
| UNEXPECTED\_ACD\_ERROR                           | Plan de classement inaccessible                                                                                  | User connected through Chift does not have access to the GED in order to upload invoice proof.            |
| UNEXPECTED\_ACD\_ERROR                           | Le serveur MySQL est momentanément injoignable                                                                   | User must contact ACD's support ; it may be due to an ongoing backup.                                     |
| UNEXPECTED\_ACD\_ERROR                           | Le nom du serveur SQL est invalide                                                                               | Connection reference (CNX) is not valid.                                                                  |
| UNEXPECTED\_ACD\_ERROR                           | La connection à la base du dossier n'est pas initialisée                                                         | ACD's folder is not shared ; user must activate sharing options.                                          |
| UNEXPECTED\_ACD\_ERROR                           | Le serveur n'est pas accessible                                                                                  | User needs to check that there is no security restriction to a specific area/IP.                          |
| UNEXPECTED\_ACD\_ERROR                           | Impossible de se connecter aux communs de la comptabilité                                                        | ACD's outdated, customer has to update ACD to version 23 (at least) and also check sharing options.       |
| UNEXPECTED\_ACD\_ERROR                           | Object reference not set to an instance of an object                                                             | ACD's outdated, customer has to update ACD to version 23 (at least) and also check sharing options.       |
| UNEXPECTED\_ACD\_ERROR                           | Echéance ne peut pas être négative                                                                               | ACD's outdated, customer has to update ACD to version 23 (at least) and also check sharing options.       |
| UNEXPECTED\_ACD\_ERROR                           | Une ligne d'échéance doit avoir un montant                                                                       | Invoice with no lines cannot be pushed to ACD. No solution - Blocked on ACD side => Contact Chift support |
| UNEXPECTED\_ACD\_ERROR                           | Unknown column ‘LE\_FACTURE’                                                                                     | User has to open the folder in the ACD interface, this should solve the issue.                            |
| UNEXPECTED\_ACD\_ERROR                           | Le code de TVA doit être saisie sur une ligne d'écriture avec un compte hors taxe                                | Change the ledger account to be used in the invoice/expense                                               |
| ERROR\_ACCOUNT\_NUMBER\_LENGTH                   | The provided account number has more characters than allowed.                                                    | Shorten the account number to fit within the allowed character limit.                                     |
| ERROR\_ACCOUNT\_NUMBER\_NOT\_GOOD\_SCOPE         | Collective general accounts cannot be used to book journal entries. You need to use thirdparty accounts instead. | Use a thirdparty account instead of a collective general account.                                         |
| ERROR\_ACD\_GED\_ACCESS                          | The user doesn't have access to the GED folder in ACD.                                                           | Grant the user access to the GED folder in ACD.                                                           |
| ERROR\_ANALYTIC\_ACCOUNT\_NOT\_CONFIGURED        | The general account must be configured correctly to be used with analytic accounts.                              | Configure the general account to be compatible with analytic accounts in ACD.                             |
| ERROR\_INVALID\_ANALYTIC\_DISTRIBUTION           | Invalid analytic distribution for hierarchised analytic accounting setup.                                        | Ensure the analytic accounts of lower levels are linked to the analytic accounts of higher levels.        |
| ERROR\_INVALID\_FIELD\_FORMAT\_INVOICE\_NUMBER   | The invoice number has a maximal length of 16 characters in ACD.                                                 | Shorten the invoice number to 16 characters or fewer.                                                     |
| ERROR\_INVALID\_FIELD\_FORMAT\_NUMBER            | The journal entry number has a maximal length of 16 characters in ACD.                                           | Shorten the journal entry number to 16 characters or fewer.                                               |
| ERROR\_INVALID\_FIELD\_FORMAT\_OPERATION\_NUMBER | The operation number has a maximal length of 16 characters in ACD.                                               | Shorten the operation number to 16 characters or fewer.                                                   |
| ERROR\_MISSING\_NUMBER                           | The journal entry number is mandatory in ACD.                                                                    | Provide a journal entry number.                                                                           |
| ERROR\_MISSING\_INVOICE\_NUMBER                  | An invoice number is required when creating an invoice in ACD.                                                   | Provide an invoice number.                                                                                |
| ERROR\_ISUITEEXPERT\_VERSION                     | Version 23 of ISuite Expert is required.                                                                         | Update ISuite Expert to at least version 23.                                                              |
| ERROR\_JOURNAL\_NOT\_CONFIGURED                  | The journal is not configured to handle due dates.                                                               | Enable due dates on the journal in ACD.                                                                   |
| ERROR\_MISSING\_OPERATION\_NUMBER                | The operation number is mandatory in ACD.                                                                        | Provide an operation number.                                                                              |
| ERROR\_TAX\_CODE\_NOT\_CONFIGURED                | The tax code is not configured correctly for deducting VAT ledger accounts.                                      | Set up the deductible account on the tax code in the accounting system.                                   |
| ERROR\_CONNECTOR\_CONFIGURATION                  | Multiple prerequisites are needed for ACD integration to work (e.g., folder must be shared).                     | Ensure the ACD folder is properly shared and all integration prerequisites are met.                       |
