API Billing Providers
Cette section documente la V1 de l’integration billing provider.
Choix produit actuels :
-
Billitest utilise pour creer la facture chez le provider -
l’envoi client se fait via Vekteur par email
-
le PDF facture est recupere depuis Billit avant envoi
Vue d’ensemble
Le flux metier recommande est le suivant :
-
lister les providers disponibles
-
configurer un provider unique sur la company
-
creer une facture Vekteur
-
creer la facture chez le provider
-
recuperer le PDF provider
-
envoyer le PDF au client via Vekteur
Authentification
Tous les endpoints ci-dessous requierent authMiddleware.
Regles complementaires :
-
GET /api/billing-providersrequiert une authentification simple -
les endpoints company billing provider requierent
requireMembership({ applications: ['distrib'], roles: ['admin'] }) -
les endpoints invoice provider requierent aussi
requireMembership({ applications: ['distrib'], roles: ['admin'] })
GET /api/companies/:id/billing-provider
Retourne la configuration billing provider de la company, sous forme sanitisee.
Les secrets ne sont jamais retournes. A la place, l’API expose des flags has_*.
Exemple de reponse
{
"provider": {
"_id": "6656c2d6c7d4d7b1fd8d7c11",
"code": "billit",
"name": "Billit",
"auth_type": "api_key"
},
"enabled": true,
"mode": "sandbox",
"auth_type": "api_key",
"settings": {
"party_id": "123456"
},
"credentials": {
"has_api_key": true,
"has_access_token": false,
"has_refresh_token": false,
"has_client_id": false,
"has_client_secret": false
}
}
PUT /api/companies/:id/billing-provider
Configure ou remplace le provider unique de la company.
Corps de la requete
{
provider_id: string; // ObjectId du provider
enabled: boolean;
mode: "sandbox" | "production";
auth_type: "api_key" | "oauth2";
credentials?: {
api_key?: string;
access_token?: string;
refresh_token?: string;
client_id?: string;
client_secret?: string;
redirect_uri?: string;
token_expires_at?: string; // ISO datetime
};
settings?: {
party_id?: string;
};
}
Validation metier
-
provider_iddoit exister dansbilling_providers -
le provider doit etre actif
-
auth_typedoit correspondre auauth_typedu provider -
si
enabled = trueetauth_type = "api_key",credentials.api_keyest requis -
si
enabled = trueetprovider = billit,settings.party_idest requis
POST /api/client/documents/:companyId/invoices/:id/create-on-provider
Cree la facture chez le billing provider configure pour la company.
Dans la V1 actuelle :
-
l’appel cree la facture chez Billit
-
il ne l’envoie pas au client
-
l’identifiant externe est stocke dans
billing_sync.provider.invoice_id
POST /api/client/documents/:companyId/invoices/:id/create-on-provider-and-email
Cree la facture chez le provider si necessaire, recupere le PDF provider, puis envoie ce PDF par email via Vekteur.
Corps de la requete
{
from: string; // email expediteur
to: string | string[]; // un ou plusieurs destinataires
}
Comportement
-
si la facture existe deja chez le provider, elle n’est pas recreee
-
le backend recupere le PDF provider avant envoi
-
la recuperation PDF inclut un retry court pour laisser au provider le temps de generer le fichier
GET /api/client/documents/:companyId/invoices/:id/provider-pdf
Notes d’implementation
-
seul
Billitest seed et supporte dans la V1 -
party_iddesigne la societe emettrice chez Billit, pas le client destinataire -
Customerdans le payload Billit est construit a partir deinvoice.customer_snapshot -
le flux d’envoi officiel est : creation chez Billit, puis email via Vekteur