01 Démarrage
Toutes les routes sont servies en HTTPS sous l’adresse de base suivante :
https://api.ponteo.ca/v1Pour appeler l’API, il vous faut :
- une clé de licence Ponteo Connect (format
PTEO1-…), liée à une compagnie précise, obtenue avec un forfait Essentiel ou Illimité ; - l’agent Ponteo Connect installé sur le serveur où tourne Acomba ou Avantage, configuré avec cette clé et en écoute.
Vérifiez ensuite que la chaîne complète répond, en ligne de commande ou directement dans le playground :
export PONTEO_KEY="PTEO1-VOTRE-CLE"
curl https://api.ponteo.ca/v1/health -H "Authorization: Bearer $PONTEO_KEY"Les requêtes et réponses sont en JSON encodé en UTF-8. Envoyez Content-Type: application/json avec tout corps de requête. Les dates suivent le format AAAA-MM-JJ et les montants sont des nombres décimaux à deux décimales au plus.
Développez sans risque. Commencez avec la clé de démo (données générées, aucune écriture), validez vos écritures en mode simulation, puis testez sur une copie de votre compagnie reliée à l’agent avant de passer en production.
Clé de démo publique
Pour essayer l’API tout de suite, sans licence ni agent, utilisez la clé de démo :
curl "https://api.ponteo.ca/v1/customers?limit=5" \
-H "Authorization: Bearer PTEO1-DEMOPONTEOPLAYGROUND234567-QEX5"Elle renvoie des données générées et n’écrit jamais rien : les réponses portent l’en-tête X-Ponteo-Demo: true.
Les valeurs des exemples de cette page sont fictives et données à titre indicatif.
02 Authentification
Chaque appel porte la clé de licence dans l’en-tête Authorization, selon le schéma Bearer :
Authorization: Bearer PTEO1-VOTRE-CLELa clé désigne à la fois l’appelant autorisé et la compagnie visée : une licence correspond à une compagnie. Pour interroger plusieurs compagnies, utilisez la clé de chacune.
La licence est validée à chaque appel. Une clé absente, inconnue, révoquée, suspendue ou expirée produit LICENSE_INVALID (HTTP 401). Selon la configuration de la licence, deux protections supplémentaires peuvent s’appliquer : la restriction d’adresse IP (FORBIDDEN) et la signature HMAC des requêtes (SIGNATURE_INVALID).
Traitez la clé comme un mot de passe. Quiconque la détient peut appeler l’API de la compagnie. Ne l’intégrez jamais dans du code exécuté par un navigateur ou une application mobile ; conservez-la côté serveur.
03 Enveloppe et en-têtes
Toutes les réponses partagent la même enveloppe. Le champ ok indique le succès ; requestId (un UUID) identifie l’appel de façon unique et figure aussi dans l’en-tête X-Request-Id, présent sur toutes les réponses. Communiquez-le au support en cas de besoin.
{
"ok": true,
"data": { },
"requestId": "3f6c2a1e-8b7d-4c5e-9a0f-1b2c3d4e5f60"
}{
"ok": false,
"error": {
"code": "BAD_REQUEST",
"message": "Facture invalide : date est requise au format AAAA-MM-JJ.",
"details": [
"date est requise au format AAAA-MM-JJ."
]
},
"requestId": "9c1d7e3a-2b4f-4a6c-8d0e-5f7a9b1c3d25"
}Selon l’erreur, error peut porter des champs supplémentaires : details (liste des problèmes de validation), sdkCode (code d’origine du logiciel comptable, pour SDK_ERROR) ou lastSeen (dernière connexion de l’agent, pour AGENT_UNAVAILABLE). Fiez-vous au code normalisé pour votre logique, et au statut HTTP pour le traitement générique.
En-têtes de réponse
| En-tête | Présence | Description |
|---|---|---|
X-Request-Id | Toujours | Identifiant unique de l’appel, identique à requestId. |
Retry-After | THROTTLED, REQUEST_IN_PROGRESS | Délai en secondes avant de réessayer. |
Allow | METHOD_NOT_ALLOWED | Méthodes permises pour la route demandée. |
X-Ponteo-Demo | Clé de démo | true : données générées, aucune écriture. Voir clé de démo. |
Idempotent-Replayed | Rejeu | true lorsque la réponse est celle d’une écriture déjà traitée. Voir idempotence. |
04 Codes d’erreur
Il n’existe pas de code d’erreur pour une facture déjà présente : c’est un succès (statut already_exists, HTTP 200). Voir création de facture.
| HTTP | Code | Signification | Réessayer ? |
|---|---|---|---|
| 400 | BAD_REQUEST | Paramètres ou corps invalides (champ manquant, format de date, répartition incohérente, etc.). error.details contient la liste des problèmes détectés. | Après correction |
| 401 | LICENSE_INVALID | Clé de licence absente, inconnue, révoquée, suspendue ou expirée. | Non |
| 401 | SIGNATURE_INVALID | Signature HMAC absente alors que la licence l’exige, invalide, ou horodatage hors de la fenêtre de ±300 secondes. | Après correction |
| 403 | FORBIDDEN | Adresse IP non autorisée pour la licence, ou opération non activée sur la licence (suppression, accès ou écritures génériques). | Non |
| 403 | IP_BLOCKED | Adresse IP bloquée, par exemple après plusieurs essais de clés inexistantes. Contactez le support. | Non |
| 403 | WRITE_DISABLED | Écritures non autorisées par la licence, ou désactivées dans l’agent pour cette compagnie (case « Autoriser les écritures »). | Non |
| 404 | NOT_FOUND | Route inconnue, ou fiche demandée introuvable (compte, fournisseur, client, produit, facture). | Non |
| 405 | METHOD_NOT_ALLOWED | La route existe, mais pas avec cette méthode. L’en-tête Allow liste les méthodes permises. | Après correction |
| 409 | REQUEST_IN_PROGRESS | La même écriture est déjà en cours de traitement. Réessayez après le délai de l’en-tête Retry-After (5 s). | Oui, après Retry-After |
| 409 | ALREADY_EXISTS | Une fiche avec ce numéro existe déjà (création de client, fournisseur, produit ou compte). | Non |
| 405 | READ_ONLY | Ces paramètres sont en lecture seule dans le SDK Acomba / Avantage : la modification n’est pas prise en charge. | Non |
| 500 | INTERNAL_ERROR | Erreur inattendue de l’agent ou du serveur. Le requestId permet au support de retrouver l’appel. | Plus tard, délai croissant |
| 409 | DEMO_MODE | La compagnie Acomba est en mode démonstration : l’écriture est refusée. | Non |
| 409 | INVOICE_PAID | Suppression refusée : la facture est payée. | Non |
| 422 | IDEMPOTENCY_CONFLICT | La même Idempotency-Key a déjà servi avec un corps de requête différent. | Après correction |
| 429 | THROTTLED | Débit trop élevé pour la licence. Réessayez après le délai de l’en-tête Retry-After (en secondes). | Oui, après Retry-After |
| 429 | QUOTA_EXCEEDED | Le quota mensuel de la licence est atteint. | Non |
| 502 | COMPANY_NOT_OPEN | L’agent n’a pas pu ouvrir la compagnie. | Plus tard, délai croissant |
| 409 | MODULE_INACTIVE | Le module Acomba / Avantage de cette ressource (projets, paie, point de vente…) n’est pas actif dans la compagnie. | Non |
| 502 | SDK_ERROR | Le logiciel comptable a refusé l’opération. Le code d’origine est fourni dans error.sdkCode, avec son message. | Après correction |
| 503 | AGENT_UNAVAILABLE | Aucun agent connecté pour cette licence. error.lastSeen indique sa dernière connexion. | Plus tard, délai croissant |
| 504 | TIMEOUT | L’agent n’a pas répondu dans le délai imparti. | Plus tard, délai croissant |
Stratégie de nouvelle tentative
THROTTLEDetREQUEST_IN_PROGRESS: attendez le nombre de secondes indiqué parRetry-After, puis réessayez.AGENT_UNAVAILABLE,TIMEOUTetCOMPANY_NOT_OPEN: réessayez plus tard avec un délai croissant. Pour une écriture, renvoyez la mêmeIdempotency-Keyet le même corps.BAD_REQUEST,METHOD_NOT_ALLOWED,SIGNATURE_INVALID,IDEMPOTENCY_CONFLICT,SDK_ERROR: corrigez la requête avant de la renvoyer. Seules les issues réussies sont mémorisées par l’idempotence : une écriture refusée peut être corrigée et renvoyée.LICENSE_INVALID,FORBIDDEN,IP_BLOCKED,WRITE_DISABLED,DEMO_MODE,INVOICE_PAID,QUOTA_EXCEEDED: ne réessayez pas sans changement de configuration.
05 Pagination et synchronisation
Les routes de liste renvoient une page d’éléments dans data.items et un curseur dans data.nextCursor. Pour obtenir la page suivante, repassez ce curseur tel quel dans le paramètre cursor, avec les mêmes filtres. Quand il ne reste rien, nextCursor vaut null.
{
"ok": true,
"data": {
"items": [ … ],
"nextCursor": "50",
"total": 312
},
"requestId": "…"
}| Paramètre ou champ | Description |
|---|---|
limit | Éléments par page. Par défaut 50, maximum 200. |
cursor | Valeur opaque de data.nextCursor reçue à l’appel précédent. N’en interprétez ni n’en construisez le contenu. |
data.total | Facultatif : nombre total de fiches, lorsqu’il est connu. |
data.scanned | Facultatif : nombre de fiches examinées pour produire la page (listes de factures). |
Pages incomplètes
Pour les factures (/v1/invoices/ap et /v1/invoices/ar), chaque appel examine au plus 2 000 fiches. Une page filtrée peut donc revenir avec moins d’éléments que limit, voire aucun, et un nextCursor non nul. Ce n’est pas la fin : continuez tant que nextCursor n’est pas null.
Synchronisation incrémentale
Les routes /v1/customers et /v1/products acceptent modifiedSince (AAAA-MM-JJ ou AAAA-MM-JJTHH:MM:SS, heure locale du serveur comptable) : seules les fiches modifiées depuis cette date sont renvoyées. L’agent parcourt alors toutes les fiches ; suivez nextCursor jusqu’à null. Exemple d’application : la synchronisation de l’inventaire d’une boutique en ligne.
# 1. Notez l'heure de départ de la synchronisation
# 2. Parcourez toutes les pages
curl "https://api.ponteo.ca/v1/products?modifiedSince=2026-09-15T08:00:00&limit=200" \
-H "Authorization: Bearer $PONTEO_KEY"
curl "https://api.ponteo.ca/v1/products?modifiedSince=2026-09-15T08:00:00&limit=200&cursor=200" \
-H "Authorization: Bearer $PONTEO_KEY"
# 3. Quand nextCursor vaut null, conservez l'heure de départ comme prochain modifiedSince06 Débit, quotas et données
Limitation du débit
Chaque licence dispose d’un seau à jetons : par défaut 5 requêtes par seconde, avec des rafales de 20. Au-delà, la réponse est THROTTLED (HTTP 429) avec un en-tête Retry-After.
Quota mensuel
Une licence peut comporter un quota mensuel d’appels (par exemple le forfait Essentiel). Une fois atteint, les appels reçoivent QUOTA_EXCEEDED (HTTP 429) jusqu’au mois suivant. Les refus THROTTLED et QUOTA_EXCEEDED ne sont pas comptés.
Aucune conservation des données
Ponteo Connect ne met rien en cache et ne conserve aucune donnée comptable : chaque lecture est faite en direct dans le logiciel comptable par l’agent, et le contenu des requêtes et des réponses est effacé dès que la réponse vous est livrée. Seules des métadonnées techniques sans contenu (route, statut, durée) sont gardées, pour le comptage des transactions et le soutien. Détails : politique de confidentialité.
07 Routes
Deux familles de routes coexistent : les routes métier, à champs normalisés (comptes, clients, fournisseurs, produits, factures), documentées ci-dessous, et les routes génériques qui exposent chaque ressource du SDK avec ses champs d’origine (voir la référence des ressources).
GET /v1/health
État de la chaîne complète : agent, compagnie ouverte, file d’attente, écritures en suspens et vue du relais. Idéal pour une sonde de surveillance.
curl https://api.ponteo.ca/v1/health \
-H "Authorization: Bearer $PONTEO_KEY"{
"ok": true,
"data": {
"agent": {
"version": "1.0.0",
"platform": "Microsoft Windows 10.0.20348 / .NET Framework 4.8 / x86",
"hostname": "SRV-COMPTA",
"uptimeSeconds": 86412
},
"company": {
"name": "Entreprise Exemple inc.",
"product": "Acomba",
"open": true,
"sdkVersion": "…",
"demoMode": false,
"modules": { "ap": true, "ar": true, "gl": true, "inv": true },
"writeEnabled": true
},
"queueDepth": 0,
"requestsServed": 1284,
"pendingWrites": [],
"relay": {
"agentLastSeen": "2026-09-16 10:41:57",
"agentOnlineSince": "2026-09-15 06:02:11",
"queueDepth": 0
}
},
"requestId": "…"
}pendingWrites liste les écritures commencées mais non confirmées (since, requestId, supplierNumber, invoiceNumber), par exemple après un arrêt brutal du serveur. company.writeEnabled reflète la case « Autoriser les écritures » de l’agent.
GET /v1/company
Compagnie liée à la licence : produit, modules actifs, mode démonstration, écritures permises et nombre de fiches.
{
"ok": true,
"data": {
"name": "Entreprise Exemple inc.",
"product": "Acomba",
"sdkVersion": "…",
"demoMode": false,
"modules": { "ap": true, "ar": true, "gl": true, "inv": true },
"writeEnabled": true,
"counts": { "accounts": 146, "suppliers": 60, "invoicesAP": 400 }
},
"requestId": "…"
}GET /v1/accounts
GET /v1/accounts/{number}
Charte de comptes du grand livre, paginée, ou un compte par son numéro. categoryName vaut Bank, Assets, Liabilities, Capital, Income, Expenses, Allocation ou Quantity.
curl "https://api.ponteo.ca/v1/accounts?limit=2" \
-H "Authorization: Bearer $PONTEO_KEY"{
"ok": true,
"data": {
"items": [
{ "number": 1010, "description": "Encaisse", "category": 1, "categoryName": "Bank", "active": true, "position": 1 },
{ "number": 2110, "description": "Comptes à payer", "category": 3, "categoryName": "Liabilities", "active": true, "position": 2 }
],
"nextCursor": "2"
},
"requestId": "…"
}GET /v1/suppliers
GET /v1/suppliers/{number}
Liste paginée des fournisseurs, ou un fournisseur par son numéro.
{
"ok": true,
"data": {
"number": "1000",
"name": "Fournitures Exemple ltée",
"address": "123, rue Principale",
"city": "Québec",
"province": "QC",
"postalCode": "G1A 1A1",
"country": "CA",
"phone": "418 555-0100",
"email": "comptes@exemple.ca",
"paymentTermNumber": 1,
"purchaseAccountNumber": 5010,
"active": true,
"position": 1
},
"requestId": "…"
}GET /v1/customers
GET /v1/customers/{number}
Clients, paginés et filtrables, ou un client par son numéro. Chaque fiche inclut le solde à recevoir (receivable), le total des achats et la date du dernier achat.
| Paramètre | Description |
|---|---|
cursor, limit | Voir pagination. |
modifiedSince | Fiches modifiées depuis AAAA-MM-JJ ou AAAA-MM-JJTHH:MM:SS. |
active | true ou false. |
curl "https://api.ponteo.ca/v1/customers?modifiedSince=2026-09-01&active=true" \
-H "Authorization: Bearer $PONTEO_KEY"{
"ok": true,
"data": {
"items": [
{
"number": "C2003",
"name": "Distribution Exemple inc.",
"address": "113 rue Principale",
"city": "Lévis",
"province": "QC",
"postalCode": "G6V 1A1",
"country": "CA",
"phone": "418-555-3001",
"email": "compta1@client-exemple.ca",
"active": true,
"termNumber": "30",
"salesRepNumber": "V2",
"receivable": 4210.37,
"totalPurchases": 58140.12,
"lastPurchaseDate": "2026-08-28",
"modifiedAt": "2026-09-02T14:05:51",
"position": 2
}
],
"nextCursor": null
},
"requestId": "…"
}GET /v1/products
GET /v1/products/{number}
Produits de l’inventaire, paginés et filtrables, ou un produit par son numéro, avec prix, coûts, emplacement et état du stock.
| Paramètre | Description |
|---|---|
cursor, limit | Voir pagination. |
modifiedSince | Fiches modifiées depuis AAAA-MM-JJ ou AAAA-MM-JJTHH:MM:SS. |
active | true ou false. |
group | Groupe de produits, par exemple EPI. |
{
"ok": true,
"data": {
"number": "P-10011",
"description": "Gants de nitrile (boîte de 100)",
"active": true,
"unitCode": "UN",
"upc": "062712345678",
"group": "EPI",
"location": "A2-2",
"sellingPrice": 18.95,
"averageCost": 13.07,
"lastCost": 12.88,
"stock": { "onHand": 40, "available": 34, "reserved": 6, "ordered": 100, "reorderPoint": 40 },
"modifiedAt": "2026-09-15T10:42:18",
"position": 2
},
"requestId": "…"
}stock.available correspond à la quantité en main moins la quantité réservée.
POST /v1/{customers|suppliers|products|accounts}
PATCH /v1/{customers|suppliers|products|accounts}/{number}
DELETE /v1/{customers|suppliers|products|accounts}/{number}
Créez, modifiez ou supprimez une fiche de client, de fournisseur, de produit ou de compte. Le corps utilise les champs normalisés (par exemple number, name) ; tout champ du SDK sans équivalent normalisé se passe dans extra, sous son nom d’origine. PATCH ne modifie que les champs envoyés.
{
"number": "C2090",
"name": "Atelier Exemple inc.",
"city": "Québec",
"email": "compta@atelier-exemple.ca",
"extra": { "CuSalesRepNumber": "V2" }
}curl -X PATCH https://api.ponteo.ca/v1/customers/C2090 \
-H "Authorization: Bearer $PONTEO_KEY" \
-H "Content-Type: application/json" \
--data-binary '{ "email": "factures@atelier-exemple.ca" }'Les mêmes conditions d’écriture s’appliquent : écritures permises par la licence et case « Autoriser les écritures » cochée dans l’agent ; la suppression doit en outre être activée sur la licence.
- Une fiche créée par l’API est active par défaut (
"active": falsepour la créer inactive). - Un produit exige
group(numéro d’un groupe de produits existant, voirGET /v1/product-groups). - Champs renvoyés en lecture et modifiables :
phone,faxetemail(clients, fournisseurs) ;sellingPrice(produits : liste de prix 1, niveau 1). - Un numéro déjà utilisé renvoie
ALREADY_EXISTS(409) ; un numéro plus long que ce qu’accepte le logiciel comptable est refusé avecBAD_REQUEST, sans rien créer.
GET /v1/invoices/ar
Factures clients (comptes à recevoir), de la plus récente à la plus ancienne. Même pagination et même limite d’examen que les factures fournisseurs : voir pages incomplètes.
| Paramètre | Description |
|---|---|
cursor, limit | Voir pagination. |
customer | Ne renvoie que les factures de ce numéro de client. |
from, to | Bornes de date de facture, incluses, AAAA-MM-JJ. |
{
"ok": true,
"data": {
"items": [
{
"customerNumber": "C2003",
"invoiceNumber": "70412",
"date": "2026-07-18",
"reference": "CMD-5412",
"description": "Vente Distribution Exemple inc.",
"subTotal": 1250.00,
"total": 1437.19,
"type": 2,
"status": 0,
"paid": false,
"position": 413
}
],
"nextCursor": "412",
"scanned": 88
},
"requestId": "…"
}GET /v1/invoices/ar/{customer}/{number}
Une facture client précise, identifiée par le numéro du client et le numéro de facture, avec sa répartition.
POST /v1/invoices/ar
Crée une facture client. Même structure, mêmes règles, même idempotence et même mode simulation que la facture fournisseur, avec customerNumber au lieu de supplierNumber.
Répartition d’une facture client. Le compte clients (comptes à recevoir) porte le total en négatif ; les comptes de ventes et de taxes portent leurs montants en positif. La somme des postes doit valoir zéro. Pour une note de crédit ("type": "credit"), les signes sont inversés. Les conditions de paiement, le représentant, le territoire et le groupe de taxes sont repris de la fiche du client et d’une facture client existante du même type.
{
"customerNumber": "C2003",
"invoiceNumber": "70413",
"date": "2026-09-16",
"reference": "CMD-5413",
"subTotal": 1250.00,
"total": 1437.19,
"distribution": [
{ "account": 1200, "amount": -1437.19, "description": "Comptes clients" },
{ "account": 4010, "amount": 1250.00, "description": "Ventes" },
{ "account": 2310, "amount": 62.50, "description": "TPS", "isTax": true },
{ "account": 2320, "amount": 124.69, "description": "TVQ", "isTax": true }
]
}POST /v1/customer-payments
Enregistre un encaissement client (paiement reçu) et l’applique à une facture client ouverte. Le corps porte l’en-tête du paiement dans fields et la facture visée dans lines. Mêmes règles d’idempotence et de mode simulation (dryRun) que les factures.
Facture transférée à la comptabilité. On n’encaisse qu’une facture déjà transférée (rapport journalier) et non soldée ; une facture du jour, pas encore transférée, est refusée (SDK_ERROR). Le numéro de paiement est attribué automatiquement. Cette version applique le paiement à une facture par appel.
{
"fields": {
"customerNumber": "C2003",
"date": "2026-10-04",
"paymentType": 1
},
"lines": [
{ "number": "70413", "amount": 250.00, "discount": 0 }
]
}{
"ok": true,
"data": {
"status": "created",
"customer": "C2003",
"paymentNumber": "128",
"invoice": "70413",
"applied": 250.00
},
"requestId": "…"
}Champs de fields : customerNumber (requis), date (AAAA-MM-JJ, défaut aujourd’hui), paymentType (facultatif, défaut 1). Chaque ligne de lines porte number (numéro de facture) et amount ; discount est facultatif. Un paiement partiel est permis ; le montant ne doit pas dépasser le solde de la facture.
POST /v1/supplier-payments
Enregistre un paiement fournisseur (décaissement) et l’applique à une facture fournisseur ouverte. Même structure et mêmes règles que l’encaissement client, avec supplierNumber au lieu de customerNumber. Route en cours de finalisation — disponible prochainement.
{
"fields": {
"supplierNumber": "1000",
"date": "2026-10-04",
"paymentType": 1
},
"lines": [
{ "number": "F-2026-0815", "amount": 303.89, "discount": 0 }
]
}GET /v1/invoices/ap
GET /v1/invoices/ap/{supplier}/{number}
Factures fournisseurs (comptes payables), de la plus récente à la plus ancienne, ou une facture précise avec sa répartition. Chaque appel de liste examine au plus 2 000 fiches : continuez tant que nextCursor n’est pas null.
| Paramètre | Emplacement | Description |
|---|---|---|
cursor, limit | requête | Voir pagination. |
supplier | requête | Ne renvoie que les factures de ce numéro de fournisseur. |
from, to | requête | Bornes de date de facture, incluses, AAAA-MM-JJ. |
supplier, number | chemin | Numéro du fournisseur et numéro de facture, encodés pour l’URL au besoin. |
curl "https://api.ponteo.ca/v1/invoices/ap?supplier=1000&from=2026-09-01&to=2026-09-30" \
-H "Authorization: Bearer $PONTEO_KEY"{
"ok": true,
"data": {
"items": [
{
"supplierNumber": "1000",
"invoiceNumber": "F-2026-0815",
"date": "2026-09-12",
"reference": "BC-4512",
"description": "Achat de fournitures",
"subTotal": 264.31,
"total": 303.89,
"type": 2,
"status": 0,
"paid": false,
"position": 401
}
],
"nextCursor": null,
"scanned": 23
},
"requestId": "…"
}Le détail (GET /v1/invoices/ap/1000/F-2026-0815) ajoute distribution : une liste de postes { line, account, description, amount, isTax, project }.
POST /v1/invoices/ap
Crée une facture fournisseur. L’opération est idempotente et peut être simulée. Vous fournissez des numéros de fournisseur et de comptes ; Ponteo Connect les résout dans le logiciel comptable.
Conditions d’écriture. La licence doit permettre les écritures et la case « Autoriser les écritures » doit être cochée dans l’agent pour la compagnie ; sinon : WRITE_DISABLED (403). Une compagnie Acomba en mode démonstration refuse l’écriture : DEMO_MODE (409).
| Champ | Type | Description |
|---|---|---|
supplierNumber | texte, requis | Numéro d’un fournisseur existant. |
invoiceNumber | texte, requis | Numéro de la facture. Avec le fournisseur, il identifie la facture. |
date | date, requise | Date de la facture, AAAA-MM-JJ. |
total | nombre, requis | Montant total, deux décimales au plus. Doit égaler la somme des montants positifs de la répartition. |
subTotal | nombre | Montant avant taxes. Par défaut : total. |
reference | texte | Référence, par exemple un numéro de bon de commande. |
description | texte | Description de la facture. |
type | entier ou texte | 1 | credit, 2 | invoice (par défaut), 3 | interest, 4 | other. |
distribution | tableau, requis | Au moins deux postes { account, amount, description?, isTax? } : account entier, amount non nul à deux décimales au plus. |
dryRun | booléen | Facultatif : true pour simuler (équivaut à ?dryRun=true). |
Règle de répartition. Le compte fournisseur (comptes à payer) porte le total en positif ; les comptes de dépenses et de taxes portent leurs montants en négatif. La somme des postes doit valoir zéro et total doit égaler la somme des montants positifs, sans quoi la requête est refusée avec BAD_REQUEST. Chaque compte doit exister dans la charte. Pour une note de crédit ("type": "credit"), les signes sont inversés : compte fournisseur en négatif, dépenses et taxes en positif.
curl -X POST https://api.ponteo.ca/v1/invoices/ap \
-H "Authorization: Bearer $PONTEO_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7d1f0c2e-5b8a-4c61-9e0f-3a2b4c5d6e7f" \
--data-binary @facture.json{
"supplierNumber": "1000",
"invoiceNumber": "F-2026-0815",
"date": "2026-09-12",
"type": "invoice",
"reference": "BC-4512",
"description": "Achat de fournitures",
"subTotal": 264.31,
"total": 303.89,
"distribution": [
{ "account": 2110, "amount": 303.89, "description": "Comptes à payer" },
{ "account": 5010, "amount": -264.31, "description": "Achat" },
{ "account": 2330, "amount": -13.22, "description": "TPS", "isTax": true },
{ "account": 2340, "amount": -26.36, "description": "TVQ", "isTax": true }
]
}{
"ok": true,
"data": {
"status": "created",
"invoice": {
"supplierNumber": "1000",
"invoiceNumber": "F-2026-0815",
"date": "2026-09-12",
"reference": "BC-4512",
"description": "Achat de fournitures",
"subTotal": 264.31,
"total": 303.89,
"type": 2,
"status": 0,
"paid": false,
"position": 401,
"distribution": [
{ "line": 1, "account": 2110, "description": "Comptes à payer", "amount": 303.89, "isTax": false, "project": "0" },
{ "line": 2, "account": 5010, "description": "Achat", "amount": -264.31, "isTax": false, "project": "0" },
{ "line": 3, "account": 2330, "description": "TPS", "amount": -13.22, "isTax": true, "project": "0" },
{ "line": 4, "account": 2340, "description": "TVQ", "amount": -26.36, "isTax": true, "project": "0" }
]
}
},
"requestId": "c41f7b2a-6e3d-4b09-a8f5-1d2e3c4b5a60"
}La facture renvoyée est relue dans le logiciel comptable après l’écriture.
{
"ok": true,
"data": {
"status": "already_exists",
"invoice": { "supplierNumber": "1000", "invoiceNumber": "F-2026-0815", … }
},
"requestId": "…"
}Si une facture existe déjà pour ce fournisseur et ce numéro, rien n’est écrit et la réponse est un succès HTTP 200 avec status: "already_exists" et la facture existante. Traitez ce cas comme un succès : la facture est bien dans vos livres.
DELETE /v1/invoices/ap/{supplier}/{number}
Supprime une facture fournisseur, uniquement si la suppression est activée sur la licence (sinon FORBIDDEN, 403). Une facture payée ne peut pas être supprimée : INVOICE_PAID (409).
curl -X DELETE https://api.ponteo.ca/v1/invoices/ap/1000/F-2026-0815 \
-H "Authorization: Bearer $PONTEO_KEY"{
"ok": true,
"data": { "status": "deleted", "supplierNumber": "1000", "invoiceNumber": "F-2026-0815" },
"requestId": "…"
}GET /v1/resources
GET /v1/resources/{slug}
Catalogue des ressources génériques : libellé, domaine, opérations, routes et champs indicatifs. Aucune clé n’est requise.
curl https://api.ponteo.ca/v1/resourcesGET /v1/cards/{object}
GET /v1/cards/{object}/{position}
Route de compatibilité : préférez les routes génériques. Accès en lecture aux objets du SDK, par exemple Customer ou Product036. Cet accès doit être activé sur la licence (sinon FORBIDDEN). Les champs sont renvoyés sous leurs noms d’origine dans le SDK. La pagination est la même que pour les autres listes.
{
"ok": true,
"data": {
"object": "AcoSDK.Customer036",
"items": [
{ "position": 1, "fields": { … } }
],
"nextCursor": "1"
},
"requestId": "…"
}{
"ok": true,
"data": { "object": "AcoSDK.Customer036", "position": 1, "fields": { … } },
"requestId": "…"
}08 Référence complète des ressources
L’API expose 90 ressources du SDK, avec leurs champs d’origine. Trouvez la bonne ressource ci-dessous, puis consultez sa fiche : routes, état de vérification et champs.
Je cherche…
| Donnée ou opération | Où la trouver |
|---|---|
| La charte comptable (plan comptable) | /v1/accounts |
| Une fiche client, son solde à recevoir | /v1/customers |
| Les quantités en inventaire et le prix d’un produit | /v1/products |
| Les factures d’un client, leur détail et leur statut payé | /v1/invoices/ar · /v1/transactions-ar |
| Créer une facture client ou une note de crédit | POST /v1/invoices/ar |
| Les factures fournisseurs et leur répartition | /v1/invoices/ap · /v1/transactions-ap |
| Créer une facture fournisseur | POST /v1/invoices/ap |
| Les paiements reçus des clients | /v1/customer-payments · /v1/customer-payment-lines |
| Les paiements faits aux fournisseurs | /v1/supplier-payments · /v1/supplier-payment-lines |
| Les écritures du grand livre | /v1/gl-entries · /v1/journal-transactions |
| L’historique des mouvements d’inventaire | /v1/product-trails |
| Les groupes de produits, fournisseurs d’un produit, numéros de série | /v1/product-groups · /v1/product-suppliers · /v1/product-serials |
| Les documents du module Facturation (commandes, soumissions) et leurs lignes | /v1/sales-documents · /v1/sales-document-lines |
| Taxes et groupes de taxes | /v1/taxes · /v1/tax-groups |
| Représentants, territoires, escomptes, modes de livraison | /v1/sales-reps · /v1/territories · /v1/discounts · /v1/shipping-methods |
| Conditions de paiement (clients, fournisseurs) | /v1/customer-terms · /v1/supplier-payment-terms |
| Nom, adresse et numéros de taxes de l’entreprise | /v1/company-information |
| Paramètres des modules | /v1/settings-customers · /v1/settings-inventory · /v1/settings-gl |
| Projets et soldes de projets | /v1/projects · /v1/project-balances |
| Employés, paie, feuilles de temps | /v1/employees · /v1/payroll-transactions · /v1/timesheets |
| Contacts et appels du CRM | /v1/addresses · /v1/calls |
| L’état de l’agent et les modules actifs de la compagnie | /v1/health · /v1/company |
États vérifiés sur une compagnie Acomba réelle. « Aucune fiche » ou « Module requis » : la route est disponible, mais n’a pas pu être vérifiée sur des données (module absent ou fiches inexistantes dans la compagnie de vérification). Vérifiez-la sur votre installation avec /schema puis une lecture.
Routes génériques
Chaque ressource propose les routes permises par ses opérations :
| Route | Opération | Description |
|---|---|---|
GET /v1/{slug} | list | Liste paginée (cursor, limit). |
GET /v1/{slug}/{id} | get | Une fiche par sa position. Avec ?by=number, {id} est le numéro de la fiche, pour les ressources qui en ont un. |
POST /v1/{slug} | create | Crée une fiche : { "fields": { … } }, plus "lines" pour les transactions. |
PATCH /v1/{slug}/{id} | update | Modifie les champs envoyés : { "fields": { … } }. |
DELETE /v1/{slug}/{id} | delete | Supprime la fiche. |
GET · PATCH /v1/{slug} | settings | Ressources de paramètres : lecture et modification, sans identifiant. Certains paramètres sont en lecture seule dans le SDK (READ_ONLY) ; ceux d’un module non installé renvoient MODULE_INACTIVE. |
GET /v1/{slug}/schema | toutes | Liste exacte des champs, lue dans le SDK de votre installation. |
{
"fields": { "ChampSDK": "valeur", "AutreChamp": 12 },
"lines": [
{ "ChampLigne": "valeur" }
]
}- Propriétés indexées :
"Nom[index]", par exemple"CuPhoneNumber[2]"(télécopieur) ou"PrSellingPrice[1,2]"(liste 1, niveau 2)./schemaindique"indexed": true. - Clés primaires : à la création, chaque champ fourni qui a une clé primaire du même nom (
PKey_<champ>) la renseigne automatiquement ; une clé au nom différent peut être passée telle quelle dansfields(ex."PKey_InCustomerCP"). - Transactions : les postes (lignes) se lisent par les routes métier
GET /v1/invoices/ap|ar/{tiers}/{numéro}(distribution) ;GET /v1/{slug}/{id}renvoie l’en-tête. - Les fiches supprimées ne sont jamais renvoyées ; une position vide ou supprimée répond
NOT_FOUND.
Droits. L’accès générique, les écritures génériques et les suppressions génériques s’activent par licence (sinon FORBIDDEN). Pour écrire, la case « Autoriser les écritures » doit aussi être cochée dans l’agent. Les noms de champs sont ceux du SDK : vérifiez-les avec /schema.
Champs indicatifs issus de l'analyse statique d'AcoSDK ; la liste exacte d'une installation est donnée par GET /v1/{slug}/schema. Pour accounts, customers, suppliers et products, les routes de liste, de fiche et d’écriture sont les routes métier à champs normalisés ; /schema reste disponible.
Grand livre 8
Charte de comptes /v1/accounts
Charte de comptes (plan comptable) : numéro, description, catégorie, actif.
| GET | /v1/accounts | Liste paginée, champs normalisés. Détails |
| GET | /v1/accounts/{number} | Fiche par son numéro, champs normalisés. Détails |
| POST | /v1/accounts | Créer une fiche (champs normalisés). Détails |
| PATCH | /v1/accounts/{number} | Modifier les champs envoyés. Détails |
| DELETE | /v1/accounts/{number} | Supprimer la fiche. Détails |
| GET | /v1/accounts/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Écritures de grand livre /v1/gl-entries
Écritures de grand livre (en-têtes des transactions du journal général).
| GET | /v1/gl-entries | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/gl-entries/{position} | Une fiche par sa position. |
| POST | /v1/gl-entries | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/gl-entries/{position} | Modifier les champs envoyés. |
| DELETE | /v1/gl-entries/{position} | Supprimer la fiche. |
| GET | /v1/gl-entries/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (13) — la liste exacte vient de /schema
JoAmountnumberJoBankCPintegerJoBankNumberstringJoCurrentSessionstringJoDatedateJoDescriptionstringJoFlagsstringJoPeriodstringJoStatusstringJoTimeModifieddateJoTransactionNumberstringJoTypestringJoUniqueinteger
Transactions de journal /v1/journal-transactions
Transactions du journal, tous modules confondus.
| GET | /v1/journal-transactions | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/journal-transactions/{position} | Une fiche par sa position. |
| POST | /v1/journal-transactions | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/journal-transactions/{position} | Modifier les champs envoyés. |
| DELETE | /v1/journal-transactions/{position} | Supprimer la fiche. |
| GET | /v1/journal-transactions/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (13) — la liste exacte vient de /schema
JoAmountnumberJoBankCPintegerJoBankNumberstringJoCurrentSessionstringJoDatedateJoDescriptionstringJoFlagsstringJoPeriodstringJoStatusstringJoTimeModifieddateJoTransactionNumberstringJoTypestringJoUniqueinteger
Lots de transactions /v1/transaction-batches
Lots de transactions.
| GET | /v1/transaction-batches | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/transaction-batches/{position} | Une fiche par sa position. |
| POST | /v1/transaction-batches | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/transaction-batches/{position} | Modifier les champs envoyés. |
| DELETE | /v1/transaction-batches/{position} | Supprimer la fiche. |
| GET | /v1/transaction-batches/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Lots récurrents /v1/batches
Lots.
| GET | /v1/batches | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/batches/{position} | Une fiche par sa position. |
| GET | /v1/batches/{numéro}?by=number | Une fiche par son numéro (BaNumber). |
| POST | /v1/batches | Créer : { "fields": { … } }. |
| PATCH | /v1/batches/{position} | Modifier les champs envoyés. |
| DELETE | /v1/batches/{position} | Supprimer la fiche. |
| GET | /v1/batches/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (11) — la liste exacte vient de /schema
BaDateTransfereddateBaDayOfTheMonthstringBaDescriptionstringBaFrequencystringBaNumberstringBaOtherFrequencystringBaRepetitivestringBaStatusstringBaTimeModifieddateBaUniqueintegerBaUsedboolean
Journaux de lots /v1/batch-journals
Journaux de lots.
| GET | /v1/batch-journals | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/batch-journals/{position} | Une fiche par sa position. |
| GET | /v1/batch-journals/{numéro}?by=number | Une fiche par son numéro (BJNumber). |
| POST | /v1/batch-journals | Créer : { "fields": { … } }. |
| PATCH | /v1/batch-journals/{position} | Modifier les champs envoyés. |
| DELETE | /v1/batch-journals/{position} | Supprimer la fiche. |
| GET | /v1/batch-journals/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (15) — la liste exacte vient de /schema
BJAmountnumberBJBankCPintegerBJBankNumberstringBJBatchCPintegerBJBatchNumberstringBJCheckCPintegerBJDatedateBJDescriptionstringBJNumberstringBJReferencestringBJStatusstringBJTimeModifieddateBJTypestringBJUniqueintegerBJVoidstring
Chèques du grand livre /v1/checks-gl
Chèques émis par le grand livre.
| GET | /v1/checks-gl | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/checks-gl/{position} | Une fiche par sa position. |
| POST | /v1/checks-gl | Créer : { "fields": { … } }. |
| PATCH | /v1/checks-gl/{position} | Modifier les champs envoyés. |
| DELETE | /v1/checks-gl/{position} | Supprimer la fiche. |
| GET | /v1/checks-gl/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Financements /v1/finances
Paramètres financiers : périodes et dates de l’exercice.
| GET | /v1/finances | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/finances/{position} | Une fiche par sa position. |
| GET | /v1/finances/{numéro}?by=number | Une fiche par son numéro (FiNumber). |
| POST | /v1/finances | Créer : { "fields": { … } }. |
| PATCH | /v1/finances/{position} | Modifier les champs envoyés. |
| DELETE | /v1/finances/{position} | Supprimer la fiche. |
| GET | /v1/finances/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (16) — la liste exacte vient de /schema
FiBimonthlyDatedateFiCountrystringFiDescriptionstringFiFinalAmountnumberFiInitialAmountnumberFiInterestPeriodicitystringFiInterestRatenumberFiNumberstringFiNumberOfPeriodsstringFiPeriodicAmountnumberFiPeriodicitystringFiStartDatedateFiStatusstringFiTimeModifieddateFiTypestringFiUniqueinteger
États financiers 3
Bilan /v1/balance-sheet
Définition (mise en page) du bilan, pas les montants calculés.
| GET | /v1/balance-sheet | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/balance-sheet/{position} | Une fiche par sa position. |
| GET | /v1/balance-sheet/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
État des résultats /v1/income-statement
Définition (mise en page) de l’état des résultats, pas les montants calculés.
| GET | /v1/income-statement | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/income-statement/{position} | Une fiche par sa position. |
| GET | /v1/income-statement/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Ratios financiers /v1/ratios
Ratios financiers définis.
| GET | /v1/ratios | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/ratios/{position} | Une fiche par sa position. |
| GET | /v1/ratios/{numéro}?by=number | Une fiche par son numéro (RaNumber). |
| POST | /v1/ratios | Créer : { "fields": { … } }. |
| PATCH | /v1/ratios/{position} | Modifier les champs envoyés. |
| DELETE | /v1/ratios/{position} | Supprimer la fiche. |
| GET | /v1/ratios/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (10) — la liste exacte vient de /schema
RaAveragestringRaCommentsstringRaDescriptionstringRaNumberstringRaRatiostringRaStatusstringRaTimeModifieddateRaTitlestringRaUniqueintegerRaUnitsstring
Clients 10
Clients /v1/customers
Fiches clients : coordonnées, solde à recevoir, achats. Routes métier à champs normalisés.
| GET | /v1/customers | Liste paginée, champs normalisés. Détails |
| GET | /v1/customers/{number} | Fiche par son numéro, champs normalisés. Détails |
| POST | /v1/customers | Créer une fiche (champs normalisés). Détails |
| PATCH | /v1/customers/{number} | Modifier les champs envoyés. Détails |
| DELETE | /v1/customers/{number} | Supprimer la fiche. Détails |
| GET | /v1/customers/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Termes de paiement clients /v1/customer-terms
Conditions de paiement des clients (net 30, etc.).
| GET | /v1/customer-terms | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/customer-terms/{position} | Une fiche par sa position. |
| GET | /v1/customer-terms/{numéro}?by=number | Une fiche par son numéro (CTNumber). |
| POST | /v1/customer-terms | Créer : { "fields": { … } }. |
| PATCH | /v1/customer-terms/{position} | Modifier les champs envoyés. |
| DELETE | /v1/customer-terms/{position} | Supprimer la fiche. |
| GET | /v1/customer-terms/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (18) — la liste exacte vient de /schema
CTDaysBetweenPaymentsstringCTDescriptionstringCTDueDaysintegerCTEqualPaymentsstringCTFirstPaymentstringCTNumberstringCTNumberOfDaysintegerCTNumberOfPaymentsstringCTNumberOfSchedulesstringCTPercentnumberCTPeriodicitystringCTScheduleDatedateCTSchedulePercentnumberCTStatusstringCTTimeModifieddateCTTypestringCTUniqueintegerCTUsedboolean
Encaissements clients /v1/customer-payments
Paiements reçus des clients (encaissements).
| GET | /v1/customer-payments | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/customer-payments/{position} | Une fiche par sa position. |
| POST | /v1/customer-payments | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/customer-payments/{position} | Modifier les champs envoyés. |
| DELETE | /v1/customer-payments/{position} | Supprimer la fiche. |
| GET | /v1/customer-payments/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (45) — la liste exacte vient de /schema
CPAmountnumberCPAmountToPaystringCPArchivedbooleanCPBankAccountNumberstringCPBranchNumberstringCPCashierCPintegerCPCurrentDaystringCPCustomerCPintegerCPCustomerNumberstringCPDiscountstringCPFromInvoicingstringCPInstitutionNumberstringCPInvoiceARCPintegerCPInvoiceARUniqueintegerCPInvoiceNumberstringCPMultiplePaymentstringCPNoticeDatedateCPOnHoldstringCPOverpaymentAmountnumberCPPaymentCPintegerCPPaymentDatedateCPPaymentModestringCPPaymentNumberstringCPPaymentTypestringCPPaymentUniqueintegerCPReceivablenumberCPReceivedAmountnumberCPReferencestringCPRefundstringCPRefundAmountnumberCPRefundModestringCPRoundingCashstringCPStatementDatedateCPStatusstringCPTempAmountnumberCPTempDiscountstringCPTimeModifieddateCPTotalCreditstringCPTotalDepositstringCPTotalDiscountstringCPTotalOverpaymentstringCPTotalPenaltystringCPTransactionTypestringCPTransphereIdstringCPUniqueinteger
Lignes d'encaissement /v1/customer-payment-lines
Lignes des paiements clients (factures réglées).
| GET | /v1/customer-payment-lines | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/customer-payment-lines/{position} | Une fiche par sa position. |
| POST | /v1/customer-payment-lines | Créer : { "fields": { … } }. |
| PATCH | /v1/customer-payment-lines/{position} | Modifier les champs envoyés. |
| DELETE | /v1/customer-payment-lines/{position} | Supprimer la fiche. |
| GET | /v1/customer-payment-lines/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Factures clients (vue) /v1/invoices-ar
Vue en lecture des factures clients, champs d’origine du SDK.
| GET | /v1/invoices-ar | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/invoices-ar/{position} | Une fiche par sa position. |
| GET | /v1/invoices-ar/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (60) — la liste exacte vient de /schema
InActivebooleanInAddressstringInAllPaidbooleanInAmountnumberInArchivedbooleanInAssociatedBidstringInAssociatedOrderstringInCareOfstringInCashProvidedstringInCashierCPintegerInChangeReturnedstringInCitystringInCompanyAddressstringInCompanyCareOfstringInCompanyCitystringInCompanyCountrystringInCompanyEmailstringInCompanyNamestringInCompanyPhoneExtentionstringInCompanyPhoneNumberstringInCompanyPostalCodestringInCompanyWWWstringInCurrentDaystringInCustomerCPintegerInCustomerIntereststringInCustomerLanguagestringInCustomerNumberstringInCustomerSupplierCPintegerInCustomerSupplierNumberstringInDatedateInDateMaxdateInDateStatementdateInDaysBetweenPaymentsstringInDepositIsPresentbooleanInDepositPaymentModestringInDescriptionstringInDueDaysintegerInEqualPaymentsstringInExcludeInvoicingPaymentstringInFirstPaymentstringInHoldbackAmountnumberInHoldbackCPintegerInHoldbackDatedateInHoldbackNumberstringInHoldbackPercentnumberInHoldbackTypestringInISOCountryCodestringInInvoiceNumberstringInInvoiceSubTotalnumberInInvoiceTotalnumberInInvoiceTotalCostnumberInInvoiceTypestringInInvoicedToCPintegerInInvoicedToNumberstringInInvoicingCPintegerInInvoicingNumberstringInInvoicingNumberPrefixstringInIsInvoicePrintedbooleanInIsPrintedbooleanInKeepTaxGroupstring
Transactions comptes clients /v1/transactions-ar
Transactions clients (objet d’écriture des factures clients), en-tête.
| GET | /v1/transactions-ar | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/transactions-ar/{position} | Une fiche par sa position. |
| POST | /v1/transactions-ar | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/transactions-ar/{position} | Modifier les champs envoyés. |
| DELETE | /v1/transactions-ar/{position} | Supprimer la fiche. |
| GET | /v1/transactions-ar/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (60) — la liste exacte vient de /schema
InActivebooleanInAddressstringInAllPaidbooleanInAmountnumberInArchivedbooleanInAssociatedBidstringInAssociatedOrderstringInCareOfstringInCashProvidedstringInCashierCPintegerInChangeReturnedstringInCitystringInCompanyAddressstringInCompanyCareOfstringInCompanyCitystringInCompanyCountrystringInCompanyEmailstringInCompanyNamestringInCompanyPhoneExtentionstringInCompanyPhoneNumberstringInCompanyPostalCodestringInCompanyWWWstringInCurrentDaystringInCustomerCPintegerInCustomerIntereststringInCustomerLanguagestringInCustomerNumberstringInCustomerSupplierCPintegerInCustomerSupplierNumberstringInDatedateInDateMaxdateInDateStatementdateInDaysBetweenPaymentsstringInDepositIsPresentbooleanInDepositPaymentModestringInDescriptionstringInDueDaysintegerInEqualPaymentsstringInExcludeInvoicingPaymentstringInFirstPaymentstringInHoldbackAmountnumberInHoldbackCPintegerInHoldbackDatedateInHoldbackNumberstringInHoldbackPercentnumberInHoldbackTypestringInISOCountryCodestringInInvoiceNumberstringInInvoiceSubTotalnumberInInvoiceTotalnumberInInvoiceTotalCostnumberInInvoiceTypestringInInvoicedToCPintegerInInvoicedToNumberstringInInvoicingCPintegerInInvoicingNumberstringInInvoicingNumberPrefixstringInIsInvoicePrintedbooleanInIsPrintedbooleanInKeepTaxGroupstring
Représentants /v1/sales-reps
Représentants (vendeurs).
| GET | /v1/sales-reps | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/sales-reps/{position} | Une fiche par sa position. |
| GET | /v1/sales-reps/{numéro}?by=number | Une fiche par son numéro (SRNumber). |
| POST | /v1/sales-reps | Créer : { "fields": { … } }. |
| PATCH | /v1/sales-reps/{position} | Modifier les champs envoyés. |
| DELETE | /v1/sales-reps/{position} | Supprimer la fiche. |
| GET | /v1/sales-reps/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (25) — la liste exacte vient de /schema
SRAddressstringSRAnnualSalesnumberSRCareOfstringSRCitystringSREMailstringSREMailDescriptionstringSRFutureSalesnumberSRISOCountryCodestringSRLanguagestringSRNamestringSRNumberstringSRPastSalesnumberSRPhoneDescriptionstringSRPhoneExtentionstringSRPhoneNumberstringSRPostalCodestringSRProvincestringSRSortKeystringSRStatusstringSRTimeModifieddateSRUniqueintegerSRUsedbooleanSRUserCPintegerSRUserNumberstringSRWebAddressstring
Territoires /v1/territories
Territoires de vente.
| GET | /v1/territories | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/territories/{position} | Une fiche par sa position. |
| GET | /v1/territories/{numéro}?by=number | Une fiche par son numéro (TeNumber). |
| POST | /v1/territories | Créer : { "fields": { … } }. |
| PATCH | /v1/territories/{position} | Modifier les champs envoyés. |
| DELETE | /v1/territories/{position} | Supprimer la fiche. |
| GET | /v1/territories/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (9) — la liste exacte vient de /schema
TeAnnualSalesnumberTeDescriptionstringTeFutureSalesnumberTeNumberstringTePastSalesnumberTeStatusstringTeTimeModifieddateTeUniqueintegerTeUsedboolean
Escomptes /v1/discounts
Escomptes et remises.
| GET | /v1/discounts | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/discounts/{position} | Une fiche par sa position. |
| GET | /v1/discounts/{numéro}?by=number | Une fiche par son numéro (DiNumber). |
| POST | /v1/discounts | Créer : { "fields": { … } }. |
| PATCH | /v1/discounts/{position} | Modifier les champs envoyés. |
| DELETE | /v1/discounts/{position} | Supprimer la fiche. |
| GET | /v1/discounts/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (9) — la liste exacte vient de /schema
DiCostDiscountstringDiDescriptionstringDiNumberstringDiProductGroupDiscountstringDiProductGroupDiscountActivebooleanDiStatusstringDiTimeModifieddateDiUniqueintegerDiUsedboolean
Modes d'expédition /v1/shipping-methods
Modes de livraison (transporteurs).
| GET | /v1/shipping-methods | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/shipping-methods/{position} | Une fiche par sa position. |
| GET | /v1/shipping-methods/{numéro}?by=number | Une fiche par son numéro (ShNumber). |
| POST | /v1/shipping-methods | Créer : { "fields": { … } }. |
| PATCH | /v1/shipping-methods/{position} | Modifier les champs envoyés. |
| DELETE | /v1/shipping-methods/{position} | Supprimer la fiche. |
| GET | /v1/shipping-methods/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (6) — la liste exacte vient de /schema
ShDescriptionstringShNumberstringShStatusstringShTimeModifieddateShUniqueintegerShUsedboolean
Fournisseurs 7
Fournisseurs /v1/suppliers
Fiches fournisseurs. Routes métier à champs normalisés.
| GET | /v1/suppliers | Liste paginée, champs normalisés. Détails |
| GET | /v1/suppliers/{number} | Fiche par son numéro, champs normalisés. Détails |
| POST | /v1/suppliers | Créer une fiche (champs normalisés). Détails |
| PATCH | /v1/suppliers/{number} | Modifier les champs envoyés. Détails |
| DELETE | /v1/suppliers/{number} | Supprimer la fiche. Détails |
| GET | /v1/suppliers/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Factures fournisseurs (vue) /v1/invoices-ap
Vue en lecture des factures fournisseurs, champs d’origine du SDK.
| GET | /v1/invoices-ap | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/invoices-ap/{position} | Une fiche par sa position. |
| GET | /v1/invoices-ap/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (60) — la liste exacte vient de /schema
InActivebooleanInAddressstringInAllPaidbooleanInAmountnumberInArchivedbooleanInAssociatedBidstringInAssociatedOrderstringInCareOfstringInCashProvidedstringInCashierCPintegerInChangeReturnedstringInCitystringInCompanyAddressstringInCompanyCareOfstringInCompanyCitystringInCompanyCountrystringInCompanyEmailstringInCompanyNamestringInCompanyPhoneExtentionstringInCompanyPhoneNumberstringInCompanyPostalCodestringInCompanyWWWstringInCurrentDaystringInCustomerCPintegerInCustomerIntereststringInCustomerLanguagestringInCustomerNumberstringInCustomerSupplierCPintegerInCustomerSupplierNumberstringInDatedateInDateMaxdateInDateStatementdateInDaysBetweenPaymentsstringInDepositIsPresentbooleanInDepositPaymentModestringInDescriptionstringInDueDaysintegerInEqualPaymentsstringInExcludeInvoicingPaymentstringInFirstPaymentstringInHoldbackAmountnumberInHoldbackCPintegerInHoldbackDatedateInHoldbackNumberstringInHoldbackPercentnumberInHoldbackTypestringInISOCountryCodestringInInvoiceNumberstringInInvoiceSubTotalnumberInInvoiceTotalnumberInInvoiceTotalCostnumberInInvoiceTypestringInInvoicedToCPintegerInInvoicedToNumberstringInInvoicingCPintegerInInvoicingNumberstringInInvoicingNumberPrefixstringInIsInvoicePrintedbooleanInIsPrintedbooleanInKeepTaxGroupstring
Transactions comptes fournisseurs /v1/transactions-ap
Transactions fournisseurs (objet d’écriture des factures fournisseurs) ; création générique avec postes vérifiée.
| GET | /v1/transactions-ap | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/transactions-ap/{position} | Une fiche par sa position. |
| POST | /v1/transactions-ap | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/transactions-ap/{position} | Modifier les champs envoyés. |
| DELETE | /v1/transactions-ap/{position} | Supprimer la fiche. |
| GET | /v1/transactions-ap/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (60) — la liste exacte vient de /schema
InActivebooleanInAddressstringInAllPaidbooleanInAmountnumberInArchivedbooleanInAssociatedBidstringInAssociatedOrderstringInCareOfstringInCashProvidedstringInCashierCPintegerInChangeReturnedstringInCitystringInCompanyAddressstringInCompanyCareOfstringInCompanyCitystringInCompanyCountrystringInCompanyEmailstringInCompanyNamestringInCompanyPhoneExtentionstringInCompanyPhoneNumberstringInCompanyPostalCodestringInCompanyWWWstringInCurrentDaystringInCustomerCPintegerInCustomerIntereststringInCustomerLanguagestringInCustomerNumberstringInCustomerSupplierCPintegerInCustomerSupplierNumberstringInDatedateInDateMaxdateInDateStatementdateInDaysBetweenPaymentsstringInDepositIsPresentbooleanInDepositPaymentModestringInDescriptionstringInDueDaysintegerInEqualPaymentsstringInExcludeInvoicingPaymentstringInFirstPaymentstringInHoldbackAmountnumberInHoldbackCPintegerInHoldbackDatedateInHoldbackNumberstringInHoldbackPercentnumberInHoldbackTypestringInISOCountryCodestringInInvoiceNumberstringInInvoiceSubTotalnumberInInvoiceTotalnumberInInvoiceTotalCostnumberInInvoiceTypestringInInvoicedToCPintegerInInvoicedToNumberstringInInvoicingCPintegerInInvoicingNumberstringInInvoicingNumberPrefixstringInIsInvoicePrintedbooleanInIsPrintedbooleanInKeepTaxGroupstring
Paiements fournisseurs /v1/supplier-payments
Paiements faits aux fournisseurs (chèques, virements).
| GET | /v1/supplier-payments | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/supplier-payments/{position} | Une fiche par sa position. |
| POST | /v1/supplier-payments | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/supplier-payments/{position} | Modifier les champs envoyés. |
| DELETE | /v1/supplier-payments/{position} | Supprimer la fiche. |
| GET | /v1/supplier-payments/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (16) — la liste exacte vient de /schema
PLAmountnumberPLAmountTempstringPLDatedatePLDiscountstringPLDiscountTempstringPLFlagsstringPLInvoiceAPCPintegerPLInvoiceAPUniqueintegerPLInvoiceNumberstringPLInvoiceTypestringPLPayablestringPLPaymentAPCPintegerPLPaymentAPUniqueintegerPLStatusstringPLTimeModifieddatePLUniqueinteger
Lignes de paiement fournisseurs /v1/supplier-payment-lines
Lignes des paiements fournisseurs (factures payées).
| GET | /v1/supplier-payment-lines | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/supplier-payment-lines/{position} | Une fiche par sa position. |
| POST | /v1/supplier-payment-lines | Créer : { "fields": { … } }. |
| PATCH | /v1/supplier-payment-lines/{position} | Modifier les champs envoyés. |
| DELETE | /v1/supplier-payment-lines/{position} | Supprimer la fiche. |
| GET | /v1/supplier-payment-lines/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Termes de paiement fournisseurs /v1/supplier-payment-terms
Conditions de paiement des fournisseurs.
| GET | /v1/supplier-payment-terms | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/supplier-payment-terms/{position} | Une fiche par sa position. |
| POST | /v1/supplier-payment-terms | Créer : { "fields": { … } }. |
| PATCH | /v1/supplier-payment-terms/{position} | Modifier les champs envoyés. |
| DELETE | /v1/supplier-payment-terms/{position} | Supprimer la fiche. |
| GET | /v1/supplier-payment-terms/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Comptes à payer /v1/payables
Paramètres des comptes payables.
| GET | /v1/payables | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/payables/{position} | Une fiche par sa position. |
| GET | /v1/payables/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Facturation 2
Factures, commandes et soumissions /v1/sales-documents
Documents du module Facturation (factures, commandes, soumissions) : en-têtes.
| GET | /v1/sales-documents | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/sales-documents/{position} | Une fiche par sa position. |
| POST | /v1/sales-documents | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/sales-documents/{position} | Modifier les champs envoyés. |
| DELETE | /v1/sales-documents/{position} | Supprimer la fiche. |
| GET | /v1/sales-documents/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (60) — la liste exacte vient de /schema
TrAPCHQIdentifierstringTrAPTaxAmountnumberTrAuthorizedstringTrAuthorizerCounsellorCPintegerTrAuthorizerCounsellorNumberstringTrAuthorizerUserCPintegerTrAuthorizerUserNumberstringTrBeginTimedateTrBypassPrintingstringTrCoefficientnumberTrContactPersonNamestringTrCostnumberTrCounsellorCPintegerTrCounsellorCostStatusstringTrCounsellorNamestringTrCounsellorNumberstringTrCounsellorPriceLevelstringTrCustomerCPintegerTrCustomerNumberstringTrDatedateTrEmployeCPintegerTrEmployeNumberstringTrFunctionReferenceNumberstringTrHoldbackInvoicingCPintegerTrHoldbackInvoicingNumberstringTrInvoiceAPWIPCPintegerTrInvoiceAPWIPNumberstringTrInvoiceProjectstringTrInvoiceProjectTotalAmountnumberTrInvoicedPricenumberTrInvoicedQtynumberTrInvoicedTimedateTrInvoicedTotalAmountnumberTrInvoicingCPintegerTrInvoicingLineCPintegerTrInvoicingNumberstringTrLeftoverQtyReportedstringTrMandateCPdateTrMandateNumberdateTrMemostringTrMemoTextstringTrNumberstringTrOverInvoicingstringTrParentNumberstringTrPayLineNumberstringTrPayTransfertNumberstringTrPayableOffsetstringTrPricesOriginstringTrProductCPintegerTrProductGroupCPintegerTrProductGroupNumberstringTrProductNumberstringTrProductPriceTypestringTrProductTrailCPintegerTrProductTypestringTrProjectCPintegerTrProjectNumberstringTrPurchaseCPintegerTrPurchaseNumberstringTrPurchaseReceivableOffsetstring
Lignes de facturation /v1/sales-document-lines
Lignes de produits des documents de facturation.
| GET | /v1/sales-document-lines | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/sales-document-lines/{position} | Une fiche par sa position. |
| POST | /v1/sales-document-lines | Créer : { "fields": { … } }. |
| PATCH | /v1/sales-document-lines/{position} | Modifier les champs envoyés. |
| DELETE | /v1/sales-document-lines/{position} | Supprimer la fiche. |
| GET | /v1/sales-document-lines/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (60) — la liste exacte vient de /schema
ILActualTaxRatenumberILAlreadyInvQtynumberILAlreadyInvoicedstringILArchivedbooleanILBypassPrintingstringILCBOQtynumberILCCalendarYearstringILCChGIFIstringILCCharterstringILCCharterCategstringILCCitystringILCCostnumberILCCountrystringILCCustomerstringILCCustomerNumberstringILCCustomerSortKeystringILCDatedateILCDaystringILCDescriptionstringILCFiscalMonthstringILCHourstringILCInvoiceTypestringILCInvoicedToNumberstringILCLanguagestringILCLocationstringILCLongUnitCodestringILCMonthstringILCPostalCodestringILCProductGroupstringILCProductGroupNostringILCProductNumberstringILCProfitstringILCProjectstringILCProjectNumberstringILCQtynumberILCQuarterstringILCReceivablenumberILCSalesRepstringILCSequencestringILCShipCitystringILCShipCountrystringILCShipPostalCodestringILCShippingNumberstringILCSupplierstringILCTermstringILCTerritorystringILCTotalAmountnumberILCTransactionTypestringILCTypestringILCUPCstringILCUnitCodestringILCUserstringILCYearstringILCharterCPintegerILCharterNumberstringILCostnumberILCustomerSupplierCPintegerILCustomerSupplierNumberstringILDatedateILDepositPresentstring
Inventaire 10
Produits /v1/products
Fiches produits : description, prix, coûts, emplacement, quantités. Routes métier à champs normalisés.
| GET | /v1/products | Liste paginée, champs normalisés. Détails |
| GET | /v1/products/{number} | Fiche par son numéro, champs normalisés. Détails |
| POST | /v1/products | Créer une fiche (champs normalisés). Détails |
| PATCH | /v1/products/{number} | Modifier les champs envoyés. Détails |
| DELETE | /v1/products/{number} | Supprimer la fiche. Détails |
| GET | /v1/products/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Groupes de produits /v1/product-groups
Groupes de produits.
| GET | /v1/product-groups | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/product-groups/{position} | Une fiche par sa position. |
| POST | /v1/product-groups | Créer : { "fields": { … } }. |
| PATCH | /v1/product-groups/{position} | Modifier les champs envoyés. |
| DELETE | /v1/product-groups/{position} | Supprimer la fiche. |
| GET | /v1/product-groups/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Items de produits (entrepôts) /v1/product-items
Articles (variantes) de produits.
| GET | /v1/product-items | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/product-items/{position} | Une fiche par sa position. |
| POST | /v1/product-items | Créer : { "fields": { … } }. |
| PATCH | /v1/product-items/{position} | Modifier les champs envoyés. |
| DELETE | /v1/product-items/{position} | Supprimer la fiche. |
| GET | /v1/product-items/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (29) — la liste exacte vient de /schema
PIActivebooleanPIActualTaxRatenumberPIAvailableQtynumberPIAverageCostnumberPICategorystringPIDefaultPricenumberPIDescriptorstringPIGaleryModifiedstringPIItemCategsCPintegerPILastCostnumberPILocationstringPIMaximumQtynumberPIProductCPintegerPIProductNumberstringPIQtyBiddedstringPIQtyForPricenumberPIQtyOnHandstringPIQtyOrderedstringPIQtyPurchasingstringPIQtyReservedstringPIQuantityPricenumberPIReorderPointstringPISellingPricenumberPIStatusstringPITaxesIncludedbooleanPITimeModifieddatePIUPCstringPIUniqueintegerPIUsedboolean
Fournisseurs de produits /v1/product-suppliers
Fournisseurs d’un produit (numéro de pièce, coût).
| GET | /v1/product-suppliers | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/product-suppliers/{position} | Une fiche par sa position. |
| POST | /v1/product-suppliers | Créer : { "fields": { … } }. |
| PATCH | /v1/product-suppliers/{position} | Modifier les champs envoyés. |
| DELETE | /v1/product-suppliers/{position} | Supprimer la fiche. |
| GET | /v1/product-suppliers/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (48) — la liste exacte vient de /schema
PSBoAllowedbooleanPSCatalogNumberstringPSDelaystringPSDescriptionstringPSDiscountQtynumberPSInvoiceCPintegerPSInvoiceNumberstringPSLongUnitCodestringPSNextCostnumberPSNumberstringPSProductCPintegerPSProductNumberstringPSPurchaseCPintegerPSPurchaseNumberstringPSQtyPurchasingstringPSSerialTypestringPSStatusstringPSSupplierCPintegerPSSupplierNumberstringPSTCashOutCharterCPintegerPSTCashOutCharterNumberstringPSTCashOutCharterUsedbooleanPSTCashOutNumberstringPSTDefaultCustomerCPintegerPSTDefaultCustomerNumberstringPSTDiscountProductCPintegerPSTDiscountProductNumberstringPSTInvoiceDistinctLinestringPSTIsActivebooleanPSTPaidOutNumberbooleanPSTPaidOutTaxGroupCPbooleanPSTPaidOutTaxGroupNumberbooleanPSTPaidOutTypesActivebooleanPSTPaidOutTypesCharterCPbooleanPSTPaidOutTypesCharterNumberbooleanPSTPaidOutTypesCharterUsedbooleanPSTPaidOutTypesDefinedbooleanPSTPaidOutTypesDescriptionbooleanPSTPaidOutTypesTaxExceptionCPbooleanPSTPaidOutTypesTaxExceptionNumberbooleanPSTPaidOutTypesUsedbooleanPSTPrintCashOutSlipstringPSTPrintPaidOutSlipbooleanPSTimeModifieddatePSUPCstringPSUniqueintegerPSUnitCodestringPSUsedboolean
Numéros de série /v1/product-serials
Numéros de série.
| GET | /v1/product-serials | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/product-serials/{position} | Une fiche par sa position. |
| POST | /v1/product-serials | Créer : { "fields": { … } }. |
| PATCH | /v1/product-serials/{position} | Modifier les champs envoyés. |
| DELETE | /v1/product-serials/{position} | Supprimer la fiche. |
| GET | /v1/product-serials/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Mouvements d'inventaire /v1/product-trails
Historique des mouvements d’inventaire (achats, ventes, ajustements).
| GET | /v1/product-trails | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/product-trails/{position} | Une fiche par sa position. |
| GET | /v1/product-trails/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (51) — la liste exacte vient de /schema
PTCalendarYearstringPTCommentstringPTCostnumberPTDatedatePTDaystringPTDaysBetweenPaymentsstringPTDescriptionstringPTDueDaysintegerPTEqualPaymentsstringPTFirstPaymentstringPTFiscalMonthstringPTInvoiceNumberstringPTInvoicingCPintegerPTInvoicingUniqueintegerPTLocationstringPTLongUnitCodestringPTMonthstringPTNumberstringPTNumberOfDaysintegerPTNumberOfPaymentsstringPTNumberOfSchedulesstringPTPercentnumberPTPeriodicitystringPTPriceListstringPTProductCPintegerPTProductGroupstringPTProductGroupNostringPTProductItemCPintegerPTProductItemCategorystringPTProductItemDescriptorstringPTProductNumberstringPTProductSupplierCPintegerPTQuantitystringPTQuantityForSalestringPTQuarterstringPTScheduleDatedatePTSchedulePercentnumberPTSellingPricenumberPTSequencestringPTStatusstringPTSupplierstringPTTimeModifieddatePTTotalCostnumberPTTotalSellingPricenumberPTTraceTypestringPTTypestringPTUPCstringPTUniqueintegerPTUnitCodestringPTUsedbooleanPTYearstring
Composantes (ensembles) /v1/components
Composantes (nomenclature, produits assemblés).
| GET | /v1/components | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/components/{position} | Une fiche par sa position. |
| POST | /v1/components | Créer : { "fields": { … } }. |
| PATCH | /v1/components/{position} | Modifier les champs envoyés. |
| DELETE | /v1/components/{position} | Supprimer la fiche. |
| GET | /v1/components/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (47) — la liste exacte vient de /schema
CoAmountnumberCoCellphoneNumberstringCoChildProductCPintegerCoChildProductNumberstringCoCommentstringCoConfirmationstringCoCostPricenumberCoCurrentDaystringCoDatedateCoEmployeCPintegerCoEmployeNumberstringCoIncludedInPricebooleanCoIsAssociatebooleanCoIsCounsellorbooleanCoLastTransactionNumberstringCoLinkedUserCPintegerCoLinkedUserNumberstringCoMasterProductCPintegerCoMasterProductNumberstringCoMemostringCoMemoTextstringCoNamestringCoNumberstringCoPSTQtyAutostringCoPaidOutCPbooleanCoPaidOutNumberbooleanCoPhoneLengthstringCoPhoneMaskstringCoPriceLevelstringCoPrintItstringCoProductGroupCPintegerCoProductGroupNumberstringCoQuantitystringCoSalaryTypestringCoSelectedstringCoSellingPricenumberCoStatusstringCoTimeModifieddateCoTransactionPrefixstringCoUniqueintegerCoUsedbooleanCoUserCPintegerCoUserNumberstringCoUserUniqueintegerCoWorkHourPerDaystringCoZipLengthstringCoZipMaskstring
Catégories /v1/categories
Catégories.
| GET | /v1/categories | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/categories/{position} | Une fiche par sa position. |
| POST | /v1/categories | Créer : { "fields": { … } }. |
| PATCH | /v1/categories/{position} | Modifier les champs envoyés. |
| DELETE | /v1/categories/{position} | Supprimer la fiche. |
| GET | /v1/categories/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Éléments de catégorie /v1/category-items
Éléments de catégories.
| GET | /v1/category-items | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/category-items/{position} | Une fiche par sa position. |
| POST | /v1/category-items | Créer : { "fields": { … } }. |
| PATCH | /v1/category-items/{position} | Modifier les champs envoyés. |
| DELETE | /v1/category-items/{position} | Supprimer la fiche. |
| GET | /v1/category-items/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Segments /v1/segments
Segments.
| GET | /v1/segments | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/segments/{position} | Une fiche par sa position. |
| POST | /v1/segments | Créer : { "fields": { … } }. |
| PATCH | /v1/segments/{position} | Modifier les champs envoyés. |
| DELETE | /v1/segments/{position} | Supprimer la fiche. |
| GET | /v1/segments/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Taxes 5
Taxes /v1/taxes
Taxes (TPS, TVQ, TVH…).
| GET | /v1/taxes | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/taxes/{position} | Une fiche par sa position. |
| GET | /v1/taxes/{numéro}?by=number | Une fiche par son numéro (TaNumber). |
| POST | /v1/taxes | Créer : { "fields": { … } }. |
| PATCH | /v1/taxes/{position} | Modifier les champs envoyés. |
| DELETE | /v1/taxes/{position} | Supprimer la fiche. |
| GET | /v1/taxes/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (23) — la liste exacte vient de /schema
TaAbbreviationstringTaClaimableTaxesCharterCPintegerTaClaimableTaxesCharterNumberstringTaCollectedTaxesCharterCPintegerTaCollectedTaxesCharterNumberstringTaCompleteTaxRatenumberTaCreditAccountsstringTaDescriptionstringTaNumberstringTaOtherAbbreviationstringTaPurchaseAccountsstringTaSalesAccountsstringTaStatusstringTaTaxCreditstringTaTaxNumberstringTaTaxRatenumberTaTaxRateCreditstringTaTaxRateDescriptionstringTaTaxRateMaximumAmountnumberTaTaxRateMinimumAmountnumberTaTimeModifieddateTaUniqueintegerTaUsedboolean
Groupes de taxes /v1/tax-groups
Groupes de taxes appliqués aux clients et produits.
| GET | /v1/tax-groups | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/tax-groups/{position} | Une fiche par sa position. |
| GET | /v1/tax-groups/{numéro}?by=number | Une fiche par son numéro (TGNumber). |
| POST | /v1/tax-groups | Créer : { "fields": { … } }. |
| PATCH | /v1/tax-groups/{position} | Modifier les champs envoyés. |
| DELETE | /v1/tax-groups/{position} | Supprimer la fiche. |
| GET | /v1/tax-groups/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (18) — la liste exacte vient de /schema
TGCheckGLUsedbooleanTGClaimableTaxesCharterCPintegerTGClaimableTaxesCharterNumberstringTGCollectedTaxesCharterCPintegerTGCollectedTaxesCharterNumberstringTGDefaultTaxRatenumberTGDescriptionstringTGFixedAmountnumberTGNumPostsintegerTGNumberstringTGShortCutstringTGStatusstringTGTaxCPintegerTGTaxNumberstringTGTaxTypestringTGTimeModifieddateTGUniqueintegerTGUsedboolean
Exceptions de taxes /v1/tax-exceptions
Exceptions de taxes.
| GET | /v1/tax-exceptions | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/tax-exceptions/{position} | Une fiche par sa position. |
| POST | /v1/tax-exceptions | Créer : { "fields": { … } }. |
| PATCH | /v1/tax-exceptions/{position} | Modifier les champs envoyés. |
| DELETE | /v1/tax-exceptions/{position} | Supprimer la fiche. |
| GET | /v1/tax-exceptions/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Déboursés /v1/paid-outs
Sorties de caisse (point de vente).
| GET | /v1/paid-outs | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/paid-outs/{position} | Une fiche par sa position. |
| GET | /v1/paid-outs/{numéro}?by=number | Une fiche par son numéro (PoNumber). |
| POST | /v1/paid-outs | Créer : { "fields": { … } }. |
| PATCH | /v1/paid-outs/{position} | Modifier les champs envoyés. |
| DELETE | /v1/paid-outs/{position} | Supprimer la fiche. |
| GET | /v1/paid-outs/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (21) — la liste exacte vient de /schema
PoCashOutCPintegerPoCashOutNumberstringPoCommentstringPoCurrentDaystringPoDatedatePoNumberstringPoReferencestringPoStatusstringPoSubTotalnumberPoTaxAmountnumberPoTaxCPintegerPoTaxCharterCPintegerPoTaxCharterNumberstringPoTaxNumberstringPoTimeModifieddatePoTotalnumberPoTypestringPoUniqueintegerPoUsedbooleanPoUserCPintegerPoUserNumberstring
Sorties de caisse /v1/cash-outs
Fermetures de caisse (point de vente).
| GET | /v1/cash-outs | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/cash-outs/{position} | Une fiche par sa position. |
| POST | /v1/cash-outs | Créer : { "fields": { … } }. |
| PATCH | /v1/cash-outs/{position} | Modifier les champs envoyés. |
| DELETE | /v1/cash-outs/{position} | Supprimer la fiche. |
| GET | /v1/cash-outs/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Projets 11
Projets /v1/projects
Projets.
| GET | /v1/projects | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/projects/{position} | Une fiche par sa position. |
| POST | /v1/projects | Créer : { "fields": { … } }. |
| PATCH | /v1/projects/{position} | Modifier les champs envoyés. |
| DELETE | /v1/projects/{position} | Supprimer la fiche. |
| GET | /v1/projects/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Soldes de projets /v1/project-balances
Soldes des projets.
| GET | /v1/project-balances | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/project-balances/{position} | Une fiche par sa position. |
| GET | /v1/project-balances/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (13) — la liste exacte vient de /schema
PBAmountnumberPBBalancesstringPBBatchJournalCPintegerPBBatchJournalUniqueintegerPBCategorystringPBCharterCPintegerPBCharterNumberstringPBDescriptionstringPBProjectCPintegerPBProjectNumberstringPBStatusstringPBTimeModifieddatePBUniqueinteger
Mandats (travaux en cours) /v1/mandates
Mandats (module Projets).
| GET | /v1/mandates | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/mandates/{position} | Une fiche par sa position. |
| POST | /v1/mandates | Créer : { "fields": { … } }. |
| PATCH | /v1/mandates/{position} | Modifier les champs envoyés. |
| DELETE | /v1/mandates/{position} | Supprimer la fiche. |
| GET | /v1/mandates/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (33) — la liste exacte vient de /schema
MdBondstringMdCCQContractstringMdCSSTReportUseCounsellorstringMdCSSTReportUseProductstringMdClosingDatedateMdCoefficientnumberMdCounsellorAssociateCPintegerMdCounsellorAssociateNumberstringMdCustomerCPintegerMdCustomerInvoicedToCPintegerMdCustomerInvoicedToNumberstringMdCustomerNumberstringMdDeliveryDatedateMdDistributionPercentagenumberMdEmailstringMdEquitableDistributionstringMdHoldbackPercentagenumberMdInvitationCategorystringMdMemostringMdMemoTextstringMdNumberstringMdProductGroupCPintegerMdProductGroupNumberstringMdProjectCPintegerMdProjectNumberstringMdReceivablenumberMdSitePhoneNumberstringMdStartDatedateMdStatestringMdStatusstringMdSubNumberstringMdTimeModifieddateMdUserUniqueinteger
Budgets (travaux en cours) /v1/budgets
Budgets (module Projets).
| GET | /v1/budgets | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/budgets/{position} | Une fiche par sa position. |
| POST | /v1/budgets | Créer : { "fields": { … } }. |
| PATCH | /v1/budgets/{position} | Modifier les champs envoyés. |
| DELETE | /v1/budgets/{position} | Supprimer la fiche. |
| GET | /v1/budgets/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Lignes de budget /v1/budget-lines
Lignes de budgets.
| GET | /v1/budget-lines | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/budget-lines/{position} | Une fiche par sa position. |
| POST | /v1/budget-lines | Créer : { "fields": { … } }. |
| PATCH | /v1/budget-lines/{position} | Modifier les champs envoyés. |
| DELETE | /v1/budget-lines/{position} | Supprimer la fiche. |
| GET | /v1/budget-lines/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Conseillers /v1/counsellors
Conseillers (module Projets).
| GET | /v1/counsellors | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/counsellors/{position} | Une fiche par sa position. |
| POST | /v1/counsellors | Créer : { "fields": { … } }. |
| PATCH | /v1/counsellors/{position} | Modifier les champs envoyés. |
| DELETE | /v1/counsellors/{position} | Supprimer la fiche. |
| GET | /v1/counsellors/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Clients (travaux en cours) /v1/customers-wip
Clients du module Projets.
| GET | /v1/customers-wip | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/customers-wip/{position} | Une fiche par sa position. |
| POST | /v1/customers-wip | Créer : { "fields": { … } }. |
| PATCH | /v1/customers-wip/{position} | Modifier les champs envoyés. |
| DELETE | /v1/customers-wip/{position} | Supprimer la fiche. |
| GET | /v1/customers-wip/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Fournisseurs (travaux en cours) /v1/suppliers-wip
Fournisseurs vus par le module Projets.
| GET | /v1/suppliers-wip | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/suppliers-wip/{position} | Une fiche par sa position. |
| POST | /v1/suppliers-wip | Créer : { "fields": { … } }. |
| PATCH | /v1/suppliers-wip/{position} | Modifier les champs envoyés. |
| DELETE | /v1/suppliers-wip/{position} | Supprimer la fiche. |
| GET | /v1/suppliers-wip/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Factures clients (travaux en cours) /v1/invoices-ar-wip
Factures clients du module Projets.
| GET | /v1/invoices-ar-wip | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/invoices-ar-wip/{position} | Une fiche par sa position. |
| GET | /v1/invoices-ar-wip/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Factures de projets /v1/invoices-project-wip
Facturation de projets.
| GET | /v1/invoices-project-wip | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/invoices-project-wip/{position} | Une fiche par sa position. |
| GET | /v1/invoices-project-wip/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Transactions (travaux en cours) /v1/transactions-wip
Transactions du module Projets.
| GET | /v1/transactions-wip | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/transactions-wip/{position} | Une fiche par sa position. |
| POST | /v1/transactions-wip | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/transactions-wip/{position} | Modifier les champs envoyés. |
| DELETE | /v1/transactions-wip/{position} | Supprimer la fiche. |
| GET | /v1/transactions-wip/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paie 10
Employés /v1/employees
Employés.
| GET | /v1/employees | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/employees/{position} | Une fiche par sa position. |
| GET | /v1/employees/{numéro}?by=number | Une fiche par son numéro (EmNumber). |
| POST | /v1/employees | Créer : { "fields": { … } }. |
| PATCH | /v1/employees/{position} | Modifier les champs envoyés. |
| DELETE | /v1/employees/{position} | Supprimer la fiche. |
| GET | /v1/employees/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (56) — la liste exacte vient de /schema
EmAccountNumberstringEmActivebooleanEmActiveFunctionsbooleanEmAddressstringEmArchivedbooleanEmArrivalDatedateEmBirthdatedateEmBranchNumberstringEmCitystringEmCumulativeAmountsstringEmDepartureDatedateEmEICalculationMethodstringEmEMailstringEmEMailDescriptionstringEmFirstNamestringEmFunctionsCPintegerEmGenderstringEmHRHoursPerDaystringEmHRHoursPerDayIndexstringEmHiringDatedateEmISOCountryCodestringEmInstitutionNumberstringEmLSIFReferencestringEmLaborSponseredFundstringEmLanguagestringEmMaritalStatusstringEmNamestringEmNumberstringEmPaymentModestringEmPhoneDescriptionstringEmPhoneExtentionstringEmPhoneNumberstringEmPostalCodestringEmPrintStubIfDirectDepositstringEmProvincestringEmQPIPCalculationMethodstringEmRRSPContributionstringEmSINstringEmSPActivebooleanEmSPAmountPerPaystringEmSPCalculationModestringEmSPEffectiveDatedateEmSPFileNumberstringEmSPPercentageOfPaystringEmShowCommentInTransactionsstringEmSortKeystringEmStatusstringEmTimeModifieddateEmTotalFunctionsstringEmUniqueintegerEmUseFederalTableForPersonalExemptionstringEmUseProvincialTableForPersonalExemptionstringEmUsedbooleanEmVacationDatedateEmWebAddressstringEmYFactorstring
Groupes d'employés /v1/employee-groups
Groupes d’employés.
| GET | /v1/employee-groups | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/employee-groups/{position} | Une fiche par sa position. |
| GET | /v1/employee-groups/{numéro}?by=number | Une fiche par son numéro (EGNumber). |
| POST | /v1/employee-groups | Créer : { "fields": { … } }. |
| PATCH | /v1/employee-groups/{position} | Modifier les champs envoyés. |
| DELETE | /v1/employee-groups/{position} | Supprimer la fiche. |
| GET | /v1/employee-groups/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (8) — la liste exacte vient de /schema
EGDescriptionstringEGEmployeeIncludedbooleanEGEmployeeIncludedCPbooleanEGNumberstringEGStatusstringEGTimeModifieddateEGUniqueintegerEGUsedboolean
Départements /v1/departments
Départements.
| GET | /v1/departments | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/departments/{position} | Une fiche par sa position. |
| POST | /v1/departments | Créer : { "fields": { … } }. |
| PATCH | /v1/departments/{position} | Modifier les champs envoyés. |
| DELETE | /v1/departments/{position} | Supprimer la fiche. |
| GET | /v1/departments/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Fonctions /v1/functions
Fonctions (postes).
| GET | /v1/functions | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/functions/{position} | Une fiche par sa position. |
| POST | /v1/functions | Créer : { "fields": { … } }. |
| PATCH | /v1/functions/{position} | Modifier les champs envoyés. |
| DELETE | /v1/functions/{position} | Supprimer la fiche. |
| GET | /v1/functions/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (28) — la liste exacte vient de /schema
FnActivebooleanFnAllocatedTipsIndexstringFnAllocatedTipsRatenumberFnArrivalDatedateFnCCQRateDatedateFnCommentsstringFnCumulativeAmountsstringFnDepartmentCPintegerFnDepartmentNumberstringFnDepartureDatedateFnDescriptionstringFnEmployeeCPintegerFnEmployeeNumberstringFnFSSExemptionRatenumberFnLocalstringFnOrderstringFnPayrollEntrystringFnProjectCPintegerFnProjectNumberstringFnReferencestringFnRegionstringFnSpecificUnionstringFnStatusstringFnTimeModifieddateFnUnionstringFnUniqueintegerFnUsedbooleanFnVacationCalculationMethodstring
Salaires /v1/salaries
Salaires.
| GET | /v1/salaries | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/salaries/{position} | Une fiche par sa position. |
| POST | /v1/salaries | Créer : { "fields": { … } }. |
| PATCH | /v1/salaries/{position} | Modifier les champs envoyés. |
| DELETE | /v1/salaries/{position} | Supprimer la fiche. |
| GET | /v1/salaries/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (54) — la liste exacte vient de /schema
SaAllocatedTipsRatenumberSaArchivedbooleanSaBonusAmountnumberSaCSSTProvisionCalcstringSaCSSTRatenumberSaCSSTUnitCodestringSaCSSTUnitCodeIndexstringSaCumulativeAmountsstringSaDeclaredTipsOnSalesnumberSaDepartmentCPintegerSaDepartmentNumberstringSaEICalculationMethodstringSaEmployeeCPintegerSaEmployeeNumberstringSaFSSEarningsstringSaFedDedSpecialSinglePmtsstringSaFedITOnSinglePmtsFormstringSaFedITOnSinglePmtsTablestringSaFedITOnSpecialPmtsstringSaFedSinglePmtsstringSaFunctionCPintegerSaFunctionDescriptionstringSaFunctionReferencestringSaLocalstringSaNetSalarystringSaPaidHolidaysCommentbooleanSaPayCPintegerSaPayUniqueintegerSaPensionableEarningsstringSaPeriodNumberstringSaPrintedstringSaProvDedSpecialSinglePmtsstringSaProvITOnSinglePmtsstringSaProvITOnSpecialPmtsstringSaProvSinglePmtsstringSaQPIPEarningsstringSaRegionstringSaRemittanceMadestringSaSalaryCPintegerSaStatusstringSaTemporarystringSaTimeModifieddateSaTipsAdjustmentstringSaTipsPaidHolidaybooleanSaTipsPaidVacationbooleanSaTipsSalesAmountnumberSaTransferedToGLstringSaUnionstringSaUniqueintegerSaUsedbooleanSaVacationCalculationMethodstringSaWorkInjuryCalcModeUnitstringSaWorkInjuryCalcModeUsedbooleanSaWorkInjuryEarningsstring
Transactions de paie /v1/payroll-transactions
Transactions de paie.
| GET | /v1/payroll-transactions | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/payroll-transactions/{position} | Une fiche par sa position. |
| POST | /v1/payroll-transactions | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/payroll-transactions/{position} | Modifier les champs envoyés. |
| DELETE | /v1/payroll-transactions/{position} | Supprimer la fiche. |
| GET | /v1/payroll-transactions/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paiements de paie /v1/payroll-payments
Paiements de paie.
| GET | /v1/payroll-payments | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/payroll-payments/{position} | Une fiche par sa position. |
| POST | /v1/payroll-payments | Créer : { "fields": { … }, "lines": [ … ] }. |
| PATCH | /v1/payroll-payments/{position} | Modifier les champs envoyés. |
| DELETE | /v1/payroll-payments/{position} | Supprimer la fiche. |
| GET | /v1/payroll-payments/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Feuilles de temps /v1/timesheets
Feuilles de temps.
| GET | /v1/timesheets | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/timesheets/{position} | Une fiche par sa position. |
| POST | /v1/timesheets | Créer : { "fields": { … } }. |
| PATCH | /v1/timesheets/{position} | Modifier les champs envoyés. |
| DELETE | /v1/timesheets/{position} | Supprimer la fiche. |
| GET | /v1/timesheets/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (32) — la liste exacte vient de /schema
TSArchivedbooleanTSCommentstringTSEarningsLinestringTSEmployeeBankstringTSEmployeeCPintegerTSEmployeeNumberstringTSEndDatedateTSEndTimedateTSFunctionCPintegerTSFunctionDescriptionstringTSFunctionReferencestringTSHRBankCPintegerTSHRBankNumberstringTSHRFormatstringTSHRTotalnumberTSHRTypestringTSHourAmountnumberTSManualCalculationstringTSPayCPintegerTSPercentnumberTSPeriodstringTSProjectCPintegerTSProjectNumberstringTSSalaryCPintegerTSStartDatedateTSStartTimedateTSStatusstringTSTimeModifieddateTSTotalHoursstringTSTransferedToGLstringTSTypestringTSUniqueinteger
Banques de temps /v1/hr-banks
Banques d’heures (vacances, maladie).
| GET | /v1/hr-banks | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/hr-banks/{position} | Une fiche par sa position. |
| POST | /v1/hr-banks | Créer : { "fields": { … } }. |
| PATCH | /v1/hr-banks/{position} | Modifier les champs envoyés. |
| DELETE | /v1/hr-banks/{position} | Supprimer la fiche. |
| GET | /v1/hr-banks/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (33) — la liste exacte vient de /schema
HBAdmissableLinesstringHBApplicableTostringHBArchivedbooleanHBBatchEntrystringHBBatchFrequencystringHBConditionstringHBDefaultValuestringHBDefaultValueDescriptionstringHBDescriptionstringHBEarningsLinestringHBExpensesCharterCPintegerHBExpensesCharterNumberstringHBExpirationstringHBExpirationFrequencystringHBFormatstringHBLiabilitiesCharterCPintegerHBLiabilitiesCharterNumberstringHBNegativeBalanceAllowedbooleanHBNextBatchstringHBNextExpirationstringHBNumberstringHBPayrollDebitstringHBPayrollEntrystringHBPayrollEntryTypestringHBPayrollJournalstringHBReversedEntrystringHBStatusstringHBTimeModifieddateHBUniqueintegerHBUsedbooleanHBUsedByEmployeebooleanHBUsedByPaybooleanHBUsedByTimeSheetdate
Soldes des banques de temps /v1/hr-bank-balances
Soldes des banques d’heures.
| GET | /v1/hr-bank-balances | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/hr-bank-balances/{position} | Une fiche par sa position. |
| GET | /v1/hr-bank-balances/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
CRM 5
Adresses et contacts /v1/addresses
Adresses et contacts.
| GET | /v1/addresses | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/addresses/{position} | Une fiche par sa position. |
| GET | /v1/addresses/{numéro}?by=number | Une fiche par son numéro (AdNumber). |
| POST | /v1/addresses | Créer : { "fields": { … } }. |
| PATCH | /v1/addresses/{position} | Modifier les champs envoyés. |
| DELETE | /v1/addresses/{position} | Supprimer la fiche. |
| GET | /v1/addresses/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (20) — la liste exacte vient de /schema
AdAddressstringAdBatchEMailActivebooleanAdCareOfstringAdCitystringAdEMailstringAdEMailDescriptionstringAdISOCountryCodestringAdLanguagestringAdNamestringAdNumberstringAdPhoneDescriptionstringAdPhoneExtentionstringAdPhoneNumberstringAdPostalCodestringAdProvincestringAdStatusstringAdTimeModifieddateAdUniqueintegerAdUsedbooleanAdWebAddressstring
Appels et suivis /v1/calls
Appels (CRM).
| GET | /v1/calls | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/calls/{position} | Une fiche par sa position. |
| POST | /v1/calls | Créer : { "fields": { … } }. |
| PATCH | /v1/calls/{position} | Modifier les champs envoyés. |
| DELETE | /v1/calls/{position} | Supprimer la fiche. |
| GET | /v1/calls/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (34) — la liste exacte vient de /schema
CaAttemptCallDateTimedateCaAttemptStatusstringCaAttemptUserCPintegerCaAttemptUserNumberstringCaCallCPintegerCaCallsSpoolerCPintegerCaCallsSpoolerNumberstringCaCommentsstringCaContactCPintegerCaContactNamestringCaContactNumberstringCaContactTypestringCaCreationUsFirstNamestringCaCreationUsLastNamestringCaCreationUsNumberstringCaCurUserNumberstringCaDateTimeOfCallFromContactdateCaLengthstringCaNumberstringCaNumberOfAttemptsToReachContactstringCaNumberOfCallFromContactstringCaPhoneExtentionstringCaPhoneNumberstringCaStatusstringCaTimeEntrydateCaTimeModifieddateCaTimeWaitingdateCaUniqueintegerCaUsedbooleanCaUserCPintegerCaUserFirstNamestringCaUserLastNamestringCaUserNumberstringCaWithoutItemsstring
Horaires d'appels /v1/calls-schedules
Horaires d’appels.
| GET | /v1/calls-schedules | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/calls-schedules/{position} | Une fiche par sa position. |
| POST | /v1/calls-schedules | Créer : { "fields": { … } }. |
| PATCH | /v1/calls-schedules/{position} | Modifier les champs envoyés. |
| DELETE | /v1/calls-schedules/{position} | Supprimer la fiche. |
| GET | /v1/calls-schedules/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Files d'appels /v1/calls-spoolers
Files d’appels.
| GET | /v1/calls-spoolers | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/calls-spoolers/{position} | Une fiche par sa position. |
| POST | /v1/calls-spoolers | Créer : { "fields": { … } }. |
| PATCH | /v1/calls-spoolers/{position} | Modifier les champs envoyés. |
| DELETE | /v1/calls-spoolers/{position} | Supprimer la fiche. |
| GET | /v1/calls-spoolers/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Appels traités /v1/processed-calls
Appels traités.
| GET | /v1/processed-calls | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/processed-calls/{position} | Une fiche par sa position. |
| GET | /v1/processed-calls/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres 12
Pays /v1/countries
Pays.
| GET | /v1/countries | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/countries/{position} | Une fiche par sa position. |
| GET | /v1/countries/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Renseignements sur l'entreprise /v1/company-information
Renseignements sur l’entreprise : nom, adresse, numéros de taxes.
| GET | /v1/company-information | Lire les paramètres (une seule fiche). |
| PATCH | /v1/company-information | Modifier les champs envoyés : { "fields": { … } }. |
| GET | /v1/company-information/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (53) — la liste exacte vient de /schema
CIAddressstringCIArchiveIsActivebooleanCIBankArchiveIsActivebooleanCICareOfstringCICategoryCPintegerCICategoryNumberstringCICitystringCIConfirmComponentstringCICostCodingstringCICountrystringCIDecimalPlacesInPricenumberCIDescriptionstringCIEMailstringCIEMailDescriptionstringCIInvActivebooleanCIInvAllowProductItemCreationstringCIInvConfirmProductItemCreationstringCIInvLanguagestringCIInvProductItemRequiredbooleanCIInvQtySDKActivebooleanCIInvQtySDKDescriptionstringCILanguagestringCINamestringCINumberstringCIPhoneDescriptionstringCIPhoneExtentionstringCIPhoneNumberstringCIPhoneTenDigitsAndMorestringCIPostalCodestringCIPriceListActivebooleanCIPriceListDividestringCIPriceListNamestringCIPriceListRatenumberCIPriceListTaxGroupCPintegerCIPriceListUsedbooleanCIPriceNamestringCIPricePercentagenumberCIProvincestringCIReportArchiveIsActivebooleanCISegmentationActivebooleanCISegmentationIDstringCISerialActivebooleanCIStatusstringCIStatusActivebooleanCIStatusTitlestringCIStockNumberLengthstringCITaxIdLanguagestringCITimeModifieddateCITransphereActivebooleanCIUniqueintegerCIUniqueCieIdstringCIUsedbooleanCIWWWstring
Paramètres — clients /v1/settings-customers
Paramètres du module clients.
| GET | /v1/settings-customers | Lire les paramètres (une seule fiche). |
| PATCH | /v1/settings-customers | Modifier les champs envoyés : { "fields": { … } }. |
| GET | /v1/settings-customers/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — fournisseurs /v1/settings-suppliers
Paramètres du module fournisseurs (lecture seule).
| GET | /v1/settings-suppliers | Lire les paramètres (une seule fiche). |
| GET | /v1/settings-suppliers/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — grand livre /v1/settings-gl
Paramètres du grand livre (lecture seule).
| GET | /v1/settings-gl | Lire les paramètres (une seule fiche). |
| GET | /v1/settings-gl/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Champs indicatifs (23) — la liste exacte vient de /schema
CGAddressstringCGAmountnumberCGBankCPintegerCGBankNumberstringCGBatchJournalCPintegerCGBudgetTitlesstringCGCareOfstringCGCitystringCGCommentsstringCGCurrentPeriodstringCGDatedateCGDatePrinteddateCGNamestringCGNextEntryNumberstringCGNumberstringCGNumberOfPeriodsstringCGPhonestringCGPostalCodestringCGProjectInInvoicingstringCGStatusstringCGTimeModifieddateCGTypestringCGUniqueinteger
Paramètres — inventaire /v1/settings-inventory
Paramètres de l’inventaire.
| GET | /v1/settings-inventory | Lire les paramètres (une seule fiche). |
| PATCH | /v1/settings-inventory | Modifier les champs envoyés : { "fields": { … } }. |
| GET | /v1/settings-inventory/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — commandes /v1/settings-orders
Paramètres des commandes.
| GET | /v1/settings-orders | Lire les paramètres (une seule fiche). |
| PATCH | /v1/settings-orders | Modifier les champs envoyés : { "fields": { … } }. |
| GET | /v1/settings-orders/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — taxes /v1/settings-taxes
Paramètres des taxes (module point de vente requis pour la modification).
| GET | /v1/settings-taxes | Lire les paramètres (une seule fiche). |
| PATCH | /v1/settings-taxes | Modifier les champs envoyés : { "fields": { … } }. |
| GET | /v1/settings-taxes/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — paie /v1/settings-payroll
Paramètres de la paie (lecture seule).
| GET | /v1/settings-payroll | Lire les paramètres (une seule fiche). |
| GET | /v1/settings-payroll/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — projets /v1/settings-projects
Paramètres du module Projets.
| GET | /v1/settings-projects | Lire les paramètres (une seule fiche). |
| PATCH | /v1/settings-projects | Modifier les champs envoyés : { "fields": { … } }. |
| GET | /v1/settings-projects/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — cartes-cadeaux /v1/settings-gift-cards
Paramètres des cartes-cadeaux.
| GET | /v1/settings-gift-cards | Lire les paramètres (une seule fiche). |
| PATCH | /v1/settings-gift-cards | Modifier les champs envoyés : { "fields": { … } }. |
| GET | /v1/settings-gift-cards/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Paramètres — CRM /v1/settings-crm
Paramètres du CRM (lecture seule).
| GET | /v1/settings-crm | Lire les paramètres (une seule fiche). |
| GET | /v1/settings-crm/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Analyses 7
Analyse des ventes par client /v1/bi-sales-by-customer
Ventes par client (module d’analyse).
| GET | /v1/bi-sales-by-customer | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/bi-sales-by-customer/{position} | Une fiche par sa position. |
| GET | /v1/bi-sales-by-customer/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Analyse des lignes de vente par client /v1/bi-sales-lines-by-customer
Lignes de ventes par client.
| GET | /v1/bi-sales-lines-by-customer | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/bi-sales-lines-by-customer/{position} | Une fiche par sa position. |
| GET | /v1/bi-sales-lines-by-customer/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Analyse des lignes d'achat /v1/bi-purchase-lines
Lignes d’achats.
| GET | /v1/bi-purchase-lines | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/bi-purchase-lines/{position} | Une fiche par sa position. |
| GET | /v1/bi-purchase-lines/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Analyse des produits /v1/bi-products
Analyse des produits.
| GET | /v1/bi-products | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/bi-products/{position} | Une fiche par sa position. |
| GET | /v1/bi-products/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Analyse des mouvements d'inventaire /v1/bi-product-trails
Analyse des mouvements de produits.
| GET | /v1/bi-product-trails | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/bi-product-trails/{position} | Une fiche par sa position. |
| GET | /v1/bi-product-trails/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Analyse des transactions clients /v1/bi-customer-transaction-lines
Lignes de transactions clients.
| GET | /v1/bi-customer-transaction-lines | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/bi-customer-transaction-lines/{position} | Une fiche par sa position. |
| GET | /v1/bi-customer-transaction-lines/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
Analyse des transactions fournisseurs /v1/bi-supplier-transaction-lines
Lignes de transactions fournisseurs.
| GET | /v1/bi-supplier-transaction-lines | Liste paginée (cursor, limit), champs du SDK. |
| GET | /v1/bi-supplier-transaction-lines/{position} | Une fiche par sa position. |
| GET | /v1/bi-supplier-transaction-lines/schema | Champs exacts, types et droits, lus dans le SDK de votre installation. |
09 Idempotence des écritures
Sur un réseau, une requête peut aboutir sans que la réponse vous parvienne. Si vous réessayez, vous ne devez pas enregistrer deux fois la même facture. Ponteo Connect l’empêche à deux niveaux.
1. La clé d’idempotence
- Envoyez un en-tête
Idempotency-Key(150 caractères au plus), par exemple un UUID, unique par facture, et renvoyez exactement la même valeur et le même corps à chaque nouvelle tentative. - Sans cet en-tête, la clé est dérivée du numéro de fournisseur et du numéro de facture, pour la licence.
- Si la même
Idempotency-Keyrevient avec un corps différent :IDEMPOTENCY_CONFLICT(422). Avec la clé dérivée (sans en-tête), un nouvel envoi pour le même fournisseur et le même numéro de facture rejoue la réponse d’origine. - Si la première requête est encore en cours :
REQUEST_IN_PROGRESS(409) avecRetry-After: 5. - Seules les issues réussies sont mémorisées, pendant 30 jours, et uniquement sous forme d’identifiants (statut, fournisseur ou client, numéro de facture) : aucun contenu comptable n’est conservé. Une écriture refusée (par exemple
BAD_REQUEST) peut être corrigée et renvoyée avec la même clé.
Un rejeu d’une écriture réussie renvoie le même statut HTTP et les identifiants de l’écriture d’origine (sans son détail : relisez la facture avec GET au besoin), avec l’en-tête Idempotent-Replayed: true et deux champs supplémentaires dans l’enveloppe :
{
"ok": true,
"data": { "status": "created", "invoice": { "supplierNumber": "1000", "invoiceNumber": "F-2026-0815", "position": 1843 } },
"requestId": "c41f7b2a-6e3d-4b09-a8f5-1d2e3c4b5a60",
"idempotentReplay": true,
"originalRequestId": "c41f7b2a-6e3d-4b09-a8f5-1d2e3c4b5a60"
}2. Le logiciel comptable fait foi
Avant d’écrire, l’agent vérifie si la facture (fournisseur et numéro) existe déjà. Si c’est le cas, rien n’est réécrit et la réponse est un succès already_exists (HTTP 200), même avec une nouvelle clé.
10 Mode simulation (dryRun)
Ajoutez ?dryRun=true à POST /v1/invoices/ap, ou "dryRun": true dans le corps, pour exécuter toutes les validations sans rien écrire : format des champs, répartition, existence du fournisseur et de chaque compte. La simulation fonctionne même si les écritures sont désactivées : idéale pendant le développement d’une intégration.
curl -X POST "https://api.ponteo.ca/v1/invoices/ap?dryRun=true" \
-H "Authorization: Bearer $PONTEO_KEY" \
-H "Content-Type: application/json" \
--data-binary @facture.json{
"ok": true,
"data": {
"status": "valid",
"resolved": {
"supplierPosition": 1,
"lines": [
{ "account": 2110, "accountPosition": 12, "amount": 303.89, "description": "Comptes à payer" },
{ "account": 5010, "accountPosition": 58, "amount": -264.31, "description": "Achat" },
{ "account": 2330, "accountPosition": 19, "amount": -13.22, "description": "TPS" },
{ "account": 2340, "accountPosition": 20, "amount": -26.36, "description": "TVQ" }
]
}
},
"requestId": "…"
}En cas de problème, la réponse est l’erreur qu’aurait produite l’écriture réelle, par exemple BAD_REQUEST avec ses details. Une simulation n’est pas mémorisée par l’idempotence.
11 Signature HMAC (optionnelle)
Lorsque la licence l’exige, chaque requête doit être signée en plus de l’en-tête Authorization. La signature empêche la réutilisation d’un appel intercepté ou journalisé.
| En-tête | Valeur |
|---|---|
X-Ponteo-Timestamp | Heure courante en secondes Unix, par exemple 1789560000. |
X-Ponteo-Signature | Signature HMAC-SHA256 en hexadécimal, calculée comme ci-dessous. |
La chaîne à signer réunit quatre éléments séparés par un saut de ligne (\n) :
METHODE + "\n" + chemin_avec_query + "\n" + timestamp + "\n" + hex(sha256(corps))
signature = hex(HMAC-SHA256(clé_de_licence, chaîne_à_signer))- METHODE : en majuscules (
GET,POST,DELETE). - chemin_avec_query : le chemin tel qu’envoyé, avec la chaîne de requête, par exemple
/v1/invoices/ap?dryRun=true. - timestamp : la même valeur que l’en-tête
X-Ponteo-Timestamp. - hex(sha256(corps)) : empreinte SHA-256 des octets exacts du corps ; pour une requête sans corps, celle de la chaîne vide (
e3b0c442…b855).
L’horodatage doit être à plus ou moins 300 secondes de l’heure du serveur : synchronisez l’horloge de vos systèmes (NTP). Une signature absente alors qu’elle est exigée, invalide ou hors délai est refusée avec SIGNATURE_INVALID (401).
<?php
$key = getenv('PONTEO_KEY');
$method = 'POST';
$path = '/v1/invoices/ap?dryRun=true';
$body = file_get_contents('facture.json');
$ts = (string) time();
$toSign = $method . "\n" . $path . "\n" . $ts . "\n" . hash('sha256', $body);
$signature = hash_hmac('sha256', $toSign, $key);
$ch = curl_init('https://api.ponteo.ca' . $path);
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $key,
'Content-Type: application/json',
'X-Ponteo-Timestamp: ' . $ts,
'X-Ponteo-Signature: ' . $signature,
],
]);
$response = json_decode(curl_exec($ch), true);METHOD="POST"
URLPATH="/v1/invoices/ap?dryRun=true"
TS=$(date +%s)
BODY_HASH=$(openssl dgst -sha256 -hex < facture.json | awk '{print $NF}')
SIGNATURE=$(printf '%s\n%s\n%s\n%s' "$METHOD" "$URLPATH" "$TS" "$BODY_HASH" \
| openssl dgst -sha256 -hmac "$PONTEO_KEY" -hex | awk '{print $NF}')
curl -X "$METHOD" "https://api.ponteo.ca$URLPATH" \
-H "Authorization: Bearer $PONTEO_KEY" \
-H "Content-Type: application/json" \
-H "X-Ponteo-Timestamp: $TS" \
-H "X-Ponteo-Signature: $SIGNATURE" \
--data-binary @facture.jsonSignez le corps exactement tel qu’il est transmis : utilisez --data-binary avec curl, car -d retire les sauts de ligne d’un fichier.
12 Bonnes pratiques
- Conservez la clé de licence dans un coffre de secrets ou une variable d’environnement côté serveur, jamais dans un dépôt de code.
- Demandez la restriction d’adresse IP et la signature HMAC pour les licences qui permettent l’écriture.
- Validez vos factures en mode simulation avant de passer en production, et faites vos essais d’écriture sur une copie de la compagnie.
- Envoyez toujours une
Idempotency-Keysur les écritures, et réutilisez-la lors des nouvelles tentatives. - Respectez
Retry-Afteret appliquez un délai croissant entre les tentatives. - Pour synchroniser, préférez
modifiedSinceà la relecture complète, et suivez toujoursnextCursorjusqu’ànull. - Journalisez le
requestId(ou l’en-têteX-Request-Id) de chaque réponse : il facilite le diagnostic avec le support. - En cas de fuite d’une clé, contactez-nous : la licence peut être révoquée immédiatement et une nouvelle clé émise.