Willem Stuursma-Ruwen

Willem is Senior Develop bij Mollie en is verantwoordelijk voor alle developmentactiviteiten bij Mollie. Hij werkt graag aan het de backend: API-design, beveiliging en performance. Tenslotte houdt hij zich bezig met het continu verbeteren van het developmentproces.

Join Mollie at the PHPBenelux Conference 2017

Join Mollie at the PHPBenelux Conference 2017

Mollie has been the sponsor of the Dutch PHP Conference for two years now. We have since become active in the Belgian market as well and would like to bring ourselves to the attention of local developers. We regularly sponsor meet-ups, user groups and conferences. This allows us to do something for all those developers who have chosen Mollie or implemented our API.

We are therefore pleased to announce that we will be the sponsor of the PHPBenelux Conference 2017. The annual PHPBenelux Conference is a two-day event for PHP developers from Belgium, the Netherlands and Luxembourg. The event is held in the Antwerp Hotel Ter Elst, the 27th and 28th of January. Tickets are almost sold out, so be quick! 

Schermafbeelding-2016-12-20-om-10.50.42 (1)

Several of the members of our Development Team will attend both days of the conference. If you’re going to be there and would like to meet our developers, please come talk to us! You will recognize us from our Mollie shirts.

Vacancies at Mollie

We’re always looking for new colleagues. If you’d like to know more or meet up, get in touch for a cup of coffee at our offices. Interested in how we work? Check out our development blog!

Mollie sponsor PHPBenelux Conference 2017

Mollie sponsor PHPBenelux Conference 2017

Al twee jaar zijn we sponsor van de Dutch PHP Conference. Inmiddels is Mollie ook actief in de Belgische markt en daarom brengen we onszelf in België ook graag onder de aandacht bij developers. We sponsoren regelmatig meetups, user groups en conferences. Zo kunnen we iets terugdoen voor alle developers die voor Mollie kiezen of onze API implementeren.

Om deze redenen kunnen we nu dan ook aankondigen dan we sponsor van de PHPBenelux Conference 2017 zijn. De PHPBenelux Conference is een tweedaagse conferentie voor PHP developers uit België, Nederland en Luxemburg. Het evenement vindt plaats op 27 en 28 januari in Hotel Ter Elst in Antwerpen. De laatste kaarten worden op dit moment verkocht!

Schermafbeelding-2016-12-20-om-10.50.42

Een deel van ons developmentteam zal beide dagen aanwezig zijn op de conferentie. Ben je er ook en wil je kennismaken met onze ontwikkelaars, spreek ons dan aan! Je herkent onze  Mollie-shirts.

Vacatures bij Mollie

We zijn altijd op zoek naar nieuwe collega’s. Wil je meer weten of kennismaken, neem dan contact met ons op voor een kop koffie bij ons op kantoor. Wil je meer weten over hoe wij werken, bekijk dan ons development-blog.

Mollie steunt Bits of Freedom

Mollie steunt Bits of Freedom

Sinds deze week is Mollie megabit sponsor van Bits of Freedom. Deze belangenorganisatie komt op voor digitale burgerrechten: het grondrecht op privacy en het grondrecht op communicatievrijheid van de Nederlandse burger.

Bits of Freedom organiseert onder andere de Big Brother Awards, waar ieder jaar personen, bedrijven, overheden en voorstellen te kijk worden gezet die het afgelopen jaar controle op burgers en inbreuken op privacy hebben bevorderd. Komende maandag worden de awards uitgereikt in de Stadsschouwburg in Amsterdam. De genomineerden voor de award zijn minister Edith Schippers voor volksgezondheid, AIVD-hoofd Rob Bertholee, WhatsApp, de gemeente Rotterdam, staatssecretaris Dijkhoff en het Verbond van Verzekeraars.

Tenslotte lobbyt Bits of Freedom voortdurend in Den Haag en Brussel en schreven ze voor de verkiezingen van 2010 en 2012 een Manifest voor de internetvrijheid.

Hiermee komt Bits of Freedom op voor privacy en vrijheid op het internet. Maar die privacy en vrijheid zijn helaas niet vanzelfsprekend. Iedereen kent bijvoorbeeld de advertenties die je achtervolgen als je één keer een kledingstuk in een digitaal winkelmandje hebt gedaan. Of het Amerikaanse PRISM-systeem waarmee internetverkeer in bulk afgetapt wordt. De AIVD mag dit nu ook.

Mollie probeert met technische maatregelen de gegevens en privacy van haar klanten zo goed mogelijk te beschermen. Maar alleen technische maatregelen zijn hierin niet genoeg. Een maatschappelijk debat is noodzakelijk om echte verandering op dit gebied te kunnen bewerkstelligen en Bits of Freedom neemt hierin het voortouw.

Om deze reden zijn we sponsor geworden van Bits of Freedom.

We bevinden ons hierbij in het gezelschap van andere internetbedrijven die je misschien wel kent: SIDN, Leaseweb, Bitonic, XS4ALL, Voys en PCExtreme.

Mollie en Bits of Freedom staan achter hetzelfde doel: een internet dat open is voor iedereen, waar iedereen informatie digitaal kan delen en waar privé-communicatie privé blijft.

BOOKEO maakt het configureren van Mollie eenvoudig via OAuth 2.0

Onlangs heeft BOOKEO, een online boekings- en reserveringssysteem, Mollie geïntegreerd als payment provider voor Europa. Klanten van BOOKEO kunnen hun account nu eenvoudig aan hun Mollie-account koppelen.

Screen-Shot-2016-11-28-at-11.39.42-768x841

Doorgaans bestaan koppelingen tussen Mollie en SaaS-platformen enkel uit de mogelijkheid om Mollie te gebruiken voor de betalingen. Vaak is er dan alleen een tekstveld aanwezig waar de gebruiker de API-key kan invoeren. BOOKEO heeft er echter voor gekozen om onze OAuth 2.0 API te integreren.

De integratie van een platform met Mollie via OAuth 2.0 heeft een aantal voordelen ten opzichte van het simpelweg uitwisselen van een API-key:

  • Verkopers kunnen hun account linken door gebruik te maken van de knop “Connect met Mollie” en hoeven geen API-keys uit te wisselen.
  • Het is duidelijk zichtbaar voor de verkoper tot welke gegevens van het Mollie-account het platform toegang heeft.
  • Het platform kan eenvoudigen switchen tussen de test- en livemodus en ontvangt de status van betalingen direct.
  • Het systeem van Mollie wordt dieper geïntegreerd in het platform. Zo kun je de uitbetalingen tonen, de facturen, het openstaande tegoed en de datum waarop de volgende uitbetaling plaatsvindt.
  • Tot slot maakt OAuth 2.0 het mogelijk om via Mollie kosten door te berekenen aan de verkoper voor het gebruik van het platform.

Zoals je kunt zien biedt de integratie via OAuth 2.0 significante voordelen. Bekijk onze handleiding voor het integreren van Mollie Connect als je hier meer over wilt weten.

button-small

BOOKEO heeft zelf ook een handleiding gemaakt voor het koppelen met Mollie. Deze handleiding laat zien hoe eenvoudig de integratie met Mollie kan worden opgezet.

Wil je meer weten? Neem dan even contact met ons op.

Mollie-developers dragen bij aan Open Source

