Product Guide
Multi-Currency Adapter for Stripe – Customer Documentation
This guide explains how to connect Stripe accounts, retrieve clean API feeds for every currency, plug into accounting platforms, and stay informed with alerts. No developer jargon—just what your finance team needs.
Overview
The Multi-Currency Adapter for Stripe keeps your accounting stack clean by separating Stripe balances, payouts, and transactions per currency. Instead of hand-maintaining spreadsheets or writing brittle scripts, you connect your Stripe account once, then consume ready-to-use JSON endpoints for each currency.
Connect once
Use Stripe Connect OAuth to link your account securely. We never ask for raw API keys.
Expose per-currency feeds
Every currency gets its own balance endpoint you can plug into your accounting platform or custom workflows.
Alerts that matter
Send email, webhook, or n8n alerts based on balance thresholds, transaction activity, or API volume.
Audit-ready logs
Keep an audit trail of every API call, alert trigger, and account change. Retention depends on your plan (Pro: 7 days, Business: 90 days).
Connecting Stripe Accounts
Everything starts with linking your Stripe platform or standalone account. We use Stripe Connect OAuth, which means you log in directly with Stripe and grant read access. No API keys, no CSV uploads.
Step 1
Sign in and open the Dashboard. Hit “Connect Stripe account” and follow the OAuth prompts. Pick the environment (Test or Live) you want to sync.
Step 2
Once connected, we detect currencies from your bank accounts, balances, and recent transactions. This becomes the list of feeds exposed in the Endpoints tab.
Step 3
Need to refresh currencies? Go to Dashboard → Endpoints and hit “Refresh” for the specific account.
Dashboard & API Endpoints
The dashboard gives you KPIs at a glance and, more importantly, exposes secure API URLs for each currency. These URLs are what you plug into the rest of your finance stack.
Account currencies
GET /v1/accounts/{accountId}/currencies
Returns currencies detected for a connected account.
Balance per currency
GET /v1/accounts/{accountId}/balance/{currency}
Primary REST endpoint you paste into your finance tool. Returns balance and optionally transaction history. Use 'all' as currency to get all currencies at once.
Use ?transactions=false for balance only (faster). Add ?from=2024-01-01&to=2024-01-31&limit=50 for historical transactions (max 100 rows).
Logs & alert history
GET /v1/users/{userId}/logs
Pro/Business plans only. Filter by event_type or account_id.
✅ Recommended: Authorization Header
For maximum security, send your API token in the Authorization header:
Authorization: Bearer YOUR_API_TOKENThis prevents your token from appearing in URLs, server logs, or browser history.
⚠️ Fallback: Query Parameter (Less Secure)
If your accounting tool doesn't support custom headers, you can append the token as a query parameter:
?token=YOUR_API_TOKENNote: Tokens in URLs can be exposed in logs and analytics. Rotate regularly and monitor the Logs page for suspicious activity.
⚙️ Query Parameters
The balance endpoint supports several optional query parameters to control what data is returned:
- •
transactions=true/false— Include transaction history (default:true). Set tofalseto get balance only (faster, uses less API quota). - •
from=YYYY-MM-DD— Start date for historical transactions (inclusive) - •
to=YYYY-MM-DD— End date for historical transactions (inclusive) - •
limit=N— Maximum number of transactions to return (1-100, default: 50)
Balance Only (Fast)
GET /v1/accounts/{accountId}/balance/EUR?token={token}&transactions=falseReturns only the current balance for EUR. Perfect for high-frequency polling when you only need balance updates.
Latest Transactions
GET /v1/accounts/{accountId}/balance/EUR?token={token}Returns balance plus the latest 50 transactions (default). Transactions are sorted by date (newest first).
Historical Transactions
GET /v1/accounts/{accountId}/balance/EUR?token={token}&from=2024-01-01&to=2024-01-31&limit=50Returns up to 50 EUR transactions from January 2024. Date range and limit parameters only apply when transactions are included.
All Currencies
GET /v1/accounts/{accountId}/balance/all?token={token}Returns balances for all currencies in a single request. Use transactions=false for balance-only mode, or include transactions to get history for all currencies.
Integrations & Workflows
Use the currency-specific API endpoints with any platform that supports REST data sources or custom integrations. Here are step-by-step guides for popular tools:
📊 Accounting Software Integration
QuickBooks Online
- 1.
Set up Bank Feed
Go to Banking → Bank Feeds → Add Account → Connect an account
- 2.
Choose "File Upload" or "Web Connect"
Select File Upload if available, or use Web Connect for automated feeds
- 3.
Use External Data Source (Recommended)
Go to Settings → Account and Settings → Advanced → Custom Data Sources
Create a new data source with:
- URL:
https://your-worker-url.workers.dev/v1/accounts/{accountId}/balance/EUR - Method: GET
- Headers:
Authorization: Bearer YOUR_API_TOKEN - Format: JSON
- URL:
- 4.
Map Currency Accounts
Create separate bank accounts in QuickBooks for each currency (EUR, USD, GBP, etc.) and connect each to its respective endpoint
- 5.
Set Refresh Schedule
Configure automatic refresh (daily recommended) to keep balances and transactions up to date
💡 Pro Tip:
Use ?transactions=false for balance-only feeds (faster) or include ?from=YYYY-MM-DD&to=YYYY-MM-DD for historical imports
Xero
- 1.
Set up Bank Feed
Navigate to Accounting → Bank Accounts → Add Bank Account
- 2.
Choose "Connect via API" or "Manual Import"
For automated feeds, use Xero API with our endpoint, or use Manual Import for CSV exports
- 3.
Configure API Connection
In Xero, go to Settings → General Settings → API
Create a new bank feed connection:
- Feed URL:
https://your-worker-url.workers.dev/v1/accounts/{accountId}/balance/USD - Authentication: Header-based (Bearer token)
- Header Name:
Authorization - Header Value:
Bearer YOUR_API_TOKEN
- Feed URL:
- 4.
Create Multi-Currency Bank Accounts
Set up separate bank accounts for each currency (EUR Bank, USD Bank, etc.) and link each to its corresponding endpoint
- 5.
Enable Auto-Reconciliation
Xero will automatically match transactions based on amount and date. Review and approve matches regularly
Sage Business Cloud Accounting
- 1.
Access Bank Feeds
Go to Banking → Bank Accounts → Import Bank Statement
- 2.
Set up API Integration
Navigate to Settings → Integrations → Custom API
- 3.
Configure REST Data Source
Add a new data source with these settings:
- Endpoint:
https://your-worker-url.workers.dev/v1/accounts/{accountId}/balance/GBP - Request Type: GET
- Authentication: Custom Header
- Header:
Authorization: Bearer YOUR_API_TOKEN - Data Format: JSON
- Endpoint:
- 4.
Map Response Fields
Map
account.balanceto Balance,transactions[].amountto Transaction Amount, etc. - 5.
Schedule Automatic Imports
Set up daily or weekly automatic imports to keep your books synchronized
⚙️ n8n Workflow Automation
Setting up n8n Workflow
n8n is a powerful workflow automation tool that can poll your Stripe balance endpoints and trigger actions based on the data. Here's how to set it up:
Step 1: Create a New Workflow
- Open your n8n instance (cloud or self-hosted)
- Click New Workflow
- Name it "Stripe Multi-Currency Balance Monitor"
Step 2: Add HTTP Request Node
- Drag and drop an HTTP Request node onto the canvas
- Configure the node:
- Method: GET
- URL:
https://your-worker-url.workers.dev/v1/accounts/{accountId}/balance/EUR - Authentication: Generic Credential Type
- Header Name:
Authorization - Header Value:
Bearer YOUR_API_TOKEN
- Click Send Test Request to verify the connection
Step 3: Parse JSON Response
- Add a Code node after the HTTP Request node
- Use this JavaScript to extract balance and transactions:
const response = $input.item.json; return { accountId: response.account.id, currency: response.account.currency, balance: response.account.balance / 100, // Convert from cents transactions: response.transactions?.map(t => ({ id: t.id, amount: t.amount / 100, date: new Date(t.created * 1000).toISOString(), description: t.description })) || [] };
Step 4: Add Schedule Trigger (Optional)
- Add a Schedule Trigger node at the start
- Set it to run every hour, daily, or as needed
- Connect it to your HTTP Request node
Step 5: Add Conditional Logic
- Add an IF node after the Code node
- Set conditions like:
- Balance below threshold → Send alert
- Large transaction detected → Notify team
- New currency detected → Create new account
Step 6: Add Action Nodes
Based on your conditions, add nodes to:
- Send Email (Gmail, Outlook, SMTP)
- Send Slack Message to your finance channel
- Update Google Sheets with balance data
- Create Airtable Record for transaction tracking
- Post to Webhook to trigger other systems
📋 Example n8n Workflow Structure
💡 Pro Tips for n8n:
- Use
?transactions=falsefor faster balance-only checks - Store your API token as an n8n credential for security
- Use Error Trigger nodes to handle API failures gracefully
- Create separate workflows for each currency to avoid rate limits
- Use Webhook nodes to receive real-time alerts from our platform
🔧 Other Integration Patterns
REST API Data Sources
- Create a new REST or external data source in your accounting platform.
- Use the balance endpoint URL above (one per currency).
- Add the Authorization header: Bearer {YOUR_API_TOKEN}.
- Set refresh interval according to your platform's capabilities.
Automation Tools (n8n / Zapier / Make)
- Use an HTTP node to poll the endpoint(s) you care about.
- Trigger additional alerts or workflows based on response JSON.
- For high-frequency updates, consider the Alerts webhooks.
Custom Integration
- Make GET requests to the balance endpoints with your API token.
- Parse the JSON response for balance and transaction data.
- Integrate the data into your internal systems or dashboards.
- Set up scheduled jobs to fetch updated data regularly.
Tip
Need a direct connector we don't list yet? Forward the documentation link to your tool vendor—they only need the per-currency endpoint URL and your token parameter.
Alerts & Notifications
Alerts keep you ahead of low balances, heavy API traffic, or critical transactions. Each plan unlocks different channels, but the setup flow is the same.
Email Alerts
Send a styled email whenever a condition hits. Perfect for finance teams who want a daily digest or instant warning.
- Open Dashboard → Alerts → New Alert.
- Choose Email and enter the address you want notified.
- Select a condition (e.g., Balance below X EUR).
- Save. Emails are delivered via Resend, so no extra setup.
Webhook Alerts
POST the alert payload to any HTTPS endpoint. Use this to push into internal tools, Slack Apps, or analytics stacks.
- Create a new alert and pick Webhook.
- Paste your HTTPS endpoint (we recommend verifying via secret token).
- When triggered, we send JSON with account_id, currency, balance, condition_met, etc.
n8n Workflow
Trigger your n8n cloud/self-hosted workflow directly. Use this for rich automations like sending Slack blocks, updating Airtable, or posting into ERPs.
- In n8n, create a Webhook node and copy the URL.
- In the dashboard alert form, choose n8n and paste that URL.
- Build whatever workflow you want downstream—the payload structure is the same as webhooks.
FAQ & Support
How often do endpoints refresh?
We pull new balances every few minutes on the backend. Your accounting tool can poll as often as you like; there’s no hard cap besides the plan limits.
Can we export logs?
Yes—use the Logs tab filters, then click “Export CSV.” Pro keeps 7 days; Business keeps 90 days, perfect for audits.
Who sees the API token?
Only signed-in users on your account. Rotate it anytime from Dashboard → Overview → Regenerate token.
Need white-glove setup?
Contact support@ladonnee.com and we can help integrate the API with your accounting platform and finance stack.