Usage

Creating an API context

In order to start making calls with the bunq API, you must first register your API key and device, and create a session. In the SDKs, we group these actions and call it "creating an API context". The context can be created by using the following code snippet:

// For sandbox environment
var apiContext = ApiContext.Create(ApiEnvironmentType.SANDBOX, apiKey, deviceDescription);

// For production
var apiContext = ApiContext.Create(ApiEnvironmentType.PRODUCTION, apiKey, deviceDescription);

// Load the API context into the global BunqContext
BunqContext.LoadApiContext(apiContext);

// Save the context for later use
apiContext.Save("bunq-context.conf");

After saving the context, you can restore it at any time:

// Restore context from file
var apiContext = ApiContext.Restore("bunq-context.conf");

// Ensure the session is active
apiContext.EnsureSessionActive();

// Load into global context
BunqContext.LoadApiContext(apiContext);

Tip: both saving and restoring the context can be done without any arguments. In this case the context will be saved to/restored from the bunq.conf file in the same folder with your executable.

Example

For an example, see this tinker snippet

PSD2

It is possible to create an ApiContext as PSD2 Service Provider. Although this might seem a complex task, we wrote some helper implementations to get you started. You need to create a certificate and private key to get you started. Our sandbox environment currently accepts all certificates, if these criteria are met:

  • Up to 64 characters

  • PISP and/or AISP used in the end.

Make sure you have your unique eIDAS certificate number and certificates ready when you want to perform these tasks on our production environment. Due to the implementation used in this SDK, you should create a .pfx credentials file containing your certificate and private key. Creating a pfx file can be done with the following command:

openssl pkcs12 -inkey private.pem -in chain.cert -export -out credentials.pfx

Creating a PSD2 context is very easy:

This context can be saved the same way as a normal ApiContext. After creating this context, create an OAuth client to get your users to grant you access.

Safety considerations

The file storing the context details (i.e. bunq.conf) is a key to your account. Anyone having access to it is able to perform any Public API actions with your account. Therefore, we recommend choosing a truly safe place to store it.

Basic Operations

Monetary Accounts

Create a Monetary Account

Get a Monetary Account

Close a Monetary Account

Payments

Make a Payment

List Payments

Payment Requests

Create a Payment Request

Accept a Payment Request

Attachments and Avatars

Upload Attachment

Create Avatar

Retrieve Attachment

Cards

Order a New Card

Notification Filters (Webhooks)

Create URL Notification Filter for Account

Create URL Notification Filter for User

Create Push Notification Filter

Session Management

Delete Current Session

Create OAuth Client

Create OAuth Authorization URI

Making API calls

There is a class for each endpoint. Each class has functions for each supported action. These actions can be Create, Get, Update, Delete and List.

Sometimes API calls have dependencies, for instance MonetaryAccount. Making changes to a monetary account always also needs a reference to a User. These dependencies are required as arguments when performing API calls. Take a look at doc.bunq.com for the full documentation.

The user dependency will always be determined for you by the SDK. For the monetary account, the SDK will use your primary account (the one used for billing) if no monetary account id is provided.

Creating objects

When creating an object, the default response will be the id of the newly created object.

Reading objects

Reading objects can be done via get and list methods. For get a specific object id is needed while for list will return a list of objects.

Updating objects

Updating objects through the API goes the same way as creating objects, except that also the object to update identifier (ID or UUID) is needed.

Deleting objects

When an object has been deleted, the common respinse is an empty response.

Last updated

Was this helpful?