Receiving payments on your website using bunq.me

Imagine you're running a charity and want to collect donations directly through your website. After someone donates, you'd like to redirect them to a custom "Thank You" page— to show appreciation, share what their donation supports, or even offer a downloadable gift or receipt.

In this tutorial, you’ll learn how to use the bunq API to:

  • Create a payment link you can share or embed on your site

  • Add a redirect URL that sends users to a confirmation or thank-you page after payment

  • Make the experience smooth, branded, and personal

This works great for charities, event registrations, fundraising campaigns, or any situation where you want to acknowledge someone after they’ve completed a payment.

Let’s dive in and build a seamless donation flow with a touch of gratitude 💚


In order to create a custom link we'll need the bunq.me-tab endpoints. This allows you to create a payment request and embed the link on your site.

We start by creating a bunq.me tab

We post the following body. Note that you can set a redirect URL to your own thank you page. You can use this can also be used to add url parameters, for example a user id so you can retrieve the user in your own database. For this example we'll just redirect to the bunq homepage


{
  "bunqme_tab_entry": {
    "amount_inquired": {
      "value": "10.00",
      "currency": "EUR"
    },
    "description": "Donation",
    "redirect_url": "https://bunq.com"
  },
  "status": "string",
  "event_id": 0
}

This returns us a simple response with the ID of our new bunq.me tab


{
    "Response": [
        {
            "Id": {
                "id": 7567
            }
        }
    ]
}

API call

post

bunq.me tabs allows you to create a payment request and share the link through e-mail, chat, etc. Multiple persons are able to respond to the payment request and pay through bunq, iDeal or SOFORT.

Path parameters
userIDintegerRequired
monetary-accountIDintegerRequired
Header parameters
Cache-ControlstringOptional

The standard HTTP Cache-Control header is required for all signed requests.

User-AgentstringRequired

The User-Agent header field should contain information about the user agent originating the request. There are no restrictions on the value of this header.

X-Bunq-LanguagestringOptional

The X-Bunq-Language header must contain a preferred language indication. The value of this header is formatted as a ISO 639-1 language code plus a ISO 3166-1 alpha-2 country code, separated by an underscore. Currently only the languages en_US and nl_NL are supported. Anything else will default to en_US.

X-Bunq-RegionstringOptional

The X-Bunq-Region header must contain the region (country) of the client device. The value of this header is formatted as a ISO 639-1 language code plus a ISO 3166-1 alpha-2 country code, separated by an underscore.

X-Bunq-Client-Request-IdstringOptional

This header must specify an ID with each request that is unique for the logged in user. There are no restrictions for the format of this ID. However, the server will respond with an error when the same ID is used again on the same DeviceServer.

X-Bunq-GeolocationstringOptional

This header must specify the geolocation of the device. The format of this value is longitude latitude altitude radius country. The country is expected to be formatted of an ISO 3166-1 alpha-2 country code. When no geolocation is available or known the header must still be included but can be zero valued.

X-Bunq-Client-AuthenticationstringRequired

The authentication token is used to authenticate the source of the API call. It is required by all API calls except for POST /v1/installation. It is important to note that the device and session calls are using the token from the response of the installation call, while all the other calls use the token from the response of the session-server call

Body
statusstringOptional

The status of the bunq.me. Ignored in POST requests but can be used for cancelling the bunq.me by setting status as CANCELLED with a PUT request.

event_idintegerWrite-onlyOptional

The ID of the related event if the bunqMeTab made by 'split' functionality.

