5.4.0
Premiere publicationMise en ligne du site public : moteur de frais a decomposition integrale, catalogue de rails de payout avec leurs limites reelles, architecture d’URL par corridor, et les pages de transparence qui rendent tout cela verifiable. Ce journal commence ici, a la date reelle de publication.
Ajout(21)
src/lib/pricing.ts
Moteur de frais a decomposition integrale. Le cout reseau est preleve en nature sur l’actif avant conversion, puis la marge maison et le frais du rail apparaissent chacun sur leur ligne. Un invariant comptable verifie a chaque cotation que brut moins la somme des lignes egale exactement le net, a l’unite mineure pres : s’il ne tombe pas juste, on leve une erreur et on refuse de coter plutot que de laisser passer une marge cachee.
src/lib/pricing.ts
Politique de spread publiee et appliquee par le code : 90 points de base de base, 35 de plus sur un actif volatil, 25 de plus sur un corridor en beta, moins 15, 30 ou 45 points de base selon trois paliers de volume. Aucun autre prelevement n’existe cote maison.
src/lib/pricing.ts
Saisie inversee : le client peut taper ce qu’il veut RECEVOIR, le depot requis est resolu par recherche binaire. Les frais fixes rendent la fonction non lineaire — une inversion algebrique donnerait un montant faux de quelques centimes a chaque fois.
src/lib/money.ts
Toute somme d’argent transite en entier d’unites mineures (bigint) et tout taux en Decimal. Aucun montant ne passe par un nombre flottant JavaScript, ou 0,1 + 0,2 ne fait pas 0,3.
src/lib/rates.ts
Controle de fraicheur du taux avant chaque cotation ferme. Au-dela de l’age maximum tolere par la source, le moteur leve une erreur de taux perime et refuse de coter. Servir un prix perime depuis un cache est traite ici comme un bug financier, pas comme un bug de performance.
src/app/api/quote/route.ts
Endpoint public de cotation. Entree validee par schema, reponse sans cache, decomposition complete rendue ligne a ligne avec le taux mid-market, le taux effectif et l’ecart total en points de base. Les depassements de limites du rail sont rendus dans le corps de la reponse plutot qu’en erreur HTTP, avec la limite exacte.
src/data/payout-rails.ts
Catalogue des moyens de paiement avec, pour chacun, la devise de reglement, les pays servis, les delais p50 et p95, les jours ouvres et l’heure limite, les montants minimum et maximum en unites mineures, les frais reels et le schema de champs du beneficiaire.
src/data/corridors.ts
Architecture d’URL par corridor. Un rail multi-pays produit une seule page par actif : le SEPA est identique en France et en Belgique, deux pages diraient la meme chose. Un rail local — PIX, SPEI, M-Pesa, NIP, Interac — produit une page par pays, parce que le pays porte le format d’identifiant, les plafonds et la fiscalite. La matrice brute de ~2 200 combinaisons tombe ainsi d’un ordre de grandeur, et chaque page restante porte des faits qu’elle est seule a porter.
src/data/corridors.ts
Vagues d’ouverture et porte d’indexation. Un corridor n’est propose a l’indexation que si le contenu de sa vague est reellement ecrit ; les autres restent accessibles et fonctionnels mais hors index. On ne demande pas a un moteur d’indexer une page qu’on n’a pas encore ecrite.
src/data/assets.ts
Catalogue d’actifs avec les decimales de l’unite de base, les reseaux acceptes, le depot minimum sous lequel les frais reseau mangent l’operation, et la duree de verrouillage du taux — plus longue sur un stablecoin que sur un actif volatil.
src/data/networks.ts
Catalogue de reseaux avec le nombre de confirmations exige, la duree moyenne de bloc, le motif de validation d’adresse et, pour XRP, Stellar et TON, le champ memo dont l’oubli fait perdre les fonds.
src/data/geo.ts
Referentiel geographique : pays ouverts, pays en preparation, et pays refuses avec le motif — sanctions internationales, mesures restrictives, ou risque de blanchiment juge inacceptable. Le motif est publie pays par pays.
src/config/company.ts
Registre unique des affirmations factuelles sur l’entreprise. Raison sociale, immatriculation, annee de creation, statut reglementaire, volumes, avis : chaque valeur y est soit renseignee, soit marquee comme a remplir — et une valeur non renseignee n’est jamais affichee. Le site n’a le droit d’affirmer que ce qui est calcule depuis ses propres donnees.
src/components/JsonLd.tsx
Donnees structurees qui omettent tout champ non renseigne. Aucune date de fondation, aucun numero d’agrement et aucune note agregee ne sont declares aux moteurs tant qu’ils ne sont pas reels.
src/i18n/routing.ts
Prefixe de locale sur toutes les langues, francais compris. Servir la meme page sur « / » et sur « /fr/ » finit toujours en duplicatas ; la symetrie evite tout cas particulier dans les balises hreflang et les canoniques.
src/app/[locale]/statut
Page de statut du service : un composant par rail de payout et par reseau surveille, la description exacte de ce que la sonde verifiera, la politique de severite et le modele de rapport d’incident. Aucun pourcentage de disponibilite n’y figure tant qu’il n’est pas mesure.
src/app/[locale]/docs
Documentation d’API publique : authentification, pagination, idempotence, catalogue d’erreurs et webhooks signes. Les exemples de reponse sont des reponses reelles de l’endpoint de cotation, pas des maquettes.
src/app/[locale]/reclamations
Procedure de reclamation ecrite : ce qui distingue une reclamation d’une demande de support, les trois niveaux d’escalade, les delais tenus et ce qui se passe si la reponse ne convient pas.
src/app/[locale]/presse
Kit media : logos telechargeables generes depuis le code, palette avec les valeurs exactes, descriptions courte et longue pretes a citer. Aucune revue de presse n’y figure, faute de retombees a citer.
src/app/[locale]/affiliation
Programme d’affiliation remunere sur la marge reellement encaissee, jamais sur le volume brut : un partenaire ne gagne rien a pousser un corridor plus cher pour le client.
src/app/[locale]/plan-du-site
Plan du site genere depuis les donnees, avec filtre de recherche instantane. Toute page publiee y apparait : si une page existe et n’est pas dans ce plan, c’est un defaut.
Securite(3)
src/lib/rates.ts
Garde-fou de production : la source de taux deterministe utilisee en developpement ne peut pas demarrer en production. Le processus refuse de se lancer plutot que de coter des prix figes.
src/middleware.ts
Refus de service geographique avant tout rendu, avec un code HTTP 451 explicite et non un 404 : quand on refuse, on dit pourquoi. Le refus est reverifie cote serveur a la creation de commande, l’adresse IP seule ne faisant pas foi.
next.config.ts
En-tetes de securite sur toutes les reponses : HSTS avec preload, interdiction d’encadrement, blocage du reniflage de type, politique de referrer restreinte, isolation d’origine et desactivation des permissions de micro, geolocalisation et paiement.
Politique(5)
src/data/payout-rails.ts
Les rails de collecte — iDEAL, Bizum, BLIK, TWINT, Satispay, MB WAY, QRIS — sont declares indisponibles avec leur motif, et non masques. Ils servent a payer un commercant, pas a recevoir des fonds ; chacun renvoie vers le rail qu’on utilise a la place.
src/data/payout-rails.ts
Zelle est marque definitivement indisponible : son reglement interdit contractuellement le versement commercial par un tiers. Aucun prestataire ne peut y pousser des fonds pour notre compte de facon conforme, et le dire vaut mieux que laisser esperer.
src/data/payout-rails.ts
Les rails construits mais fermes portent leur motif reglementaire exact : retenue TDS et enregistrement FIU-IND pour UPI, licence MAS pour PayNow, declaration SARB pour l’Afrique du Sud, enregistrement AUSTRAC pour PayID, partenariat avec un etablissement agree pour PromptPay. On preferera toujours nommer l’obstacle plutot qu’annoncer une date.
src/data/assets.ts
Monero est present dans le catalogue, marque comme actif a anonymat renforce et non propose. Le reglement anti-blanchiment europeen impose son delistage aux prestataires a compter du 10 juillet 2027 ; on l’affiche et on l’explique plutot que de le faire disparaitre silencieusement.
docs/CONVENTIONS.md
Regle editoriale opposable : aucune annee de fondation, aucun numero de licence, aucun volume traite, aucun nombre de clients, aucun temoignage et aucun logo de partenaire n’est ecrit en dur dans une page. La maturite du service doit venir de la profondeur de ce qui est ecrit, jamais de preuves fabriquees.