Treezor — REST Banking API
Treezor est une filiale de Societe Generale, offrant une API REST classique pour les services bancaires. Leader du marche BaaS en France avec plus de 100 fintechs clientes.
Presentation
Treezor est l'un des principaux fournisseurs BaaS (Banking as a Service) en Europe. Fondee en 2016 et rachetee par la Societe Generale, la plateforme offre une infrastructure bancaire complete accessible via une API REST.
Fondee en 2016
Pionnier du BaaS en France
Siege a Paris
France, Union Europeenne
Filiale SG
Societe Generale Group
API REST
Architecture RESTful classique
Agree ACPR
Etablissement de paiement agree
100+ Fintechs
Clientes en production
Solidite bancaire
API REST
Treezor utilise une architecture REST classique avec des endpoints organises par ressource. Chaque appel retourne du JSON et suit les conventions HTTP standard (GET, POST, PUT, DELETE). Les reponses incluent des objets enveloppes avec pagination.
// Treezor REST — Create a wallet (account)
const response = await fetch('https://sandbox.treezor.com/v1/wallets', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
walletTypeId: 9,
tariffId: 1,
userId: treezorUserId,
currency: 'EUR',
eventName: 'YaniPay Wallet',
}),
});
const { wallets } = await response.json();Chaque ressource Treezor suit le meme pattern : un endpoint principal avec des sous-ressources pour les operations specifiques. Les identifiants sont numeriques et les relations entre objets sont exprimees via des champs *Id (ex: userId, walletId).
Authentification
Treezor utilise OAuth 2.0 avec un echange client credentials pour obtenir un token JWT. Le token doit etre inclus dans le header Authorization de chaque requete. Les tokens ont une duree de vie limitee et doivent etre renouveles periodiquement.
// Treezor OAuth 2.0 — Token exchange
interface TreezorTokenResponse {
access_token: string;
token_type: 'Bearer';
expires_in: number;
scope: string;
}
async function getTreezorAccessToken(): Promise<string> {
const response = await fetch('https://sandbox.treezor.com/oauth/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
grant_type: 'client_credentials',
client_id: process.env.TREEZOR_CLIENT_ID!,
client_secret: process.env.TREEZOR_CLIENT_SECRET!,
scope: 'read write',
}),
});
if (!response.ok) {
throw new Error(`Treezor auth failed: ${response.status}`);
}
const data: TreezorTokenResponse = await response.json();
return data.access_token;
}
// Cache token until expiry
let cachedToken: string | null = null;
let tokenExpiry = 0;
export async function getToken(): Promise<string> {
if (cachedToken && Date.now() < tokenExpiry) {
return cachedToken;
}
cachedToken = await getTreezorAccessToken();
// Refresh 60s before expiry
tokenExpiry = Date.now() + (3600 - 60) * 1000;
return cachedToken;
}Endpoints principaux
Treezor organise son API autour de ressources RESTful. Voici les endpoints les plus utilises dans l'integration YaniPay.
| Endpoint | Description | Methodes | Icone |
|---|---|---|---|
/v1/users | Gestion des utilisateurs et KYC | GET, POST, PUT, DELETE | |
/v1/wallets | Comptes et portefeuilles electroniques | GET, POST, PUT | |
/v1/cards | Cartes bancaires virtuelles et physiques | GET, POST, PUT | |
/v1/transfers | Virements internes entre wallets | GET, POST | |
/v1/payins | Encaissements (SEPA, carte, virement) | GET, POST | |
/v1/payouts | Decaissements (virement SEPA sortant) | GET, POST |
Simulateur local
YaniPay dispose d'un simulateur Treezor local qui reproduit le comportement de l'API sandbox. Cela permet de developper et tester l'integration sans avoir besoin de credentials reels ni de connexion au sandbox Treezor.
# Start the Treezor simulator
cd treezor-simulator
pnpm install
pnpm dev # Runs on port 4000
# Set in .env.local
TREEZOR_API_URL=http://localhost:4000/v1Le simulateur implemente les principaux endpoints (users, wallets, cards, transfers) avec des donnees de test pre-configurees. Il supporte egalement les webhooks pour tester les flux asynchrones.
Developpement local
treezor-simulator/) permet de tester l'integration sans credentials reels. Lancez-le avec pnpm dev et configurez TREEZOR_API_URL.Mapping des statuts
Les statuts Treezor sont mappes vers des statuts normalises dans la couche d'abstraction BaaS de YaniPay. Cela permet de traiter les differents providers de maniere uniforme.
Statuts des comptes (Wallets)
| Statut Treezor | Direction | Statut BaaS normalise |
|---|---|---|
| VALIDATED | → | ACTIVE |
| PENDING | → | PENDING |
| CANCELED | → | CLOSED |
| SUSPENDED | → | SUSPENDED |
Statuts des cartes (Cards)
| Statut Treezor | Direction | Statut BaaS normalise |
|---|---|---|
| ACTIVE | → | ACTIVATED |
| LOCK | → | LOCKED |
| STOLEN | → | BLOCKED |
| LOST | → | BLOCKED |
| CANCELED | → | CANCELLED |
| PENDING | → | PENDING |
Differences avec Swan
Treezor et Swan sont les deux providers BaaS supportes par YaniPay. Voici les principales differences architecturales et techniques entre les deux.
| Critere | Treezor | Swan |
|---|---|---|
| Type d'API | REST (JSON) | GraphQL |
| Authentification | OAuth 2.0 / JWT | OAuth 2.0 PKCE |
| Format webhooks | POST JSON standard | POST JSON avec signature |
| Gestion erreurs | Codes HTTP + body JSON | Errors GraphQL structurees |
| Pagination | Offset / Limit | Cursor-based (Relay) |
| Sandbox | sandbox.treezor.com | api.swan.io (sandbox project) |
| Maison mere | Societe Generale | Independant (VC-backed) |
La couche d'abstraction BaaS de YaniPay normalise ces differences, permettant de basculer entre Treezor et Swan de maniere transparente via la configuration BAAS_PROVIDER dans le fichier .env.local.