Excellent Banking API: Authentication, Endpoints, and First Request
The Excellent Banking API is now available. Learn how to authenticate, explore the key endpoints, and send your first request to parse bank statements programmatically.
We’re excited to open up a new way to work with Excellent Banking: a REST API that lets you parse, categorize, and export bank statements directly from your own applications, scripts, or workflows.
For developers, accountants managing multiple clients, or businesses that need to process statements at scale, the API removes the need for manual uploads through the web app. Everything runs through simple HTTP requests.
What the API lets you do
At a high level, the API covers the same pipeline you know from the web app — but fully automated:
- Upload statements programmatically from your backend or automation scripts
- Trigger processing and receive structured transaction data as JSON
- Download categorized Excel files ready for accounting, analysis, or import into your tools
- Check processing status so you can build reliable, event-driven workflows
You stay in full control. The API doesn’t make decisions for you — it gives you the structured output, and you decide what to do with it.
Authentication
All API calls are authenticated with API keys. Here’s how it works:
- Get your key from your Excellent Banking dashboard. Every account gets one.
- Include it in the
Authorizationheader of every request. - Rotate as needed — you can generate new keys anytime from the dashboard. Old keys are invalidated immediately.
That’s it. No OAuth dance, no token refresh logic, no complex session management. One key, one header, and you’re in.
Keys are scoped to your account, meaning you can only see and manage your own files. If you need team-level access or service accounts, reach out to us.
Key endpoints
The API follows REST conventions. Here’s a conceptual overview of what’s available:
| Resource | What it does |
|---|---|
| Statements | Upload bank statements (PDF, CSV, image), list your upload history, delete files |
| Processing | Trigger extraction + categorization on an uploaded file |
| Results | Fetch processed transactions as JSON, download the Excel export |
| Credits | Check your current balance, view usage history |
| Account | Manage your profile and API keys |
Every response is JSON. Every endpoint returns clear status codes, descriptive error messages, and consistent pagination where applicable.
We’re keeping the surface area small and focused. The goal is a handful of well-designed endpoints that cover real workflows — not a sprawling catalog that’s hard to navigate.
Your first request
Here’s what a typical integration flow looks like:
- Authenticate — include your API key in the request header
- Upload — send a bank statement file (PDF, CSV, or image) through a single multipart request
- Check status — processing runs asynchronously. Poll the status endpoint or listen for notifications
- Fetch results — once processing completes, retrieve structured transaction data as JSON
- Export — request an Excel file if your workflow needs it
The entire flow is three requests: upload, check status, fetch results. If you prefer a spreadsheet, add a fourth call to get the Excel export.
Detailed code examples for Python, JavaScript, and cURL are available in the API documentation. The docs include interactive request builders, so you can test endpoints directly in your browser before writing any code.
Pricing for API usage
API calls consume credits from the same balance you use in the web app. There’s no separate API pricing and no metered billing beyond what you’re used to:
- One parsed statement = one or two credits (depending on size)
- Same credit packs you already know: €5 for 50, €20 for 200, €50 for 700
- Credits never expire, whether you use them in the app or through the API
- Check your balance anytime through the credits endpoint
This means you can mix and match — upload some statements through the web interface, automate the rest through the API. Same account, same credits, no surprises.
Privacy and data handling
The same privacy guarantees that apply to the web app extend to the API:
- All data stays in the EU (Germany and Switzerland)
- Full GDPR compliance
- Your data is never used for training
- Full deletion available on request at any time
- API keys are transmitted exclusively over HTTPS
If you’re building integrations that handle banking data, you can be confident that our infrastructure meets European data protection standards.
What’s next for the API
This is the first version of the API, and we’re actively improving it based on feedback. On the near-term roadmap:
- Webhooks so your integration doesn’t need to poll for status
- Batch processing for submitting multiple statements in one call
- More output formats beyond Excel and JSON
- Custom categorization rules you can apply through the API
The API is built to grow with your needs. If there’s a specific feature or endpoint you’d find useful, tell us about it.
Get started
Head to your dashboard, grab your API key, and check out the full documentation. Your first request is a few minutes away.
If you run into anything or have questions, we’re at hello@excellent-banking.com.
Try Excellent Banking
Parse, categorize, and export your banking statements — automatically.
Get Started