canonical: https://jentic.com/apis/bunq.com/bunq

# bunq API

The bunq API is the public banking API for bunq, a European mobile bank, covering monetary accounts, payments, scheduled payments, cards, attachments, bunq.me payment requests, currency conversion, and a large surface of user, device, and session management endpoints. It supports both a sandbox environment at public-api.sandbox.bunq.com and the production environment at api.bunq.com. Authentication uses bunq's installation-and-session model - register an installation, register a device-server, then create a session to obtain a session token used for API calls.

## For AI agents

Move money between bunq monetary accounts, send and request payments, manage cards and scheduled payments, and read transaction history on a bunq user's behalf.

## Scope

Does not handle non-bunq bank accounts, card processing for non-bunq merchants, or general accounting - use for bunq-account banking operations only.

## Capabilities

- Create and read bunq monetary-account-bank accounts and balances
- Initiate single payments and request-inquiry payment requests
- Schedule recurring payments via the scheduled-payment endpoints
- Issue and manage debit, credit, and card-batch operations
- Create bunq.me tabs and fundraiser profiles for collecting payments
- Run currency conversions and request foreign-exchange quotes
- Manage installations, device-servers, and session-servers in bunq's auth flow

## Use cases

### Send and receive payments programmatically

Initiate outbound payments from a bunq monetary account and create inbound bunq.me payment requests or tabs for customers. Supports both single and scheduled payments, with status visible through the related read endpoints. Suitable for European businesses already on bunq that want to script reconciliation or payouts without manual taps in the bunq app.

Example prompt: POST a payment under /user-{userType}/{userID}/monetary-account/{accountID}/payment with amount and counterparty alias, then read it back to confirm status.

### Card issuance and management

Create and manage bunq debit and credit cards, including batch operations and card-name updates. Useful for fintech use cases that issue physical or virtual cards on top of bunq accounts and need to control card status without operator intervention.

Example prompt: Issue a virtual debit card through the card-debit endpoints, then update its name with the card-name resource so the holder sees the correct label.

### Currency conversion and FX

Quote and execute currency conversions between bunq monetary accounts denominated in different currencies. The currency-conversion and currency-cloud-payment-quote endpoints expose quote retrieval and execution, suitable for treasury workflows that move balances across EUR, USD, and other supported currencies.

Example prompt: Request a currency-cloud-payment-quote, present the rate, then execute a conversion between the EUR and USD bunq monetary accounts on the user's behalf.

### AI agent personal banking via Jentic

An AI assistant can read a bunq user's recent transactions, prepare a payment, and confirm with the user before sending - all without the agent ever holding the bunq session token directly. Jentic isolates the bunq installation, device-server, and session-server credentials and issues scoped, short-lived access for each call.

Example prompt: Search Jentic for 'send a bunq payment', load the payment schema, and execute after the user confirms the recipient, amount, and currency.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/installation` | Register a new bunq installation |
| POST | `/device-server` | Register a device-server for an installation |
| POST | `/session-server` | Create a session and obtain a session token |
| GET | `/user` | List bunq users associated with the session |
| POST | `/attachment-public` | Upload a public attachment |
| POST | `/avatar` | Create an avatar from an uploaded attachment |
| DELETE | `/session/{itemId}` | End an active bunq session |

## Key resources

- **User** — Read bunq user profile data and update user-company information.
- **Installation / DeviceServer / Session** — Establish bunq's installation, device-server, and session-server flow to obtain a session token.
- **Payment** — Initiate single payments between bunq monetary accounts and counterparties.
- **Scheduled Payment** — Create and manage recurring scheduled payments.
- **Card** — Manage debit and credit cards including card-batch and card-name operations.
- **bunq.me Tab** — Create payment requests and fundraiser profiles for collecting payments.
- **Currency Conversion** — Quote and execute currency conversions between bunq monetary accounts.
- **Attachment** — Upload public attachments and avatars used elsewhere in the API.

## Why Jentic

- **Setup:** Wiring the bunq API by hand means running its installation, device-server, and session-server handshake against api.bunq.com/v1, choosing the sandbox or production host, and signing each request yourself. Through Jentic you install once, import the bunq API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** bunq establishes access through a session handshake and references a session by id only when deleting it, so scope the agent by the operations it needs, such as reading the user or uploading an attachment. Because you choose the allowed operations, it can read account data without being able to delete a session unless you add that.
- **Credential handling:** Your bunq API key and installation and device-server material are stored once, encrypted, by your own Jentic One instance, and only a scoped, short-lived session token is injected at execution time. The long-lived secrets never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'read the bunq user' or 'upload an attachment', and Jentic returns the matching bunq operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Stripe API** — Stripe is a payment processor rather than a bank, with a different mental model for charges and customers.
- **Plaid API** — Plaid aggregates bank account data across many institutions, including some European banks.
- **Akamai API** — Akamai for edge security and bot mitigation in front of fintech apps that wrap bunq.

## FAQ

### What authentication does the bunq API use?

bunq uses an installation-and-session model: register an installation, register a device-server with your API key, then create a session-server to obtain a session token used in subsequent calls. Through Jentic, the long-lived API key and installation/device material stay vaulted while the agent uses scoped, short-lived session credentials per operation.

### Can I send a payment programmatically through the bunq API?

Yes. After establishing a session, POST a payment under the user's monetary-account path with amount, currency, and counterparty alias. The response includes the payment ID, which you can read back to verify status.

### Does bunq support scheduled and recurring payments?

Yes - the scheduled-payment endpoints create, read, update, and delete recurring payments tied to a monetary account, making it suitable for subscriptions, rent, or any recurring outflow.

### How do I run currency conversion between bunq accounts?

Use the currency-conversion and currency-cloud-payment-quote resources to retrieve a quote and then execute the conversion between two bunq monetary accounts in different currencies. Quotes are time-limited; execute promptly after retrieval.

### What are the rate limits for the bunq API?

The OpenAPI spec does not declare explicit limits. bunq publishes per-application throttle guidance in their developer documentation - handle 429 responses with backoff and reuse session tokens until they expire to minimise authentication overhead.

### How do I send a bunq payment through Jentic?

Run `pip install jentic` and search for 'send a bunq payment'. Jentic returns the matching payment operation under the user/monetary-account path, you load the schema, and execute with the recipient and amount - installation/session credentials stay in your Jentic One instance.

### Can I limit what my agent is allowed to do with the bunq API?

Yes. Jentic One is self-hosted, so your own rules decide which bunq operations and credentials the agent may use. You can grant only the calls it needs, such as reading the user profile or uploading a public attachment, so it reads account data without being able to end a session unless you add that operation. Your bunq key and installation and device-server material stay in your own instance, and only a scoped, short-lived session token is injected per call.
