Split Payments Engine

Onomstotelijk bewijs dat een transactie heeft plaatsgevonden in een flexibel uitbetaaljasje.

Split Payments Engine

De ontwikkelingen in FinTech volgen elkaar in razend tempo op. Toch zien we dat op een gebied de innovatie uitblijft: Split Payments, oftewel het verdelen van geldstromen over meerdere ontvangers. Je kan hierbij bijvoorbeeld denken aan het verdelen van de omzet van een festival over meerdere organisatoren, of de aankoop van een bioscoopbon die tegelijkertijd ingewisseld kan worden als restaurantvoucher. In deze situaties ontvangen meerdere gegadigden geld uit die enkele transactie. Vaak wordt dit opgelost door aan het einde van een maand of kwartaal de omzet erbij te pakken, de balans op te maken, facturen op te stellen en het geld over te schrijven. Dat kost niet alleen tijd en moeite, maar maakt het ook moeilijk om in te schatten of de investering zijn tijd en geld wel waard is. Dat moet beter kunnen. Lees je mee?

 

Ledger

Met het bovenstaande probleem in gedachten hebben we een financiële engine ontwikkeld, die eigenlijk dienst doet als een transactionele ledger. Deze ledger houdt van elke transactie bij waar deze vandaan komt, en wat de status van de mutaties is die op dit bedrag zijn uitgevoerd. Het resultaat is dat je elke eurocent kan verantwoorden, en indien gewenst real-time je omzet kan verdelen over meerdere gegadigden: de zogenaamde Split Payments. Zoek je het liever in de Escrow-hoek? Ook daar kan je deze engine voor gebruiken. Je kan namelijk zelf triggers aanleveren waarmee een (deel van het) bedrag wordt uitbetaald. Het klinkt simpel, maar valt of staat met een goede uitvoering. Gelukkig weten wij daar wel raad mee.

 

Technische implementatie

We hebben ons volledig toegelegd op het ontwikkelen van een technische implementatie. Simpel gezegd: wij hebben de code geschreven die gebruikt kan worden in een financieel platform of website. Er zit dus geen interface bij, waardoor we heel flexibel kunnen blijven. Zolang jouw platform kan voldoen aan de eisen die wij stellen aan de input voor onze engine, kun je deze software inzetten op een manier die past bij jouw platform. Zo is de engine in staat om meerdere virtuele bankrekeningen aan te maken op basis van een fysieke bankrekening. Dus als jij jouw bedrag over een of meerdere aandeelhouders moet verdelen: de engine regelt het, en houdt alle verdelingen voor je bij.

Onze implementatie is puur technisch: de software kan dus naadloos opgaan in jouw eigen platform.

Transactional safety

Bij de technische implementatie hebben we transactional safety als uitgangspunt genomen. Daarom kun je elke eurocent die door deze code heen rolt tot zijn bron herleiden. Dit doen we door middel van Event Sourcing en zogenaamde Command Query Responsibility Segregation (CQRS). Deze twee principes zorgen ervoor dat je te allen tijde de herkomst van een bedrag kan achterhalen. Elke mutatie wordt bijgehouden en weggeschreven in de transactionele ledger. Dit heeft zo zijn voordelen: naast dat je geen discussie meer hebt over welk bedrag aan welke partij toebehoort, kan je achteraf de code opnieuw laten uitvoeren voor je transactie. Keer op keer krijg je hetzelfde resultaat dankzij de vastlegging in de ledger. Dat is wat we bedoelen met transactional safety.

 

Escrow services

Met deze software is het mogelijk om Escrow services te implementeren in jouw platform door gebruik te maken van zogenaamde triggers. Een bedrag apart zetten totdat een aankoop of overeenkomst is uitgevoerd is natuurlijk een goed uitgangspunt, maar als je dat voor een substantieel bedrag wilt laten uitvoeren eindig je al snel bij de notaris. Mèt bijbehorende kosten.

Zolang ons systeem het signaal binnenkrijgt, krijgt jouw klant zijn geld. 

Onze engine stelt je in staat om een bedrag wat weggeschreven is naar de door jouw gekoppelde bankrekening automatisch te laten doorbetalen aan de klant (of klanten), zodra een van tevoren gedefinieerde trigger geactiveerd is. Dit kan bijvoorbeeld het digitaal ondertekenen van een contract zijn, of het seintje van een PostNL koppeling dat een pakket afgeleverd is op het adres van je klant: zolang ons systeem het signaal binnenkrijgt, krijgt jouw klant zijn geld. Gelijk oversteken is zo wel heel gemakkelijk geworden.

 

Stack

De engine die we ontwikkeld hebben is een RESTful API die draait op PHP 7.3. We maken gebruik van MySQL om de transacties weg te schrijven naar de database. Het geheel is ingesloten in een League IoC container. De horizontale schaalbaarheid is gewaarborgd omdat de API volledig stateless is en de verschillende onderdelen als Docker Container gedeployed kunnen worden. Het kan dus probleemloos met container orchestration-systemen zoals Kubernetes en ECR overweg.

 

Interesse?

Er is natuurlijk nog veel meer over deze engine te vertellen en een plan te maken over hoe jij gebruik zou kunnen maken van deze software, maar dat doen we het liefst face to face en met de documentatie van beide platformen in de hand. Interesse? Stuur ons een bericht!