MC AdapterBeta

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.

View Interactive API Reference (Swagger) →

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.

  1. 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.

  2. 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.

  3. Step 3

    Need to refresh currencies? Go to Dashboard → Endpoints and hit “Refresh” for the specific account.

Reconnecting an account after rotating credentials? Click the three-dot menu next to the account and choose "Reconnect". Your existing endpoints and alerts stay intact.

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_TOKEN

This prevents your token from appearing in URLs, server logs, or browser history.

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 to false to 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)

POST /v1/accounts/{accountId}/balance/EUR?transactions=false

Returns only the current balance for EUR. Perfect for high-frequency polling when you only need balance updates. Token in Authorization header (not in URL).

Latest Transactions

POST /v1/accounts/{accountId}/balance/EUR

Returns balance plus the latest 50 transactions (default). Transactions are sorted by date (newest first). Token in Authorization header (not in URL).

Historical Transactions

POST /v1/accounts/{accountId}/balance/EUR?from=2024-01-01&to=2024-01-31&limit=50

Returns up to 50 EUR transactions from January 2024. Date range and limit parameters only apply when transactions are included. Token in Authorization header (not in URL).

All Currencies

POST /v1/accounts/{accountId}/balance/all?transactions=false

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. Token in Authorization header (not in URL).

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 integration platforms:

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

  1. Open your n8n instance (cloud or self-hosted)
  2. Click New Workflow
  3. Name it "Stripe Multi-Currency Balance Monitor"

Step 2: Add HTTP Request Node

  1. Drag and drop an HTTP Request node onto the canvas
  2. Configure the node:
    • Method: GET
    • URL: https://stripe-multicurrency-adapter.round-cloud-7d27.workers.dev/v1/accounts/{accountId}/balance/EUR
    • Authentication: Generic Credential Type
    • Header Name: Authorization
    • Header Value: Bearer YOUR_API_TOKEN
  3. Click Send Test Request to verify the connection

Step 3: Parse JSON Response

  1. Add a Code node after the HTTP Request node
  2. 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)

  1. Add a Schedule Trigger node at the start
  2. Set it to run every hour, daily, or as needed
  3. Connect it to your HTTP Request node

Step 5: Add Conditional Logic

  1. Add an IF node after the Code node
  2. 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

1. Schedule Trigger (Every 1 hour)
2. HTTP Request (POST /v1/accounts/{accountId}/balance/EUR)
3. Code (Parse JSON response)
4. IF (Balance < 1000 EUR?)
├─ Yes → Send Slack Alert
└─ No → Continue
5. Google Sheets (Update Balance Tracker)

Pro Tips for n8n:

  • Use ?transactions=false for 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

Sync to QuickBooks via Make.com

How to sync Stripe multi-currency balances into QuickBooks (via Make)

This tutorial shows you how to use Make.com to automatically sync your Stripe multi-currency balances into QuickBooks Online as separate bank accounts per currency.

Step 1: Your API Endpoint

Your app exposes currency-specific endpoints. Here's an example using curl:

curl -X POST \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://stripe-multicurrency-adapter.round-cloud-7d27.workers.dev/v1/accounts/{accountId}/balance/EUR?transactions=true

Response:

{
  "account": {
    "id": "stripe_EUR",
    "currency": "EUR",
    "balance": 310010  // Amount in cents (3100.10 EUR)
  },
  "transactions": [
    {
      "id": "txn_123",
      "created": 1703123456000,
      "amount": 50000,
      "fee": 1500,
      "net": 48500,
      "type": "charge",
      "description": "Payment for invoice #123"
    }
  ]
}

Each currency (EUR, USD, GBP, etc.) has its own endpoint. You'll create separate QuickBooks bank accounts for each currency.

Step 2: Create Make.com Scenario

  1. Create a new scenario in Make.com

    Name it "Stripe to QuickBooks Multi-Currency Sync"

  2. Add Schedule Trigger

    Set it to run daily (or as often as needed) to keep balances in sync

  3. Add HTTP Module (POST Request)

    • Method: POST
    • URL: https://stripe-multicurrency-adapter.round-cloud-7d27.workers.dev/v1/accounts/{accountId}/balance/EUR
    • Authentication: Bearer Token
    • Token: YOUR_API_TOKEN (in Authorization header, not URL)
    • Query Parameters: ?transactions=true (optional, e.g., ?from=2024-01-01&to=2024-01-31&limit=50)

    Create separate HTTP modules for each currency (EUR, USD, GBP, etc.)

  4. Add Iterator Module

    If you want to process multiple currencies in one scenario, use an Iterator to loop through currencies. Otherwise, create separate HTTP modules for each currency.

  5. Add QuickBooks Online Module

    Connect your QuickBooks account and configure:

    • Action: Create Journal Entry (or Update Bank Account Balance)
    • Account: Stripe EUR Bank Account (create this in QuickBooks first)
    • Amount: {{balance}} / 100 (convert from cents)
    • Currency: EUR
    • Date: Current date
    • Memo: "Stripe EUR Balance Sync"
  6. Repeat for Each Currency

    Create separate QuickBooks modules for USD, GBP, and other currencies. Each should update its corresponding bank account in QuickBooks.

Example Make.com Scenario Structure

1. Schedule Trigger (Daily at 9 AM)
2. HTTP Request → POST /balance/EUR
3. QuickBooks → Create Journal Entry
└─ Debit: Stripe EUR Bank Account
└─ Credit: Stripe Sales
└─ Amount: {{balance}} / 100 EUR
4. HTTP Request → POST /balance/USD
5. QuickBooks → Create Journal Entry
└─ Debit: Stripe USD Bank Account
└─ Credit: Stripe Sales
└─ Amount: {{balance}} / 100 USD

Pro Tips for Make.com + QuickBooks:

  • Create separate bank accounts in QuickBooks for each currency (e.g., "Stripe EUR", "Stripe USD")
  • Use ?transactions=false for balance-only syncs (faster)
  • Store your API token as a Make.com credential for security
  • Set up error handling in Make.com to catch API failures
  • Use QuickBooks Journal Entries to maintain proper accounting (Debit bank, Credit sales)
  • Consider running the scenario daily or weekly depending on your reconciliation needs

Other Integration Patterns

REST API Data Sources

  1. Create a new REST or external data source in your accounting platform.
  2. Use the balance endpoint URL above (one per currency).
  3. Add the Authorization header: Bearer {YOUR_API_TOKEN}.
  4. Set refresh interval according to your platform's capabilities.

Automation Tools (n8n / Zapier / Make)

  1. Use an HTTP node to poll the endpoint(s) you care about.
  2. Trigger additional alerts or workflows based on response JSON.
  3. For high-frequency updates, consider the Alerts webhooks.

Custom Integration

  1. Make POST requests to the balance endpoints with your API token.
  2. Parse the JSON response for balance and transaction data.
  3. Integrate the data into your internal systems or dashboards.
  4. 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.

FAQ & Support

How often do endpoints refresh?

Endpoints fetch data directly from Stripe in real-time when called. There's no backend polling—each API request retrieves the current balance and transactions from Stripe. Your accounting tool can call the endpoints as often as needed; 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.