5.4.0
Eerste openbare releaseDe openbare site gaat live: een vergoedingsengine met een volledige uitsplitsing, een catalogus van uitbetalingskanalen met echte limieten, een op corridors gebaseerde URL-architectuur en de transparantiepagina's die dat alles controleerbaar maken. Dit logboek begint hier, op de echte publicatiedatum.
Toegevoegd(21)
src/lib/pricing.ts
Vergoedingsengine met een volledige uitsplitsing. Netwerkkosten worden in natura op het activum ingehouden vóór de conversie, daarna krijgen onze marge en de kanaalvergoeding elk een eigen regel. Een boekhoudkundige invariant controleert bij elke offerte dat bruto minus de som van de regels exact gelijk is aan netto, tot op de kleinste eenheid: als het niet klopt, verhogen we en weigeren we een offerte in plaats van een verborgen marge door te laten.
src/lib/pricing.ts
Spreadbeleid gepubliceerd en afgedwongen door de code: 90 basispunten basis, 35 meer op een volatiel activum, 25 meer op een bètacorridor, minus 15, 30 of 45 basispunten over drie volumetiers. Er bestaat geen andere vergoeding aan onze kant.
src/lib/pricing.ts
Omgekeerde invoer: u kunt typen wat u wilt ONTVANGEN en de vereiste storting wordt opgelost via binair zoeken. Vaste vergoedingen maken de functie niet-lineair — een algebraïsche inversie zou elke keer een paar cent afwijken.
src/lib/money.ts
Elk geldbedrag reist als een geheel getal van kleine eenheden (bigint) en elk tarief als een Decimal. Geen enkel bedrag gaat door een JavaScript float, waar 0,1 + 0,2 niet 0,3 is.
src/lib/rates.ts
De versheid van het tarief wordt gecontroleerd vóór elke definitieve offerte. Voorbij de maximaal toegestane leeftijd van de bron, genereert de engine een foutmelding voor verouderd tarief en weigert een offerte. Het serveren van een verouderde prijs uit een cache wordt hier behandeld als een financiële bug, niet als een prestatieprobleem.
src/app/api/quote/route.ts
Openbaar offerte-eindpunt. Schema-gevalideerde invoer, no-store-antwoord, volledige regel-voor-regel uitsplitsing met de mid-markttarief, het effectieve tarief en de totale kloof in basispunten. Overtredingen van kanaallimieten worden geretourneerd in de antwoordbody in plaats van als een HTTP-fout, met de exacte limiet.
src/data/payout-rails.ts
Catalogus van uitbetalingsmethoden met voor elk: de afwikkelingsvaluta, de bediende landen, p50- en p95-vertragingen, regels voor werkdagen en cut-offs, minimum- en maximumbedragen in kleine eenheden, echte vergoedingen en het schema van begunstigde velden.
src/data/corridors.ts
Op corridors gebaseerde URL-architectuur. Een multi-landenkanaal levert één pagina per activum op: SEPA is identiek in Frankrijk en België, twee pagina's zouden hetzelfde zeggen. Een lokaal kanaal — PIX, SPEI, M-Pesa, NIP, Interac — levert één pagina per land op, omdat het land het identificatieformaat, de limieten en de fiscale behandeling draagt. De ruwe matrix van ~2.200 combinaties daalt met een orde van grootte, en elke overlevende pagina draagt feiten die alleen die pagina kan dragen.
src/data/corridors.ts
Lanceergolven en een indexeringspoort. Een corridor wordt pas aangeboden voor indexering zodra de inhoud van de golf daadwerkelijk is geschreven; de andere blijven bereikbaar en functioneel maar buiten de index. We vragen een zoekmachine niet om een pagina te indexeren die we nog niet hebben geschreven.
src/data/assets.ts
Activacatalogus met decimalen van de basiseenheid, geaccepteerde netwerken, de minimumstorting waaronder netwerkvergoedingen de operatie opeten, en de duur van de tariefslot — langer op een stablecoin dan op een volatiel activum.
src/data/networks.ts
Netwerkcatalogus met het vereiste aantal bevestigingen, gemiddelde bloktijd, het adresvalidatiepatroon en, voor XRP, Stellar en TON, het memo-veld waarvan het weglaten de fondsen verliest.
src/data/geo.ts
Geografische referentiegegevens: open landen, landen in voorbereiding, en geweigerde landen met de reden — internationale sancties, beperkende maatregelen of een onaanvaardbaar witwasrisico. De reden wordt land voor land gepubliceerd.
src/config/company.ts
Enkel register van feitelijke beweringen over het bedrijf. Juridische naam, registratie, oprichtingsjaar, regelgevingsstatus, volumes, beoordelingen: elke waarde is ofwel ingevuld ofwel gemarkeerd als in behandeling — en een in behandeling zijnde waarde wordt nooit weergegeven. De site mag alleen beweren wat wordt berekend uit haar eigen gegevens.
src/components/JsonLd.tsx
Gestructureerde gegevens die elk niet-ingevuld veld weglaten. Geen oprichtingsdatum, geen licentienummer en geen algemene beoordeling worden aan zoekmachines verklaard totdat ze echt zijn.
src/i18n/routing.ts
Taalvoorvoegsel op elke taal, Frans inbegrepen. Het serveren van dezelfde pagina op “/” en “/fr/” eindigt altijd in duplicaten; symmetrie verwijdert elk speciaal geval in hreflang- en canonical-tags.
src/app/[locale]/statut
Servicestatuspagina: één component per uitbetalingskanaal en per bewaakt netwerk, de exacte beschrijving van wat de probe zal controleren, het ernstbeleid en het incidentrapportsjabloon. Geen beschikbaarheidspercentage verschijnt daar totdat het is gemeten.
src/app/[locale]/docs
Openbare API-documentatie: authenticatie, paginering, idempotentie, foutcatalogus en ondertekende webhooks. De voorbeeldantwoorden zijn echte antwoorden van het offerte-eindpunt, geen mock-ups.
src/app/[locale]/reclamations
Schriftelijke klachtenprocedure: wat een klacht onderscheidt van een ondersteuningsverzoek, de drie escalatieniveaus, de termijnen die we aanhouden, en wat er gebeurt als het antwoord u niet tevreden stelt.
src/app/[locale]/presse
Mediakit: downloadbare logo's gegenereerd uit code, palet met exacte waarden, korte en lange beschrijvingen klaar om te citeren. Geen persberichten worden vermeld, bij gebrek aan berichtgeving om te citeren.
src/app/[locale]/affiliation
Affiliateprogramma betaald op werkelijk geïnde marge, nooit op bruto volume: een partner wint niets door een corridor te pushen die de klant meer kost.
src/app/[locale]/plan-du-site
Sitemap gegenereerd uit de gegevens, met een direct zoekfilter. Elke gepubliceerde pagina verschijnt daar: als een pagina bestaat en ontbreekt in deze kaart, is dat een defect.
Beveiliging(3)
src/lib/rates.ts
Productiebeveiliging: de deterministische tariefbron die in ontwikkeling wordt gebruikt, kan niet opstarten in productie. Het proces weigert te starten in plaats van bevroren prijzen te offerten.
src/middleware.ts
Geografische weigering vóór elke weergave, met een expliciete HTTP 451 in plaats van een 404: wanneer we weigeren, zeggen we waarom. De weigering wordt opnieuw gecontroleerd aan de serverzijde bij het aanmaken van de bestelling, aangezien een IP-adres alleen niets bewijst.
next.config.ts
Beveiligingsheaders op elk antwoord: HSTS met preload, framing geweigerd, MIME-sniffing geblokkeerd, beperkt referrer-beleid, cross-origin isolatie, en microfoon-, geolocatie- en betalingstoestemmingen uitgeschakeld.
Beleid(5)
src/data/payout-rails.ts
Inzamelkanalen — iDEAL, Bizum, BLIK, TWINT, Satispay, MB WAY, QRIS — worden als niet beschikbaar verklaard met hun reden in plaats van verborgen te worden. Ze laten u een handelaar betalen, niet geld ontvangen; elk verwijst naar het kanaal dat wij in plaats daarvan gebruiken.
src/data/payout-rails.ts
Zelle is permanent gemarkeerd als niet beschikbaar: de regels verbieden contractueel commerciële uitbetaling door derden. Geen enkele provider kan er via ons compliant geld doorheen pushen, en dat zeggen is beter dan mensen hoop laten houden.
src/data/payout-rails.ts
Kanalen die zijn gebouwd maar gesloten, dragen hun exacte regelgevende reden: TDS-bronheffing en FIU-IND-registratie voor UPI, een MAS-licentie voor PayNow, SARB-rapportage voor Zuid-Afrika, AUSTRAC-registratie voor PayID, een gelicentieerde partner voor PromptPay. We noemen liever het obstakel dan een datum aan te kondigen.
src/data/assets.ts
Monero staat in de catalogus, gemarkeerd als een activum met verbeterde anonimiteit en wordt niet aangeboden. De Europese anti-witwasregelgeving vereist dat aanbieders het vanaf 10 juli 2027 van de lijst halen; we tonen het en leggen het uit in plaats van het stilletjes te laten verdwijnen.
docs/CONVENTIONS.md
Afdwingbare redactionele regel: geen oprichtingsjaar, geen licentienummer, geen verwerkt volume, geen klantenaantal, geen getuigenis en geen partnerlogo wordt vastgecodeerd in een pagina. Volwassenheid moet komen uit de diepgang van wat geschreven is, nooit uit verzonnen bewijs.