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
| API | URL de base | Usage |
|---|---|---|
| API ProfitFlow | https://api.profitflow.global/functions/v1/public-api-gateway/api/v1 | Remontée du CA Vendeur, API partenaires. Point d'accès recommandé. |
| API historique | https://api.profitflow.app | Requê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.
| Champ | Type | Description |
|---|---|---|
amount | nombre, requis | Montant strictement positif, 2 décimales maximum. |
currency | texte | Code ISO 4217, EUR par défaut. Doit correspondre à la devise de la déclaration du mois. |
date | texte | AAAA-MM-JJ, date du jour par défaut. |
postal_code | texte, requis | Code postal de la zone à laquelle le montant est lié. |
country | texte, requis | Code pays ISO 3166-1 alpha-2 (ex. BE, FR). |
city | texte | Nom de la ville, recommandé : il départage les communes qui partagent un même code postal. |
reference | texte | Ré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
| Statut | Signification |
|---|---|
201 | Transaction enregistrée : transaction_id, declaration_id, declaration_total, period, zone_id. |
200 | Référence déjà reçue : rien n'est ajouté, duplicate: true. |
409 period_closed | La déclaration du mois est déjà soumise ou validée : le montant n'est pas ajouté. |
409 currency_mismatch | La devise diffère de celle de la déclaration du mois. |
401 | Jeton absent, invalide ou révoqué. |
422 | Champ 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éthode | Chemin | Scope |
|---|---|---|
| GET | /ping | toute clé valide |
| GET | /passive-rights, /passive-rights/{id} | read:passive-rights |
| GET | /contracts, /contracts/{id} | read:contracts |
| POST | /contracts | write: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.