Mollie-developers dragen bij aan Open Source

Bij Mollie organiseren we regelmatig intern een zogenaamde 20% dag: een dag waarop developers aan iets kunnen werken wat ze interessant vinden. Dit naar het model van Google's 20% day, een concept waarbij developers van Google één dag in de week zelf mochten kiezen waar ze aan wilden werken. Naar verluidt zijn hier producten zoals Adwords en Gmail uit voortgekomen. Inmiddels is Google er zelf ook alweer deels op teruggekomen maar het concept blijft populair bij startups: het is leuk om af en toe aan wat anders te werken dan wat de sprint dicteert.

Vorige week vrijdag hadden we zo'n 20% dag, maar dan in een special open source thema: een dag waarop alle developers binnen werktijd aan hun favoriete open-source projecten kunnen werken.

Het blijkt in de praktijk nog lastiger dan gedacht om zo'n dag in te vullen. Binnen één dag is er maar beperkt tijd en dus kun je alleen maar werken aan kleine features of bugfixes, zeker als je het project waar je aan wilt werken nog goed moet leren kennen. En alleen het schrijven van de code is niet voldoende, je moet ook een pull request openen en de maintainer van het project overtuigen deze te mergen. Doordat maintainers vaak in andere tijdzones zitten en hun eigen prioriteiten hebben verloopt de communicatie langzaam.

Om deze redenen hebben we voornamelijk kleine verbeteringen rondom tooling en enkele kleine features aan onze favoriete projecten bijgedragen. Een selectie uit het resultaat van de dag:

git-768x432

Een aantal developers heeft daarnaast gewerkt aan onze eigen open source API clients. Hier valt altijd nog wat aan te verbeteren en er zijn ook regelmatig pull requests, die we zelf ook moeten reviewen en mergen.

Bijdragen aan deze open source libraries heeft ons dieper inzicht gegeven in de libraries zelf en de tooling en frameworks die deze projecten gebruiken. Een pull request openen en je overgeven aan de review van een maintainer is spannend. We leren zo de dependencies die we zelf gebruiken nog beter kennen. En het belangrijkste: het is leuk om iets terug te doen voor opensourceprojecten die we zelf gebruiken.

Ook buiten deze 20% dag dragen we regelmatig bij aan opensourceprojecten. Zo hebben we eerder al kleine wijzigingen bijgedragen aan PHPUnit, Phake, xmlseclibs en andere opensourceprojecten.

Een interview met Thijs, programmeur bij Mollie

Een interview met Thijs, programmeur bij Mollie

“Hoe ziet een gemiddelde werkdag van een programmeur bij Mollie er uit?” Deze vraag krijgen we vaak tijdens sollicitatiegesprekken. Om deze vraag voor iedereen te kunnen beantwoorden hebben we Thijs geïnterviewd. Thijs werkt nu ongeveer een jaar als programmeur bij Mollie.

Thijs, hoe ben je bij Mollie terecht gekomen?

Tijdens mijn opleiding aan de Universiteit van Amsterdam had ik de mogelijkheid om twee maanden stage te lopen voor studiepunten. Bij mijn vorige baan had ik Mollie al eens geïmplementeerd als payment service provider. Ik was onder de indruk van hun API, technische documentatie en bedrijfscultuur, dus besloot om te solliciteren naar een stageplaats. Tijdens de stage werkte ik aan het toevoegen van cadeaukaarten als betaalmethode. Daarnaast heb ik een intern onderzoek uitgevoerd naar foutpercentages binnen de Mollie-applicaties en hoe deze invloed hebben op Mollie. Na mijn stage bood Mollie me een baan aan als developer.

Wat heb je geleerd tijdens je stage?

Bij mijn studie Computer Science ligt de focus op onderwerpen als compiler design, sorting algorithms, data structures en een hoop wiskunde. Allemaal erg interessante onderwerpen, maar het heeft weinig te maken met het werken aan een live applicatie die iedere seconde van de dag API-requests verwerkt. Bij Mollie heb ik ook geleerd om binnen een team te werken. Ik heb geleerd wanneer ik object oriented design patterns kan toepassen en wanneer niet. Ik heb geleerd hoe ik mijn code op de juiste manier kan testen om mijn implementatie te controleren en hoe ik producten kan verbeteren en bouwen die dagelijks gebruikt worden. Het is veel inspirerender om aan een echt product te werken in plaats van de theoretische onderwerpen van mijn studie.

Na mijn stage heb ik aan verschillende projecten gewerkt bij Mollie: belangrijke updates zoals het opzetten van een backupconnectie met een tweede iDEAL-acquirer en onze open source API-clients. Ik heb ook aan kleinere wijzigingen gewerkt, zoals de mogelijkheid dat klanten een omschrijving kunnen meegeven bij een refund en het verbeteren van de verificatie van BTW-nummers.

Kan je ons iets vertellen over het project waar je momenteel aan werkt?

Momenteel maak ik deel uit van het Payments-team. We zijn bezig om een nieuwe betaalmethode toe te voegen om zo onze propositie voor onze Belgische klanten te verbeteren. De afgelopen weken heb ik ervoor gezorgd dat de correcte transactiekosten voor deze betaalmethode worden berekend. Ik heb unittests toegevoegd om mijn implementatie te controleren. Ik werk ook aan het reconciliatieproces van de betaalmethode – het proces waarbij we inkomende betalingen op onze bankrekening koppelen aan openstaande transacties in ons systeem. We krijgen steeds meer betalingen binnen op ons bankoverzicht. Om dit zo goed mogelijk te laten verlopen heb ik een aantal refactorings doorgevoerd om hierbinnen met inputstreams te werken (met behulp van PHP’s yield statement).

Hoe ziet jouw dag bij Mollie er ongeveer uit? 

Ik kom rond half 10 op kantoor. Ik begin met programmeren aan een kleiner issue, of ik review de code van een collega, totdat iedereen klaar is voor onze dagelijkse stand-up. De rest van de dag breng ik door met programmeren, reviewen of brainstormen met het team over hoe we dingen kunnen aanpakken. Daarnaast hebben we regelmatig meetings met het team zoals de sprintplanning of een terugblik of evaluatie. Gisteren heb ik deelgenomen aan een conference call met een van de leveranciers. Rond het middaguur hebben we lunch op kantoor, bereid door onze eigen chef. Als het zonnig is, brengen we graag wat tijd door op ons balkon.

Wat vind je leuk aan werken als developer bij Mollie?

Het Development-team van Mollie is net zo geïnteresseerd in de ontwikkeling van software als ik, wat heel anders is dan bij mijn vorige baan. Er zijn dan ook veel tools beschikbaar, zoals voorgeconfigureerde virtual machines, uitgebreide testsuites, een continuous integration-omgeving en handleidingen om te helpen bij het configureren van debugging en profiling.

Ook gaan we naar conferenties. In juni is de Development-afdeling bijvoorbeeld naar de React Amsterdam en de Dutch PHP Conference geweest, wat beide heel informatief was. Mollie groeit erg hard en het is cool om daar deel van uit te maken.

Conclusie

We hopen dat dit inzicht geeft in wat werken bij Mollie voor een developer inhoudt. Wil je meer weten? Lees dan verder, bekijk onze vacature en kom gerust langs voor een kopje koffie!

Nieuwe feature: facturen geautomatiseerd ophalen via de API

