E-Boekhouden & Pay.nl

We have been working on a Laravel setup where we bill customers using pay.nl using their API and E-boekhouden.nl for the bookkeeping. The reason being that they both offer APIs to work with Software as Service providers such as the one we work with and the other reason that they are Dutch based, have decent documentation and that their pricing is reasonable.


So far Pay.nl has taken us quite a bit of work, but now we are able to let customers pay for their subscriptions via pay.nl using several payment gateways like iDEAL, PayPal, bank transfers and credit card. This we do using their PHP SDK. We are also able to send plenty of customer data with each transaction to PAY.NL. We only still need to work out automatic monthly payments as well as yearly ones instead of current ones the end user has to do at the end of each period.

Payment Data

Pay.nl also allows you to synchronize your payment transactions with e-boekhouden. You just need to add a e-boekhouden key and then you can sync daily, weekly or monthly. The data that is synchronized is MT940 or SWIFT bank data. Here an example:

0000 00PAYNNL1ZXXXXxxxxx
:86:Description Subscription X
:86:Pay.nl ID xxxxxxxxxx iDEAL
:86:Customer NL73INGB000xxxxxx*** Company BV
:86:Website domain.com

This data is useful to get the basic transaction data. This is data you normally see in your online banking overview. It is however not useful if you would like to get other data such as the customer’s address over from pay.nl. This data we can add to pay.nl transfers as end user data. The synch option on offer does not seem to allow that being send over however.

Customer Data

So, if we want to send customer data over, or update customer data, product data, we will need to use the e-boekhoude.nl API and or a PHP package out there built by Arwin . This PHP package is not a full fledged Laravel package but does allow you to use PHP to interact with e-boekhoude.nl and send data to them using the API.

To create a new relation (customer) we could use something like

$relation = new Relation();
$relation->setCompanyName("Foo Company");


for example.

All in One Solution?

The fact that to add customers, send transactions data and or update products we need at least two APIs, one of which – transaction data – is taken care of by Pay.nl and the other – customer data and or product updates – using a PHP package is kind of a bummer. We would really prefer to send data to one Payment Service Provider and be done with it. So is there no Dutch solution out there that allows just that? We are not sure yet, but if you know one do let us know!

Jasper Frumau

Jasper has been working with web frameworks and applications such as Laravel, Magento and his favorite CMS WordPress including Roots Trellis and Sage for more than a decade. He helps customers with web design and online marketing. Services provided are web design, ecommerce, SEO, content marketing. When Jasper is not coding, marketing a website, reading about the web or dreaming the internet of things he plays with his son, travels or run a few blocks.