Responses
200
bunq.me tabs allows you to create a payment request and share the link through e-mail, chat, etc. Multiple persons are able to respond to the payment request and pay through bunq, iDeal or SOFORT.
application/json
post
POST /v1/user/{userID}/monetary-account/{monetary-accountID}/bunqme-tab HTTP/1.1
Host: public-api.sandbox.bunq.com
User-Agent: text
X-Bunq-Client-Authentication: text
Content-Type: application/json
Accept: */*
Content-Length: 147

{
  "bunqme_tab_entry": {
    "amount_inquired": {
      "value": "text",
      "currency": "text"
    },
    "description": "text",
    "redirect_url": "text"
  },
  "status": "text",
  "event_id": 1
}
{
  "id": 1
}

So we created the tab, but what is the URL we can send our user to?

We'll need to make a second API call in order to retrieve all data. This one is simply a get request using the ID that we got from our POST message (see below. It returns us a object with one key called bunq-me-tab-share-url

This url is what you can add to your website. For instance on a button that says 'donate now' or 'go to checkout'.

When the user clicks on that link they will be send to a payment portal. That looks like this. The URL expires in 20 minutes and once the user pays they will be redirected to the redirect URL that we provided.

get

bunq.me tabs allows you to create a payment request and share the link through e-mail, chat, etc. Multiple persons are able to respond to the payment request and pay through bunq, iDeal or SOFORT.

Path parameters
userIDintegerRequired
monetary-accountIDintegerRequired
itemIdintegerRequired
Header parameters
Cache-ControlstringOptional

The standard HTTP Cache-Control header is required for all signed requests.

User-AgentstringRequired

The User-Agent header field should contain information about the user agent originating the request. There are no restrictions on the value of this header.

X-Bunq-LanguagestringOptional

The X-Bunq-Language header must contain a preferred language indication. The value of this header is formatted as a ISO 639-1 language code plus a ISO 3166-1 alpha-2 country code, separated by an underscore. Currently only the languages en_US and nl_NL are supported. Anything else will default to en_US.

X-Bunq-RegionstringOptional

The X-Bunq-Region header must contain the region (country) of the client device. The value of this header is formatted as a ISO 639-1 language code plus a ISO 3166-1 alpha-2 country code, separated by an underscore.

X-Bunq-Client-Request-IdstringOptional

This header must specify an ID with each request that is unique for the logged in user. There are no restrictions for the format of this ID. However, the server will respond with an error when the same ID is used again on the same DeviceServer.

X-Bunq-GeolocationstringOptional

This header must specify the geolocation of the device. The format of this value is longitude latitude altitude radius country. The country is expected to be formatted of an ISO 3166-1 alpha-2 country code. When no geolocation is available or known the header must still be included but can be zero valued.

X-Bunq-Client-AuthenticationstringRequired

The authentication token is used to authenticate the source of the API call. It is required by all API calls except for POST /v1/installation. It is important to note that the device and session calls are using the token from the response of the installation call, while all the other calls use the token from the response of the session-server call

Responses
200
bunq.me tabs allows you to create a payment request and share the link through e-mail, chat, etc. Multiple persons are able to respond to the payment request and pay through bunq, iDeal or SOFORT.
application/json
get
GET /v1/user/{userID}/monetary-account/{monetary-accountID}/bunqme-tab/{itemId} HTTP/1.1
Host: public-api.sandbox.bunq.com
User-Agent: text
X-Bunq-Client-Authentication: text
Accept: */*
{
  "id": 1,
  "created": "text",
  "updated": "text",
  "time_expiry": "text",
  "monetary_account_id": 1,
  "status": "text",
  "type": "text",
  "alias_monetary_account": {
    "iban": "text",
    "display_name": "text",
    "avatar": {
      "uuid": "text",
      "anchor_uuid": "text",
      "image": [
        {
          "attachment_public_uuid": "text",
          "content_type": "text",
          "height": 1,
          "width": 1
        }
      ],
      "style": "text"
    },
    "label_user": {
      "uuid": "text",
      "display_name": "text",
      "country": "text",
      "avatar": {
        "uuid": "text",
        "anchor_uuid": "text",
        "image": [
          {
            "attachment_public_uuid": "text",
            "content_type": "text",
            "height": 1,
            "width": 1
          }
        ],
        "style": "text"
      },
      "public_nick_name": "text"
    },
    "country": "text",
    "bunq_me": {
      "type": "text",
      "value": "text",
      "name": "text"
    },
    "is_light": true,
    "swift_bic": "text",
    "swift_account_number": "text",
    "transferwise_account_number": "text",
    "transferwise_bank_code": "text",
    "merchant_category_code": "text"
  },
  "bunqme_tab_share_url": "text",
  "bunqme_tab_entry": {
    "amount_inquired": {
      "value": "text",
      "currency": "text"
    },
    "description": "text",
    "redirect_url": "text",
    "uuid": "text",
    "alias": {
      "iban": "text",
      "display_name": "text",
      "avatar": {
        "uuid": "text",
        "anchor_uuid": "text",
        "image": [
          {
            "attachment_public_uuid": "text",
            "content_type": "text",
            "height": 1,
            "width": 1
          }
        ],
        "style": "text"
      },
      "label_user": {
        "uuid": "text",
        "display_name": "text",
        "country": "text",
        "avatar": {
          "uuid": "text",
          "anchor_uuid": "text",
          "image": [
            {
              "attachment_public_uuid": "text",
              "content_type": "text",
              "height": 1,
              "width": 1
            }
          ],
          "style": "text"
        },
        "public_nick_name": "text"
      },
      "country": "text",
      "bunq_me": {
        "type": "text",
        "value": "text",
        "name": "text"
      },
      "is_light": true,
      "swift_bic": "text",
      "swift_account_number": "text",
      "transferwise_account_number": "text",
      "transferwise_bank_code": "text",
      "merchant_category_code": "text"
    },
    "status": "text",
    "merchant_available": [
      {
        "merchant_type": "text",
        "available": true
      }
    ],
    "invite_profile_name": "text"
  },
  "bunqme_tab_entries": [
    {
      "amount_inquired": {
        "value": "text",
        "currency": "text"
      },
      "description": "text",
      "redirect_url": "text",
      "uuid": "text",
      "alias": {
        "iban": "text",
        "display_name": "text",
        "avatar": {
          "uuid": "text",
          "anchor_uuid": "text",
          "image": [
            {
              "attachment_public_uuid": "text",
              "content_type": "text",
              "height": 1,
              "width": 1
            }
          ],
          "style": "text"
        },
        "label_user": {
          "uuid": "text",
          "display_name": "text",
          "country": "text",
          "avatar": {
            "uuid": "text",
            "anchor_uuid": "text",
            "image": [
              {
                "attachment_public_uuid": "text",
                "content_type": "text",
                "height": 1,
                "width": 1
              }
            ],
            "style": "text"
          },
          "public_nick_name": "text"
        },
        "country": "text",
        "bunq_me": {
          "type": "text",
          "value": "text",
          "name": "text"
        },
        "is_light": true,
        "swift_bic": "text",
        "swift_account_number": "text",
        "transferwise_account_number": "text",
        "transferwise_bank_code": "text",
        "merchant_category_code": "text"
      },
      "status": "text",
      "merchant_available": [
        {
          "merchant_type": "text",
          "available": true
        }
      ],
      "invite_profile_name": "text"
    }
  ],
  "result_inquiries": [
    {
      "payment": {
        "amount": {
          "value": "text",
          "currency": "text"
        },
        "counterparty_alias": {
          "iban": "text",
          "display_name": "text",
          "avatar": {
            "uuid": "text",
            "anchor_uuid": "text",
            "image": [
              {
                "attachment_public_uuid": "text",
                "content_type": "text",
                "height": 1,
                "width": 1
              }
            ],
            "style": "text"
          },
          "label_user": {
            "uuid": "text",
            "display_name": "text",
            "country": "text",
            "avatar": {
              "uuid": "text",
              "anchor_uuid": "text",
              "image": [
                {
                  "attachment_public_uuid": "text",
                  "content_type": "text",
                  "height": 1,
                  "width": 1
                }
              ],
              "style": "text"
            },
            "public_nick_name": "text"
          },
          "country": "text",
          "bunq_me": {
            "type": "text",
            "value": "text",
            "name": "text"
          },
          "is_light": true,
          "swift_bic": "text",
          "swift_account_number": "text",
          "transferwise_account_number": "text",
          "transferwise_bank_code": "text",
          "merchant_category_code": "text"
        },
        "description": "text",
        "attachment": [
          {
            "id": 1,
            "monetary_account_id": 1
          }
        ],
        "merchant_reference": "text",
        "id": 1,
        "created": "text",
        "updated": "text",
        "monetary_account_id": 1,
        "alias": {
          "iban": "text",
          "display_name": "text",
          "avatar": {
            "uuid": "text",
            "anchor_uuid": "text",
            "image": [
              {
                "attachment_public_uuid": "text",
                "content_type": "text",
                "height": 1,
                "width": 1
              }
            ],
            "style": "text"
          },
          "label_user": {
            "uuid": "text",
            "display_name": "text",
            "country": "text",
            "avatar": {
              "uuid": "text",
              "anchor_uuid": "text",
              "image": [
                {
                  "attachment_public_uuid": "text",
                  "content_type": "text",
                  "height": 1,
                  "width": 1
                }
              ],
              "style": "text"
            },
            "public_nick_name": "text"
          },
          "country": "text",
          "bunq_me": {
            "type": "text",
            "value": "text",
            "name": "text"
          },
          "is_light": true,
          "swift_bic": "text",
          "swift_account_number": "text",
          "transferwise_account_number": "text",
          "transferwise_bank_code": "text",
          "merchant_category_code": "text"
        },
        "type": "text",
        "sub_type": "text",
        "payment_arrival_expected": {
          "status": "text",
          "time": "text"
        },
        "bunqto_status": "text",
        "bunqto_sub_status": "text",
        "bunqto_share_url": "text",
        "bunqto_expiry": "text",
        "bunqto_time_responded": "text",
        "batch_id": 1,
        "scheduled_id": 1,
        "address_shipping": {
          "street": "text",
          "house_number": "text",
          "po_box": "text",
          "postal_code": "text",
          "city": "text",
          "country": "text",
          "extra": "text",
          "mailbox_name": "text",
          "province": "text",
          "is_user_address_updated": true
        },
        "address_billing": {
          "street": "text",
          "house_number": "text",
          "po_box": "text",
          "postal_code": "text",
          "city": "text",
          "country": "text",
          "extra": "text",
          "mailbox_name": "text",
          "province": "text",
          "is_user_address_updated": true
        },
        "geolocation": {
          "latitude": 1,
          "longitude": 1,
          "altitude": 1,
          "radius": 1
        },
        "request_reference_split_the_bill": [
          {
            "type": "text",
            "id": 1
          }
        ],
        "balance_after_mutation": {
          "value": "text",
          "currency": "text"
        },
        "payment_auto_allocate_instance": {
          "id": 1,
          "created": "text",
          "updated": "text",
          "payment_auto_allocate_id": 1,
          "status": "text",
          "error_message": [
            [
              {
                "error_description": "text",
                "error_description_translated": "text"
              }
            ]
          ],
          "payment_batch": {
            "payments": "[Circular Reference]"
          },
          "payment_id": 1
        },
        "payment_suspended_outgoing": {
          "status": "text",
          "monetary_account_id": "text",
          "time_execution": "text"
        }
      },
      "bunq_me_tab_id": 1
    }
  ]
}