Al langere tijd is het mogelijk om verschillende gegevens van je account via de API op te halen. Hier hebben we nu ook de facturen aan toegevoegd.

Via deze API kun je je facturen geautomatiseerd bij ons ophalen. Net als de API's voor uitbetalingen en profielen werkt deze API via onze Mollie Connect OAuth koppeling.

Deze feature is vooral geschikt voor partijen die via apps aanvullende diensten op ons platform willen leveren, zoals koppelingen met boekhoudsystemen of alternatieve dashboards.

An interview with Thijs, developer at Mollie

An interview with Thijs, developer at Mollie

During interviews with developers we are often asked: what does an average working day look like for a developer at Mollie? To publicly answer that question, we've interviewed Thijs, who has been a developer at Mollie for about a year now.

Thijs, how did you start at Mollie?

During my studies at the University of Amsterdam, I had the option to take a two month internship for study credits. At my previous job, I had implemented Mollie as a payment service provider. Impressed with their API, documentation and work culture, I decided to apply for an internship.

During the internship I worked on adding support for gift cards to the Mollie API. I also did an internal research project on error rates and on how they impact Mollie. After my internship, Mollie extended me an offer for a position as a developer.

What did you learn during your internship?

For the most part, my study Computer Sciences focuses on topics like compiler design, sorting algorithms, data structures and a lot of math. All very interesting subjects, but a far cry from working on a live application that processes API requests each and every second of the day. At Mollie, I learned how to work as part of a team. I learned where to to apply object oriented design patterns, and where not to. I learned to test my code properly to validate my implementations. I learned to create and improve products that people use on a daily basis. Working on an actual product and growing the product is much more inspiring than the theoretical topics of my studies.

After my internship, I've worked on various things at Mollie - important updates like adding a fallback connection to a secondary iDEAL acquirer, and working on our open source API clients. I've worked on smaller changes as well, like allowing our customers to add descriptions to refunds, or improving the verification of VAT numbers.

Can you tell us a bit about the project you are currently working on?

