ProfitFlowAPI ProfitFlow

Documentation de l'API ProfitFlow

ProfitFlow API documentation

Remontée automatique du chiffre d'affaires par les Vendeurs, API partenaires et continuité du Moteur ProfitFlow.app.

Avertissement de sécurité

Chaque requête adressée à l'API ProfitFlow (api.profitflow.global et api.profitflow.app) est susceptible d'être examinée par IdentIP à des fins de sécurité : adresse IP d'origine, en-têtes, jeton utilisé et contenu de la requête peuvent être analysés pour détecter les usages frauduleux ou anormaux.

Points d'accès

APIURL de baseUsage
API ProfitFlowhttps://api.profitflow.global/functions/v1/public-api-gateway/api/v1Remontée du CA Vendeur, API partenaires. Point d'accès recommandé.
API historiquehttps://api.profitflow.appRequêtes du Moteur ProfitFlow.app (dont TurnoverRealTimes). Elles peuvent toujours être exécutées sur api.profitflow.app.

Toutes les requêtes passent en HTTPS, corps et réponses en JSON (Content-Type: application/json), dates au format AAAA-MM-JJ, montants en unités de la devise (ex. 1250.50).

Authentification

Jeton Vendeur (remontée du CA)

Le Vendeur génère son jeton dans son intranet ProfitFlow : Déclarations de C.A., onglet Remontée automatique (API). Le jeton commence par pfca_, il n'est affiché qu'une seule fois et peut être révoqué à tout moment (5 jetons actifs maximum par Vendeur).

Authorization: Bearer pfca_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Clé partenaire (API partenaires)

Les partenaires techniques utilisent une clé pf_live_… (production) ou pf_test_… (essai), dotée de scopes (ex. read:passive-rights, read:contracts) et de quotas par minute et par jour.

Ne transmettez jamais un jeton dans une URL. En cas de doute sur une fuite, révoquez le jeton et générez-en un nouveau.

Remontée du chiffre d'affaires

POST/turnover-reports

Chaque appel enregistre une transaction de chiffre d'affaires (caisse, ERP, logiciel de facturation). Le montant s'ajoute à la déclaration de CA mensuelle en brouillon du Vendeur pour la zone concernée. Le Vendeur la soumet puis la valide dans son intranet ; la validation déclenche le calcul des quotes-parts dues aux Acquéreurs.

ChampTypeDescription
amountnombre, requisMontant strictement positif, 2 décimales maximum.
currencytexteCode ISO 4217, EUR par défaut. Doit correspondre à la devise de la déclaration du mois.
datetexteAAAA-MM-JJ, date du jour par défaut.
postal_codetexte, requisCode postal de la zone à laquelle le montant est lié.
countrytexte, requisCode pays ISO 3166-1 alpha-2 (ex. BE, FR).
citytexteNom de la ville, recommandé : il départage les communes qui partagent un même code postal.
referencetexteRéférence unique de la transaction côté Vendeur (100 caractères max). Un second envoi avec la même référence n'est pas compté deux fois.
curl -X POST "https://api.profitflow.global/functions/v1/public-api-gateway/api/v1/turnover-reports" \
  -H "Authorization: Bearer pfca_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{"amount":1250.50,"currency":"EUR","date":"2026-10-09","postal_code":"1000","country":"BE","city":"Bruxelles","reference":"TCK-000123"}'

Réponses

StatutSignification
201Transaction enregistrée : transaction_id, declaration_id, declaration_total, period, zone_id.
200Référence déjà reçue : rien n'est ajouté, duplicate: true.
409 period_closedLa déclaration du mois est déjà soumise ou validée : le montant n'est pas ajouté.
409 currency_mismatchLa devise diffère de celle de la déclaration du mois.
401Jeton absent, invalide ou révoqué.
422Champ invalide (le champ concerné est indiqué dans error.field).

zone_resolved: false signifie que le code postal n'a pas été reconnu dans le référentiel des zones : le montant est bien enregistré, dans la déclaration du mois sans zone.

{
  "data": {
    "transaction_id": "7c1e…",
    "declaration_id": "a91f…",
    "declaration_total": 18420.75,
    "period": { "start": "2026-10-01", "end": "2026-10-31" },
    "zone_id": "3b2d…",
    "zone_resolved": true
  }
}

Compatibilité TurnoverRealTimes

POSThistorique/TurnoverRealTimes

Le format du webservice du Moteur ProfitFlow.app reste accepté. Les caisses déjà configurées sur api.profitflow.app continuent de fonctionner sans changement. Pour basculer vers l'API ProfitFlow, il suffit de changer l'URL et d'utiliser un jeton pfca_ dans sToken.

POST https://api.profitflow.global/functions/v1/public-api-gateway/api/v1/TurnoverRealTimes
{
  "sToken": "pfca_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "sCP": "1000",
  "sNom": "Bruxelles",
  "sPaysISO2": "BE",
  "xMontant": 1250.50,
  "sDate": "2026-10-09",
  "sRef": "TCK-000123"
}

sDate accepte AAAA-MM-JJ, AAAAMMJJ et JJ/MM/AAAA. Les réponses suivent le format décrit dans la section Remontée du CA.

API partenaires

MéthodeCheminScope
GET/pingtoute clé valide
GET/passive-rights, /passive-rights/{id}read:passive-rights
GET/contracts, /contracts/{id}read:contracts
POST/contractswrite:contracts

La spécification OpenAPI 3.1 complète est publiée en français et en anglais : GET /openapi.json (langue selon l'en-tête Accept-Language). Pagination par curseur, en-tête Idempotency-Key accepté sur les écritures.

Erreurs et quotas

Toute erreur suit la même enveloppe ; conservez request_id pour toute demande d'assistance.

{
  "error": { "code": "validation_failed", "message": "…", "field": "postal_code" },
  "request_id": "5f0c…"
}

Les quotas sont appliqués par jeton ou par clé. Au-delà, l'API répond 429 rate_limit_exceeded avec un en-tête Retry-After en secondes. Réessayez après ce délai, avec la même reference pour éviter tout double comptage.