Example response that shows the bunqme_tab_share_url


{
    "Response": [
        {
            "BunqMeTab": {
                "id": 7602,
                "created": "2025-04-16 11:34:47.843460",
                "updated": "2025-04-16 11:34:47.843460",
                "time_expiry": "2025-05-16 11:34:47.843107",
                "monetary_account_id": 2079522,
                "status": "WAITING_FOR_PAYMENT",
                "type": "BUNQ_ME",
                "alias_monetary_account": {
                    "iban": "NL53BUNQ2090359587",
                    "is_light": false,
                    "display_name": "N. Carter",
                    "avatar": {...},
                    "label_user": {... },
                "bunqme_tab_share_url": "https://bunqme.triage.bunq.net/o/6kwsisQcpUD4hWaBZUnuW4",
                "bunqme_tab_entry": {
                    "uuid": "de05a8a3-3257-4e73-a004-af3638251e5c",
                    "created": "2025-04-16 11:34:47.887847",
                    "updated": "2025-04-16 11:34:47.887847",
                    "amount_inquired": {
                        "currency": "EUR",
                        "value": "1.00"
                    },
                    "status": "WAITING_FOR_PAYMENT",
                    "description": "Donation",
                    "alias": {
                        "iban": "NL53BUNQ2090359587",
                        "is_light": false,
                        "display_name": "N. Carter",
                        "avatar": {
                            "uuid": "419bbe21-52d7-4037-8787-a57e4c649049",
                            "image": [
                                {
                                    "attachment_public_uuid": "ef1a52ce-6b3a-4357-b716-de91948b831d",
                                    "height": 1023,
                                    "width": 1024,
                                    "content_type": "image/png",
                                    "urls": [
                                        {
                                            "type": "ORIGINAL",
                                            "url": "https://bunq-triage-model-storage-public.s3.eu-central-1.amazonaws.com/bunq_file/File/content/921ece497cd00f4e0cef3f0f63a962c31cf3f8e35311d127d5a7b23be3d074d5.png"
                                        }
                                    ]
                                }
                            ],
                            "anchor_uuid": null,
                            "style": "NONE"
                        },
                        "label_user": {
                            "uuid": "5f33833d-f416-428b-a654-d3b25bb3bc9d",
                            "display_name": "N. Carter",
                            "country": "NL",
                            "avatar": {
                                "uuid": "9debf55b-70b1-4d43-8d51-d6e7bd42fb5b",
                                "image": [
                                    {
                                        "attachment_public_uuid": "4b7e0d1d-9167-48ac-990a-70e342c87812",
                                        "height": 126,
                                        "width": 200,
                                        "content_type": "image/jpeg",
                                        "urls": [
                                            {
                                                "type": "ORIGINAL",
                                                "url": "https://bunq-triage-model-storage-public.s3.eu-central-1.amazonaws.com/bunq_file/File/content/6979a145b7ea9ecc3459358122cb560608f02d36d4b8cd6b770f50e36aa35512.jpg"
                                            }
                                        ]
                                    }
                                ],
                                "anchor_uuid": "5f33833d-f416-428b-a654-d3b25bb3bc9d",
                                "style": "NONE"
                            },
                            "public_nick_name": "Nicola",
                            "type": "PERSON"
                        },
                        "country": "NL"
                    },
                    "redirect_url": "https://bunq.com",
                    "merchant_available": [
                        {
                            "merchant_type": "IDEAL",
                            "available": true
                        },
                        {
                            "merchant_type": "SOFORT",
                            "available": true
                        },
                        {
                            "merchant_type": "CHECKOUT",
                            "available": true
                        },
                        {
                            "merchant_type": "BANCONTACT",
                            "available": true
                        },
                        {
                            "merchant_type": "BUNQ",
                            "available": true
                        }
                    ],
                    "invite_profile_name": "NicolaLilacGorilla"
                },
                "bunqme_tab_entries": [
                    {
                        "id": 7479,
                        "created": "2025-04-16 11:34:47.887847",
                        "updated": "2025-04-16 11:34:47.887847",
                        "amount_inquired": {
                            "currency": "EUR",
                            "value": "1.00"
                        },
                        "status": "WAITING_FOR_PAYMENT",
                        "description": "Donation",
                        "alias": {
                            "iban": "NL53BUNQ2090359587",
                            "is_light": false,
                            "display_name": "N. Carter",
                            "avatar": {
                                "uuid": "419bbe21-52d7-4037-8787-a57e4c649049",
                                "image": [
                                    {
                                        "attachment_public_uuid": "ef1a52ce-6b3a-4357-b716-de91948b831d",
                                        "height": 1023,
                                        "width": 1024,
                                        "content_type": "image/png",
                                        "urls": [
                                            {
                                                "type": "ORIGINAL",
                                                "url": "https://bunq-triage-model-storage-public.s3.eu-central-1.amazonaws.com/bunq_file/File/content/921ece497cd00f4e0cef3f0f63a962c31cf3f8e35311d127d5a7b23be3d074d5.png"
                                            }
                                        ]
                                    }
                                ],
                                "anchor_uuid": null,
                                "style": "NONE"
                            },
                            "label_user": {
                                "uuid": "5f33833d-f416-428b-a654-d3b25bb3bc9d",
                                "display_name": "N. Carter",
                                "country": "NL",
                                "avatar": {
                                    "uuid": "9debf55b-70b1-4d43-8d51-d6e7bd42fb5b",
                                    "image": [
                                        {
                                            "attachment_public_uuid": "4b7e0d1d-9167-48ac-990a-70e342c87812",
                                            "height": 126,
                                            "width": 200,
                                            "content_type": "image/jpeg",
                                            "urls": [
                                                {
                                                    "type": "ORIGINAL",
                                                    "url": "https://bunq-triage-model-storage-public.s3.eu-central-1.amazonaws.com/bunq_file/File/content/6979a145b7ea9ecc3459358122cb560608f02d36d4b8cd6b770f50e36aa35512.jpg"
                                                }
                                            ]
                                        }
                                    ],
                                    "anchor_uuid": "5f33833d-f416-428b-a654-d3b25bb3bc9d",
                                    "style": "NONE"
                                },
                                "public_nick_name": "Nicola",
                                "type": "PERSON"
                            },
                            "country": "NL"
                        },
                        "redirect_url": "https://bunq.com"
                    }
                ],
                "result_inquiries": []
            }
        }
    ]
}



As we can see our URL Will be: "https://bunqme.triage.bunq.net/o/6kwsisQcpUD4hWaBZUnuW4", So we can add that to our own webpage. Sending the user to that page brings them to this page where they can make their payment.

Be aware the URL to your tab eventually expires

The Redirect to your thank you page

This is already set up. When you made the initial POST request to set up your bunq.me tab you added a redirect_url and you can see it in the response. So when the user pays, they will be automatically forwarded to bunq.com which I specified in the initial POST request.

How do I get a list of payments?

If you wonder how you got paid they you can always check the payments in your monetary account. But there is a much easier way. Simply by doing another GET request on the /bunqme-tab endpoint gets you the object that we already showed above.

Last updated

Was this helpful?