At the moment, I am part of the Payments team. We're in the process of adding a new payment method to improve our proposition for our Belgian customers. In recent weeks I've been working on making sure we charge the correct fees for the new product, as well as adding unit tests to ensure my changes work as intended. I am also working on the payment method's reconciliation - the process where we match incoming transactions on our bank statements to the payments in our back office. We are getting more and more transactions on our bank accounts, so to ensure optimal performance, I've refactored our statement handler system to support input streams (using PHP's yield functionality, among other things).

What are some activities that are part of your daily routine?

Usually I come in around half past nine. I'll start coding on a smaller issue, or review a colleague's code, until everyone's in for our daily stand up. The remainder of the day I spend coding, reviewing, or brainstorming with the team on how we should tackle current issues.

Occasionally, we have team meetings like a sprint planning or a retrospective. Yesterday, I participated in a conference call with one of our suppliers. Around noon, we'll have lunch at the office, which is prepared by our own chef. When it's sunny outside, we like to spend some time on our office balcony as well.

What are some things you like working as a developer at Mollie?

Mollie has a team of developers who are all just as interested in software development as I am, which is very different from my previous job. There is lots of tooling available, such as pre-configured virtual machines for development, an extensive test suite, a continuous integration environment, and guides on how to set up debugging or profiling. We go to conferences as well. In June, the development department went to the Dutch PHP Conference, which was really informative.

Mollie is growing really quickly as well, and it's cool to be a part of that.

Conclusion

We hope this gives you some insight in what working at Mollie as a developer entails. If you would like to know more, why not drop by for a cup of coffee?

API changes May—August 2016

August 2016

July 2016

  • Added the ability to create mandates through the API (if enabled on your account). This is especially useful when pre-existing mandates can be used instead of having to get a new mandate from the consumer.
  • Added the description parameter to the create payment refund endpoint. Use this parameter to add a description, which we will pass to the consumer when possible.
  • Added consumer details for the Belfius Direct Net payment when retrieving a payment.
  • Updated the payment method icons in list methods.
  • Changed the minimum for Bancontact to €0.02. You can use this minimum for setting upfirst recurring payments. If you want to use this minimum for regular payments, please contact us to enable this on your account.

June 2016

May 2016

  • It is now possible for consumers to change the language on our hosted payment pages. The locale selected by your customer will be stored in the payments resource's locale property.
  • Added API key access to refunds top level endpoint. Use this endpoint to retrieve all refunds on the payment profile the API key is linked with.
  • Added mandate detail cardExpiryDate to credit card mandates.
  • Added OAuth2 parameters where needed and improved documentation for Issuers, Methods, OAuth, Payments and Refunds.
  • Added new user guide Recurring payments to explain how to get started with Mollie Recurring.
  • Added recurringType field to Payments API to support first and recurring payments.
  • Added new Customers Mandates API v1/customers/*/mandates that allows an application to find out whether a customer has valid accounts or cards that can be charged with recurring payments.
Previous entry: API changes January—April 2016.

From the development department: Migrating to Composer at Mollie

From the development department: Migrating to Composer at Mollie

logo-composer-transparent-244x300

At Mollie, we recently switched to Composer to manage our applications' dependencies. Composer is an application-level package manager for the PHP programming language that provides a standard format for managing dependencies of PHP software and required libraries. Using Composer is considered a best-practice in PHP application development.

Before our switch to Composer, we managed dependencies by creating local copies of their repositories and including them in our application using Git submodules. Disadvantages of this approach were that it took a lot of effort to add a new dependency and that it was very hard to update the dependencies. In practice, this resulted in our developers creating their own solutions instead of using high quality open source packages and us quickly getting behind on whatever package we did manage to add.

Implementation

We decided to follow Composer best practices. The required dependencies are configured in the file composer.json, which is managed by the Composer binary. The actual versions of dependencies installed in the application are stored in the composer.lock file, which is for that reason under version control. This way, when someone runs composer install, the installed dependency's versions are always predictable. The dependencies themselves are stored in vendor/ and are not under version control. This is the recommended way to use Composer.

During deploys, after copying the application code to the web server, each web server will run Composer to install the non development dependencies. Composer uses a local cache so if the dependencies are unchanged as compared since the previous deploy, no network traffic is initiated.

For local development and during integration similar dependency installing steps are in place.

We've configured a GitHub OAuth token on our servers, so that we don't run into rate limits when building or deploying our application.

Issues encountered

Most of the migration went rather smooth. Changes consisted mostly of removing existing autoloaders, require and include statements, and removing git submodules. We created some Make targets to help developers smoothly transition from Git submodules to Composer installed dependencies: git does not remove existing submodule folders if you remove the submodule from VCS.

Not all our dependencies followed semantic versioning equally well. We encountered issues with changed behaviour in Smarty when merging compiled templates. This required us to pick a Smarty version a few minor versions down from the latest version. All in all, changing Smarty versions using Composer was a piece of cake.

We also ran into trouble with several Zend Framework 1 components. ZF1 is a dependency we picked a long time ago and has not aged so well. Separate packages for each component are available via Composer. However, some did not declare all of their dependencies properly. Another issue was that some had calls to Zend_Loader to load extra classes, which doesn't work. Our solution was to force Composer to load these extra classes using class_exists(), so that the Zend_Loader calls could be skipped. We've opened some pull requests with ZF1 to resolve these issues.

A final issue that we encountered was that, with the default Composer settings, new packages would be added at the bottom of the list in the composer.json file. This would cause lots of merge conflicts when different teams would add dependencies in their branches. We enabled the sort-packages setting and this worked much better.

Security considerations

Composer downloads code from the internet and adds it to our applications, which execute the code. Generally, downloading code from the internet and running it is considered a bad idea™, so we had to come up with some measures to mitigate this risk. The biggest risk is that the package is replaced by a different (evil) package, during transit or by replacing the package on Packagist.

In its default configuration, Composer only uses the HTTPS protocol and (finally) with the launch of PHP 5.6 all HTTPS streams verify the certificates by default, so the risk of mitm replacement of the packages is low. Composer uses a lock file to lock a dependency to a certain version, so no unexpected updates of packages will be installed. The team behind Composer has improved Composer's security a lot over the years and with the release of v1.0.0 three months ago we now feel confident that Composer won't do anything unexpected in this regard.

Another risk is the presence of vulnerabilities or security issues in packages. To protect against this risk, we've added roave/security-advisories as a dependency. This package does not contain any code but marks itself incompatible with known vulnerable packages. Furthermore, we have integrated the SensioLabs Security Advisories Checker (which could conveniently be installed through Composer) so that during every build in our CI process all dependencies are checked against known vulnerabilities.

Results

Our installed dependencies are easier to keep up to date, reducing security risks. Developers are happy with the convenience of Composer over Git submodules. Thanks to the SensioLabs Security Advisories Checker, we have good insight on the known vulnerabilities in our dependencies. Our deployment process has been improved because we have replaced slow git pull operations with fast Composer installs, cutting deploy time. Already several high quality open source packages have been added to our applications, reducing development effort for new features.

Overall, we have improved security, faster deploys and higher velocity when developing new software thanks to Composer.

 

Werken bij Mollie als developer

Werken bij Mollie als developer

Geen mooie recruitmentverhaaltjes, maar waarheid: binnen Mollie komt techniek altijd op de eerste plaats. Klanten roemen ons om onze duidelijke API, goede technische service en fijne API-clients. In 2015 zijn we dan ook met ruim 100% gegroeid en we liggen op schema voor 2016 om deze groei nog een keer te halen. De sterke focus van Mollie op techniek is hierin zeker een belangrijke factor. 

Om deze groei te ondersteunen en onze ambities waar te kunnen maken, ben ik op zoek naar developers om ons team te versterken. Op dit moment bestaat ons Development-team uit twaalf developers, ondersteund door een visual designer.

Als developer begin je bij Mollie in het Operations Team, waarbij je helpt met het maken van kleine aanpassingen, het oplossen van bugs en het helpen van klanten met hun integratieproblemen. Langzaam leer je zo alle aspecten van Mollie kennen: betalingen, boarding, uitbetalingen, onze diverse integraties en modules. Hierna groei je door naar één van onze projectteams.

We hebben een breed scala aan problemen waar je aan kan werken. Zo hebben we een eindeloze hoeveelheid koppelingen, voor betalingen maar ook dataleveranciers voor boarding, en natuurlijk banken voor betaalopdrachten en afschriften. We zijn altijd op zoek naar optimalisaties in onze processen. Zo hebben we bijvoorbeeld een applicatie die van de legitimatiebewijzen die klanten uploaden automatisch controleert (met OpenCV) of de achterkant er wel bij zit. Dit scheelt ons honderden telefoontjes per maand. Aan de andere kant hebben we ook een single page application gebouwd in React, welke weer met een hele andere set uitdagingen komt.

Binnen development ligt er altijd een sterke focus op kwaliteit. We gebruiken code-reviews, test driven design en natuurlijk continuous integration en deployment om de kwaliteit van onze applicaties zo hoog mogelijk te houden. Zo blijft er tijd over om aan nieuwe features te werken, in plaats van dat je al je tijd kwijt kan zijn aan bugs of storingen.

Je kan natuurlijk niet altijd aan het programmeren zijn. De lunch wordt verzorgd. We gaan regelmatig naar conferenties, hosten meetups bij ons op kantoor en we hebben regelmatig informele activiteiten op kantoor, zoals de Mollie Game night. Inmiddels weten we allemaal dat Robbert de beste Quake III speler van Mollie is.

Wil je meer weten over werken bij Mollie, kijk dan eens bij onze vacatures. Wil je eerst een keer kennis maken met Mollie, neem dan contact met mij op voor een kop koffie bij ons op kantoor.

Mollie beste HTTPS-beveiliging onder PSPs

Deze week plaatste een PSP uit Nederland een update over een vernieuwd veiligheidsprotocol: een overstap naar TLS 1.2 voor de encryptie van HTTPS-verkeer. Dit omdat ze de eerdere standaard TLS 1.0 niet veilig meer vonden. Hiermee meent deze partij dat de veiligheid van de gegevens van hun klanten weer "blijvend gewaarborgd kan worden".

HTTPS is een techniek waarbij het verkeer tussen een webserver en een browser of client versleuteld en geauthenticeerd is. Het is een zogenaamde transport-level beveiliging. De laatste tijd stappen steeds meer websites over op HTTPS.

Wanneer het veilige HTTPS-protocol gebruikt wordt, is een groen hangslot zichtbaar in de browser. Dit garandeert dat je met de partij communiceert waarmee je denkt te communiceren, dat niemand de verbinding heeft onderschept en dat dankzij encryptie niemand de verstuurde data kan meelezen. Deze encryptie kan met verschillende ciphers (encryptiealgoritmes) uitgevoerd worden. De webserver en de browser onderhandelen over de te gebruiken cipher. Sommige ciphers zijn veiliger dan andere, maar niet alle browsers ondersteunen alle ciphers. Mollie kiest ervoor om bepaalde ciphers niet te ondersteunen, omdat aangetoond is dat ze relatief gemakkelijk gekraakt kunnen worden.

Daarnaast zijn er nog diverse extra maatregelen die een website kan gebruiken om te zorgen dat de verbinding veilig is. Voorbeelden hiervan zijn HTTP Strict Transport Security, dat voorkomt dat malafide tussenpartijen de verbinding van HTTPS naar HTTP downgraden (Mollie implementeert dit sinds september 2013) en Forward Secrecy, dat voorkomt dat historische communicatie kan worden gelezen, zelfs als de sleutels die hierbij gebruikt werden van de servers gestolen worden.

De kwaliteit van de HTTPS-implementatie van een domein kan eenvoudig vergeleken worden via de industry standard analysewebsite SSL labs. SSL labs kwam met de volgende resultaten:

Payment Service Provider Geteste domein Score volgens SSL Labs
Mollie www.mollie.com

Screen-Shot-2016-06-22-at-14.41.25

PSP #1 www.a...com

Screen-Shot-2016-06-22-at-14.41.32

PSP #2 www.m...com

Screen-Shot-2016-06-22-at-14.41.32

PSP #3 www.p...nl

Screen-Shot-2016-06-22-at-14.41.16

PSP #4 www.s...nl

Screen-Shot-2016-06-22-at-16.12.18

PSP #5 www.b...nl

Screen-Shot-2016-06-22-at-14.41.44

PSP #6 www.t...nl

Screen-Shot-2016-06-22-at-14.41.44

Conclusie

De meeste Payment Service Providers hebben hun transport-level beveiliging prima op orde, maar kunnen nog kleine verbeteringen maken om de veiligheid te verhogen. Twee geteste PSP's zijn nog kwetsbaar voor de OpenSSL Padding Oracle vulnerability (CVE-2016-2107) en krijgen daarom een F van SSL Labs.

Natuurlijk is de transport-level beveiliging niet het enige waaruit het niveau van de beveiliging afgeleid kan worden. Andere zaken op applicatie- of organisatieniveau die impact hebben op de veiligheid hebben zijn bijvoorbeeld:

  • Hoe worden brute-force wachtwoordaanvallen voorkomen?
  • Hoe worden social engineering aanvallen voorkomen?
  • Wat doet de Payment Service Provider om XSS- of SQLi-kwetsbaarheden te voorkomen?
  • Wordt encryptie toegepast op cold data?
Mollie past veiligheid op alle niveaus toe. Zo laat Mollie jaarlijks een penetratietest uitvoeren, heeft een security-awarenessbeleid en -trainingen voor alle personeelsleden, onderzoekt de beveiliging van haar leveranciers proactief en controleert actief op beveiligingsproblemen in haar applicaties. Uiteraard kiezen we ook op technisch niveau voor de beste beveiliging.

Veiligheid van gegevens kun je namelijk niet waarborgen door een eenvoudige technische wijziging te doen: het is een continu proces en moet op ieder niveau in de organisatie doorgevoerd worden. Mollie loopt hierin voorop.

Update 29 junide PSP uit het begin van het artikel heeft de CVE-2016-2107 kwetsbaarheid inmiddels opgelost.

Mollie host opnieuw de SaaS CTO meetup

Op dinsdag 28 juni zal Mollie voor de tweede keer de meetup van SaaS CTOs Amsterdam hosten. SaaS CTOs Amsterdam is een maandelijkse meetup voor CTO's die kennis willen delen en willen netwerken met andere CTO's.  Op het programma staat een talk van Sander Nagtegaal en Marcel Panse (founders van teletext.io) over Serverless architecture: infinite scale without maintenance.

Verder is er een diner, drankjes en de gelegenheid om te netwerken.

Vind je het interessant om hierbij te zijn, meld je dan aan via de onderstaande knop:

RSVP

NB: de meetup is alleen bedoeld voor CTO's.

Mollie sponsor Dutch PHP Conference

Mollie sponsor Dutch PHP Conference

Nadat we in april al sponsor waren van de React Amsterdam conferentie, kunnen we nu ook aankondigen dan we sponsor van de Dutch PHP Conference zijn. Daarnaast sponsoren we ook de pizza's van de Hackaton. De Dutch PHP Conferentie is een driedaagse conferentie voor PHP en Mobile developers en wordt ieder jaar in juni gehouden in de RAI Amsterdam.

Afgelopen jaren hebben we de conferentie al drie keer bezocht met ons team. Binnen Mollie vinden we het belangrijk om ook af en toe iets bij te dragen aan de developmentcommunity van Amsterdam. Zo hebben we al twee keer AmsterdamPHP gehost en sponsoren we af en toe conferenties of meetups. Deze sponsoring is iets wat daar logisch uit volgt.

Ons developmentteam is vrijdag 24 juni en zaterdag 25 juni aanwezig op de conferentie. Ben je er ook en wil je kennismaken met onze ontwikkelaars, spreek ons dan aan! Je herkent ons aan onze hippe schoenen of Mollie-shirts.

Vacatures bij Mollie

We zijn altijd op zoek naar nieuwe collega's. Wil je ook bij een hip internetbedrijf met ambitieuze plannen werken, neem dan contact met ons op voor een kop koffie bij ons op kantoor.

API changes January—April 2016

Occasionally, we will add new resources, new fields or new possible values to existing fields to the Mollie API. All changes will be documented in the API changelog. These changes allow you to do more with your current integration with Mollie.

In the first four months of 2016, we have launched new APIs to create a representation of your customers with us, added richer information to the credit card payment detail object and made API improvements that ease reconciliation of settlements.

If you have any feedback on our APIs, please do not hesitate to contact us.

April 2016

  • Added checkoutPreviewUrl preview URL to the links object in Get profile.
  • Added refunds top level endpoint. Use this endpoint to retrieve all refunds on your organization, instead of on a single payment. Requires an OAuth token.
  • Added payment detail cardFingerprint to credit card and Bancontact/Mister Cash payments. It is a randomly generated identifier for each card (unique per Mollie account) usable for identifying returning customers and fraud detection.

March 2016

  • Added payment status failed for payments that failed and that can't be completed by another payment method.
  • Added the Customers API and the related Customer Payments API. You can use the Customer API to create a representation of your customer with us. This enables you to use the more advanced features of Mollie Checkout, such as speeding up the checkout process for returning customers. Payment preferences are remembered to make future checkouts faster. No customer sign-up is required.
  • Added the feeRegion field to the credit card payment detail object. You can use this field to determine the rate we will charge for this credit card payment.

February 2016

  • Added the ability to cancel partial credit card refunds through the API. Partial credit card refunds can be cancelled up until midnight of the day they were created.
  • Added the cardAudience, cardCountry, cardCountryCode and cardLabel fields to the credit card payment detail object.You can use these fields to gain a deeper insight in which cards are used by your consumers.
  • Added the refundIds field to the settlements resource It will contain all refunds that were withheld from your settlement.You can use this field to improve reconciliation.

January 2016

  • Added the reference parameter to the List settlements REST operation.Use this parameter to retrieve the settlement using the reference you can find on your bank statement or on your invoice.

Mollie sponsor van React Amsterdam

Mollie sponsor van React Amsterdam

Mollie is dit jaar sponsor van React AmsterdamReact Amsterdam is een ééndaagse conferentie over React, de declaratieve Javascript library voor het maken van user interfaces. React is oorspronkelijk ontwikkeld door programmeurs van Facebook. We maken een hoop gebruik van deze library, onder andere tijdens de ontwikkeling van ons nieuwe Dashboard.

Naast sponsor zijn we ook met een groot team aanwezig op de conferentie en de socials. Ben je er ook en wil je kennismaken met onze ontwikkelaars, spreek ons dan aan! Je herkent ons aan onze hippe schoenen.

react

Vacatures bij Mollie

We zijn altijd op zoek naar nieuwe collega's. Wil je ook bij een hip internetbedrijf met ambitieuze plannen werken, neem dan contact met ons op voor een kop koffie bij ons op kantoor.

Betaalmodules van Mollie voor webshops: december 2015

Mollie heeft in de loop der jaren betaalmodules ontwikkeld voor uiteenlopende webshopsystemen. De ontwikkeling van deze webshopsystemen staat echter niet stil en de ontwikkeling van de bijbehorende modules dus ook niet. In deze blogpost een overzicht van recente ontwikkelingen en een vooruitblik.

woocommerce-logo-e1429552613105-300x76

WooCommerce

In augustus lanceerden we al de sterk verbeterde plugin voor WooCommerce. Inmiddels is deze module bijgewerkt met ondersteuning voor SEPA incasso, verbeterde ondersteuning voor overboeking en diverse bugfixes. De plugin kan gedownload worden via de Wordpress Plugin Directory.

We raden al onze klanten die WooCommerce gebruiken aan om te upgraden naar de laatste versie.

opencart-logo

OpenCart

Aan de OpenCart module hebben we diverse verbeteringen gemaakt op het gebied van de return-pagina, het afhandelen van geannuleerde en verlopen betalingen en daarnaast hebben we de compatibiliteit met diverse andere OpenCart plugins verbeterd.

We raden al onze klanten die OpenCart gebruiken aan om te upgraden naar de laatste versie.

ps logo share-300x125

PrestaShop

Voor PrestaShop hebben we extra mogelijkheden toegevoegd om de omschrijving van de order aan te passen met bijvoorbeeld de naam van de klant. Daarnaast zijn er diverse aanpassingen voor overboekingen gemaakt en zijn diverse kleine bugs opgelost.

We raden al onze klanten die PrestaShop gebruiken aan om te upgraden naar de laatste versie.

Magento-Logo-medium-300x140

Magento

Ook bij Varien, de ontwikkelaars van Magento, zitten ze niet stil. Onlangs is Magento2 gelanceerd. Mollie werkt aan een versie van onze module, die compatible is met Magento2. Deze module zal alle betaalmethodes via Mollie ondersteunen op een manier die compatible is met bestaande plugins die extra functionaliteiten aan betaalmethodes toevoegen. We hopen de nieuwe Magento module te kunnen lanceren in het eerste kwartaal van 2016.

SaaS CTO-meetup erg geslaagd

Afgelopen dinsdag hostte Mollie de meetup van SaaS CTO Amsterdam, welke elke maand georganiseerd wordt door Ali Seyedmehdi, CTO van Publitas.

WP 20150922 20 15 24 Pro-1024x576

Na de presentatie van Joost de Vries (CTO van CloseAlert) over de evolutie van de stack van zijn applicatie, was er nog ruimte voor een biertje en discussie.

De meetups zijn elke maand, als je er eentje bij wilt wonen kun je je bij de Meetupgroep aanmelden.

Mollie host de meetup van SaaS CTOs Amsterdam

Op dinsdag 22 september zal Mollie de meetup van SaaS CTOs Amsterdam hosten. SaaS CTOs Amsterdam is een maandelijkse meetup voor CTO's die kennis willen delen en willen netwerken met andere CTO's.  Op het programma staat een talk van Joost de Vries over de stack-evolutie van Closealert.

Het programma van de avond is:

  • 19:00 diner
  • 19:45 kennismaking
  • 20:00 talk (20 min) en discussie
  • 21:00 social
  • 22:00 eind
Vind je het interessant om hierbij te zijn, meld je dan aan via de onderstaande knop:

RSVP

NB: de meetup is alleen bedoeld voor CTO's.

Uitbetaaloverzichten in MT940, CSV en PDF

Voor een goed overzicht en een volledige boekhouding is het belangrijk om te weten welke betalingen al uitbetaald zijn aan je organisatie, en welke kosten of andere inhoudingen hierbij zijn toegepast.

Om dit helemaal goed inzichtelijk te maken, hebben we de afgelopen periode de mogelijkheden om de betalingen en inhoudingen in een uitbetaling te exporteren verbeterd. Er zijn nu drie formaten beschikbaar:

  • MT940 (voor exporteren in boekhoudsoftware);
  • CSV (voor exporteren naar boekhoud- of maatwerksoftware; compatible met de aflettermodule van LINQ5 voor Exact Online);
  • PDF (voor geprinte overzichten, bijvoorbeeld voor je boekhouder).

Al deze formaten bevatten alle betalingen die uitbetaald zijn, alle refunds die ingehouden zijn, alle kosten, de BTW die hierover is berekend (indien van toepassing) en de ingehouden en uitbetaalde rolling reserve voor creditcardtransacties.

Je vindt de exports door in het Mollie Beheer naar Uitbetalingen te gaan en vervolgens op Uitbetaalreferentie te klikken. Onderaan het transactieoverzicht staan drie knoppen, om de exports mee te genereren.

Mollie API-client voor PHP ondersteunt persistent HTTP connections

De communicatie tussen de Mollie API-clients (bijvoorbeeld webshops) en de Mollie API loopt via HTTPS. HTTPS is een protocol waarbij HTTP over een met TLS beveiligde TCP-verbinding wordt gestuurd. Met andere woorden, voor elk verzoek aan de Mollie-servers, gebeurt het volgende:

  • er wordt een netwerksocket geopend;
  • Mollie onderhandelt met de API-client (webshop) over de TLS-beveiliging;
  • Mollie wisselt sessiegegevens uit met de API-client;
  • de daadwerkelijke gegevens kunnen nu worden verzonden.

Efficiëntere verbinding voor API-grootverbruikers

Het opzetten van deze TCP-verbinding vereist een uitgebreide communicatie tussen de client en server. Bij de meeste API-clients moet voor elke API-call een nieuwe TCP verbinding opgezet worden, waarbij de client en server elke keer opnieuw moeten verbinden en opnieuw over de TLS instellingen moeten onderhandelen. HTTP persistent connections zijn in het leven geroepen om dit probleem op te lossen. Wanneer 'persistent' (aanhoudende) connecties gebruikt worden, houden de client en de server de aangemaakte socket gedurende een bepaalde periode open (bijvoorbeeld 15 seconden). Het voordeel hiervan is dat nieuwe HTTP-verzoeken gewoon over de al openstaande socket verzonden kunnen worden.

Voor webshops maakt dit weinig verschil, aangezien zij meestal maar enkele API-calls per order uitvoeren. Voor batch-verwerking van API-calls is het voordeel echter zeer groot. Wij zien dat bij herhaalde API-calls, gemiddeld 50 milliseconden per API-call wordt bespaard.

Hoe implementeer ik persistente connecties?

Hoe dit geïmplementeerd kan worden in PHP, is niet duidelijk beschreven in de PHP-documentatie. cURL gebruikt standaard persistent connections, maar kan deze alleen openhouden wanneer de cURL resource in scope blijft en niet gesloten wordt. De truc is dus om de resource niet in de scope van de methode te plaatsen, maar in een property op de API-client class te plaatsen. Voor elke API-call moet de resource opnieuw ingesteld worden met de curl_reset() functie. Tenslotte moet aan het einde van het script de TCP-verbinding gesloten worden. Dit kan door een magische methode __destruct() toe te voegen op de API-client, waarin curl_close() aangeroepen wordt. Het geheel ziet er als volgt uit:
Deze feature is beschikbaar vanaf release 1.2.6 van de Mollie API-client voor PHP.

Mollieprogrammeurs bezoeken de Dutch PHP Conference

Jaarlijks bezoekt een delegatie van de Development-afdeling van Mollie dé conferentie in Amsterdam voor PHP developers: de Dutch PHP Conference. Tijdens de conference worden er ongeveer dertig talks gegeven over uiteenlopende onderwerpen rondom PHP development: van het gebruik van Machine Learning (ML) voor de ontwikkeling van een bot die boter, kaas en eieren speelt tot het gebruik van Behavior Driven Design testing. In het bijzonder waren de talks over Hypermedia van Victor Welling en over Command Bus van Ross Tuck erg interessant.

WP 20150626 15 43 25 Pro2-1024x652

Domain driven design

Dit jaar werd veel nadruk gelegd op domain-driven design, waarbij software-applicaties gezien worden als een verzameling 'acties' die nauw verband houden met de daadwerkelijke bedrijfsvoering. Dit in tegenstelling tot de traditionele focus op datastructuren en objecten. Door de code dichterbij de daadwerkelijke toepassing te brengen, moedigt de architectuur een verbeterde samenwerking tussen software-ontwikkelaars en productontwikkelaars aan. Designpatronen als de Command Bus en Event Driven Programming komen daarbij goed van pas.

Na het weekend kunnen we terugkijken op een zeer geslaagde conferentie. We hopen volgend jaar weer te kunnen gaan.

WP 20150626 19 59 02 Pro-1024x576

Mollie verbetert betrouwbaarheid iDEAL

Afgelopen jaar heeft iDEAL te maken gehad met een aantal flinke storingen bij diverse banken. Dit heeft er zelfs tot geleid dat webwinkeliers eisten dat De Nederlandsche Bank toezicht gaat houden op de betrouwbaarheid van iDEAL en uiteindelijk kwamen de banken met een website waarop de status van iDEAL inzichtelijk is gemaakt.

Bij iDEAL kunnen de storingen zich op twee plaatsen voordoen: aan de issuing zijde (de bank van de consument) en de acquiring zijde (de bank van de merchant of PSP). Wanneer er een storing aan de issuing zijde is, kunnen alle klanten van die bank geen iDEAL betalingen uitvoeren. Hier is helaas weinig aan te doen. Bij een storing aan de acquiring zijde kunnen merchants of PSP's aangesloten bij die bank geen betalingen ontvangen. Door in dat geval over te schakelen naar een andere acquirer, kunnen de betalingen toch doorgang vinden.

Om de afhankelijkheid van één bank te verminderen, heeft Mollie daarom een koppeling gerealiseerd met een tweede acquiring bank. Bij een storing wordt automatisch overgeschakeld naar deze tweede bank. Van deze functionaliteit wordt in de praktijk ook zeer frequent gebruik gemaakt.

Als je klant bent bij Mollie is hierdoor automatisch je iDEAL betalingsverkeer betrouwbaarder dan via een directe koppeling met de bank. Dit lukt ons door slimmigheden te implementeren in combinatie door de bewezen betere uptime van Mollie de afgelopen jaren.

Mollie host voor de tweede keer de AmsterdamPHP meetup

Afgelopen donderdag hebben Mollie en SEOShop voor de tweede keer de maandelijkse meetup van AmsterdamPHP gehost. AmsterdamPHP is een groep voor PHP-developers uit (de omgeving van) Amsterdam en heeft als doel het onderling uitwisselen van kennis en ervaringen.

clearPHP

Ongeveer 70 programmeurs kwamen luisteren naar de presentatie van Damien Seguy over clearPHP (slides). Doel van de presentatie was om te laten zien hoe sommige veelvoorkomende programmeerfouten automatisch herkend en dus voorkomen kunnen worden.

highres 437710036-1024x768

Voor en na afloop van de talk was er nog een gezellige social met bier en pizza voor alle aanwezigen om de meetup compleet te maken. We bedanken iedereen voor hun aanwezigheid en enthousiasme. In het bijzonder AmsterdamPHP en SEOShop voor de fijne samenwerking.

Afgelopen november hostte Mollie de AmsterdamPHP meetup ook al.

Goodies

Hopelijk heeft iedereen de goodies en hoodies weten te vinden. Wij hebben nog Mollie T-shirts over! Scoor ze door je maat en adres te mailen naar tshirts@mollie.com. Zo gepiept, dus vooral doen!

Overboekingen in België

Al geruime tijd biedt Mollie de SEPA overboeking-betaalmethode aan. Klanten van je webshop kunnen betalen door via hun online bankieromgeving het juiste bedrag onder vermelding van een speciaal referentienummer over te maken naar een rekening van Stichting Mollie Payments. Wanneer het geld aankomt bij Mollie wordt de bijbehorende betaling automatisch verwerkt.

Dankzij de Single Euro Payments Area (SEPA) kan er vanuit 35 Europese regio's op deze manier betaald worden. Hoe het referentienummer er uit moet zien is in de SEPA standaard gedefinieerd en Mollie volgt deze standaard. Hierdoor kan het referentienummer bijvoorbeeld ingevuld worden in het Acceptgiro kenmerk vakje binnen internetbankieren.

Toch vonden we dat deze betaalmethode nog verbeterd kon worden voor onze klanten in België. Daarom hebben we in België een bankrekening geopend zodat Belgische consumenten hun overschrijving naar een Belgische rekening kunnen uitvoeren. De betaling wordt daarmee sneller verwerkt en voor je klant is het vertrouwder om over te maken naar een lokaal rekeningnummer. Maar dat is niet de enige verbetering.

Daarnaast heeft België een eigen standaard voor overboekingsreferenties: de gestructureerde mededeling (OGM). Deze bestaat uit tien cijfers met twee controlecijfers en is op een speciale manier opgemaakt. Een voorbeeld van zo'n nummer is +++872/0810/92122+++. Consumenten uit België krijgen deze code automatisch te zien wanneer zij voor de overboeking-betaalmethode kiezen. Zij zijn bekend met deze manier van overschijven en we hebben gezien dat op deze manier worden er minder fouten gemaakt bij het overtypen van het referentienummer.

Je Belgische klanten krijgen automatisch de aangepaste bankrekening en gestructureerde mededeling te zien. Wil je via de API deze gegevens gebruiken, stuur dan be als waarde voor de locale parameter bij het aanmaken van de betaling.

Shopify en Mollie lanceren Bancontact/Mister Cash-integratie

De grootste wereldwijde aanbieder van webwinkel-software Shopify gaat een verdere samenwerking met Mollie aan als betaalaanbieder voor Bancontact/Mister Cash, de meestgebruikte betaalmethode in België. Als Shopify gebruiker kun je vanaf vandaag gebruik maken van Bancontact/Mister Cash via Mollie. Aangezien dit één van de belangrijkste betaalmethodes in België is, is dit goed nieuws voor Belgische Shopify-gebruikers.

Mollie en Shopify hebben hiertoe samen een integratie ontwikkeld. Nadat je Bancontact/Mister Cash geactiveerd hebt bij Mollie, kun je in de Shopify backend je Mollie API-key invullen.

Shop-One-Payments-Shopify-2015-03-11-22-01-48-2015-03-11-22-01-50

De betaalmethode is dan direct zichtbaar voor al je klanten.

Shop-One-Checkout-2015-03-11-22-01-04-2015-03-11-22-01-10

Goed nieuws dus voor Shopify gebruikers. Eerder kwam Mollie en Shopify al met een iDEAL integratie.

Betalingen exporteren naar MT940 nu mogelijk

Het op de juiste wijze boeken van betalingen in jouw administratie is lastiger wanneer er een payment service provider bij de betalingen betrokken is. De betalingen komen immers niet als losse betalingen binnen op je zakelijke bankrekening, maar gecomprimeerd in een enkele uitbetaling. Dit maakt het onmogelijk om automatisch alle betalingen af te letteren tegen de facturen die je hebt ingeboekt nadat de bestellingen in jouw webshop zijn geplaatst.

Daarom biedt Mollie nu een MT940 export aan. Een MT940 export bevat alle transacties en uitbetalingen die op jouw website hebben plaatsgevonden op de dag de export. Net als bij jouw eigen bank kun je per werkdag een export downloaden van jouw "rekening courant" bij Mollie. Deze digitale afschriften worden door vrijwel alle boekhoudsoftware, zoals bijvoorbeeld Exact Online, begrepen.

Het is handig om in je administratie een tussenrekening (een grootboeknummer op de balans) aan te maken die gebruikt kan worden om de geldstromen via Mollie op een overzichtelijke manier te boeken. Het MT940 bestand kun je dan importeren voor deze tussenrekening. Hierdoor worden alle betalingen automatisch op de tussenrekening gezet. Deze betalingen kun je dan afletteren tegen de openstaande bedragen van jouw debiteuren. Als je het factuur- of ordernummer meestuurt bij het aanmaken van de betaling, kunnen de facturen zelfs automatisch door je boekhoudsoftware afgeletterd worden. Hiermee kan jouw boekhouder veel tijd besparen.

Aan het einde van de maand krijg je van Mollie een factuur voor alle kosten. Deze kun je inboeken met de Mollie-tussenrekening als tegenrekening. Als het goed is, loopt de tussenrekening dan weer helemaal glad.

Zo heb je altijd een boekhoudkundig correct overzicht van jouw betalingsverkeer via Mollie.

Voorbeeld met Exact Online:

Download het MT940 bestand vanuit het Beheer.

https://www.mollie.com/blog_media/uploads/2015/03/Screen-Shot-2015-03-26-at-10.29.42-300x290.png

Ga naar de Financiële cockpit binnen de Exact Online omgeving, en kies voor afschriften importeren.

Screen-Shot-2015-03-26-at-10.28.42

Importeer het bestand, je krijgt nu een overzicht van alle transacties.

Screen-Shot-2015-03-26-at-10.30.02

De bestanden van Mollie bevatten alle betalingen, refunds, uitbetalingen, rolling reserve, en API tokens en informatie van consumenten (indien van toepassing). Hiermee gaat Mollie nèt wat verder dan andere payment service providers.

Bancontact/Mister Cash refunden, hoe werkt het eigenlijk?

Bancontact/Mister Cash is bij onze merchants de populairste Belgische betaalmethode. De betaalmethode biedt net als iDEAL directe en gegarandeerde betalingen. Maar een Refund is geen standaard onderdeel van het betaalproduct. Dus hoe kan Mollie dit dan toch aanbieden?

De betaalmethode werkt met behulp van een Maestro-debitcard die gekoppeld is aan een Belgische tegenrekening. De betalingen met deze kaart worden direct van de tegenrekening afgeschreven. De techniek achter deze betaalmethode wordt verzorgt door Worldline by Atos.

Net als iDEAL kent het Bancontact/Mister Cash-scheme geen Refunds of chargebacks. Bij iDEAL is het uitvoeren van een Refund echter eenvoudig: het rekeningnummer van de consument wordt door het iDEAL-platform teruggegeven en de Refund kan hiernaar teruggestort worden. Bij Bancontact/Mister Cash wordt deze informatie niet vrijgegeven. Tóch biedt Mollie ook de mogelijkheid om een Bancontact/MisterCash-betaling terug te storten naar de consument.

Dus hoe krijgen wij dit toch voor elkaar?

De consument start allereerst de betaling door zijn of haar kaartnummer in te voeren op ons PCI-DSS gecertificeerde platform en daarna via 3-D Secure zichzelf bij zijn eigen bank te authenticeren. Wanneer dit gelukt is, initieert Mollie de transactie bij onze Belgische acquiring bank. Wanneer de transactie na enkele seconden goedgekeurd wordt, wordt direct het juiste bedrag op onze Belgische bankrekening bijgeschreven en daarmee is de transactie afgerond.

Het is niet mogelijk om een refund naar de kaart uit te voeren zoals bij Creditcard dus moet de Refund direct naar de tegenrekening van de consument gestort worden.

Elke ochtend ontvangen wij geautomatiseerd de afschriften van onze Belgische bankrekening. Elke Bancontact/Mister Cash-transactie staat hier apart op vermeld. De tegenrekening van elke regel is het Belgische rekeningnummer (BBAN) van de consument dat bij de kaart hoort waarmee de transactie is uitgevoerd. Door deze transacties op ons afschrift te matchen met de eerder uitgevoerde kaartbetalingen kunnen we bij elke betaling het bijbehorende Belgische rekeningnummer terugvinden.

Er blijft dan nog één probleem over: Mollie beschikt niet over een aansluiting op het Belgische netwerk voor binnenlands betaalverkeer. Daarom moeten we het Belgische rekeningnummer omrekenen naar het bijbehorende IBAN-nummer en de bijbehorende BIC-code bepalen zodat dit via een SEPA-overschrijving uitgevoerd kan worden. Omdat een rekeningnummer in België altijd begint met een uniek nummer voor elke bank (het zogenaamde protocolnummer of de bankcode), is bekend welke bank bij elk rekeningnummer hoort en kunnen we de BIC code in een lijst van deze codes opzoeken. Het IBAN-nummer kan vervolgens bepaald worden door het rekeningnummer met "BE" te prefixen en de controlecijfers te berekenen.

Met een enkele klik
Het uitvoeren van een Refund van een Bancontact/Mister Cash-transactie kan met een enkele klik in het dashboard, of via de Mollie API. Achter deze eenvoudige handeling ligt een hoop complexiteit verstopt, waar jij als merchant verder niet over in hoeft te zitten.

Zo maakt Mollie online betalingen simpel.

AmsterdamPHP meetup bij Mollie

Vorige week donderdag hebben Mollie en SEOShop de maandelijkse AmsterdamPHP meetup gehost. AmsterdamPHP is een groep PHP-developers uit Amsterdam en omgeving, die er op gericht is om onderling kennis en ervaring uit te wisselen.

600 431723619-300x225

Talk over PHP Profiling
Ruim 80 programmeurs kwamen naar Mollie om te luisteren naar de talk van Dennis de Greef over het profilen van PHP-applicaties. Profilen is het analyseren van welke delen van het PHP-script de meeste tijd of het meeste geheugen kosten. Dennis legde uit hoe je met Xdebug je applicatie kan profilen en hoe en met welke tools je de traces kan analyseren. Voor en na afloop van de talk was er nog een gezellige social met bier en pizza voor alle aanwezigen om de meetup compleet te maken. We bedanken iedereen voor hun aanwezigheid en enthousiasme. In het bijzonder AmsterdamPHP en SEOShop voor de fijne samenwerking.

Mollie en AmsterdamPHP
Ooit in 2012 gaf Mollie bij AmsterdamPHP ook een talk over continuous integration. In ons nieuwe kantoor op de Keizersgracht hebben we eindelijk de mogelijkheid gekregen een keer de meetup te hosten. Als het kan, gaan we het vaker doen want wat ons betreft was het erg geslaagd!

Goodies
Hopelijk heeft iedereen de goodies en hoodies weten te vinden. Wij hebben nog Mollie T-shirts over! Scoor ze door je maat en adres te mailen naar tshirts@mollie.com. Zo gepiept, dus vooral doen!

Volg Mollie op Twitter!
Join de Dashboard-beta!