Stripe Integration
Connect your Stripe account to sync charges, fees, refunds, and payouts into your accounting automatically.
Overview
Not product billing
Anchor itself is free forever — there is no seat plan or storage add-on to buy. Stripe here is optional for (1) syncing your own Stripe business activity into the books, and (2) card payment links on invoices you send to your customers.
Anchor can use Stripe in two ways:
- Stripe Connect — Connect your Stripe account to sync charges, fees, refunds, payouts, and customers into accounting
- Invoice payment links — One-time Checkout links so your customers can pay invoices by card
Stripe Connect (Account Sync)
Connect your Stripe account from Settings > Integrations > Stripe to automatically import all your Stripe activity into Anchor's accounting system.
How It Works
Anchor uses the standard GAAP/IFRS-compliant gross method:
- Every charge is recorded at its full amount (gross revenue)
- Stripe fees are tracked as separate expenses
- Refunds reverse the original revenue entry
- Payouts reconcile from the Stripe clearing account to your bank
- Customers sync as contacts in your contact book
Stripe is treated as a clearing account (current asset, code 1350). This gives you a complete, audit-ready picture of your Stripe activity.
Connecting Your Account
- Go to Settings > Integrations > Stripe
- Click Connect Stripe Account
- Authorize Anchor in the Stripe OAuth flow
- Configure your account mappings (clearing, revenue, fees, and payout bank account)
- Run your first sync
You must configure account mappings before running a sync. Anchor suggests defaults based on your existing chart of accounts, but you should verify they match your accounting setup.
Account Mappings
After connecting, you need to map three accounts from your chart of accounts:
| Mapping | Type | Purpose |
|---|---|---|
| Clearing Account | Asset | Holds funds between charge and payout (acts as a Stripe clearing account) |
| Fees Account | Expense | Stripe's per-transaction processing fees |
| Revenue Account | Revenue | Where charge amounts are credited |
| Payout Bank Account | Bank Account | Where Stripe payouts are deposited |
These mappings use your existing chart of accounts, so they work regardless of your country's accounting standards or numbering conventions. You can change them at any time from the integration settings page.
Journal Entries Created
On each charge:
- DR Stripe Clearing (charge amount)
- CR Revenue (charge amount)
- DR Payment Processing Fees (Stripe fee)
- CR Stripe Clearing (Stripe fee)
On each refund:
- DR Revenue (refund amount)
- CR Stripe Clearing (refund amount)
On each payout:
- DR Bank Account (payout amount)
- CR Stripe Clearing (payout amount)
Webhook Events (Connected Account)
| Event | What it does |
|---|---|
charge.succeeded | Records revenue and fee journal entries |
charge.refunded | Reverses revenue entries for each refund |
payout.paid | Records bank transfer and creates bank transaction |
customer.created | Creates or links a contact |
customer.updated | Updates the linked contact |
account.application.deauthorized | Marks integration as disconnected |
Self-Hosting Setup
To enable Stripe Connect (host/operator configuration):
- Register a Stripe Connect platform
- Set
STRIPE_CONNECT_CLIENT_IDin your environment - Configure the OAuth redirect URI:
https://your-domain.com/api/v1/integrations/stripe/callback - Create a Connect webhook in your Stripe dashboard pointing to
https://your-domain.com/api/integrations/stripe/webhookwith the following events:charge.succeeded,charge.refunded,payout.paid,payout.failed,customer.created,customer.updated,account.application.deauthorized - Set
STRIPE_CONNECT_WEBHOOK_SECRETto the signing secret from that webhook
Anchor uses a single platform-level Connect webhook rather than per-account webhooks. This means connected users cannot accidentally break the integration by deleting webhooks from their own Stripe dashboard. Deauthorization events are also always delivered to the platform.
MCP Tools
The following MCP tools are available for AI agents:
| Tool | Description |
|---|---|
get_stripe_integration_status | Check connection status, account mappings, and last sync time |
connect_stripe | Generate an OAuth URL to connect a Stripe account |
disconnect_stripe | Disconnect the Stripe account (requires confirmation) |
trigger_stripe_sync | Start a manual sync for the last N days (1-90) |
list_stripe_sync_log | View recent sync history with status and errors |
Invoice Payment Links
When you send an invoice to a customer, Anchor generates a Stripe-powered payment link they can use to pay by card.
How it works:
- Create an invoice and add line items
- Send the invoice to your customer - it includes a payment link
- The customer clicks the link and is taken to a Stripe Checkout page
- They enter their card details and complete payment
- Stripe fires a
checkout.session.completedwebhook - Anchor automatically marks the invoice as paid and creates a journal entry (DR Bank, CR Accounts Receivable)
The entire flow is automatic after sending - no manual reconciliation needed.
Webhook events (invoice payments / Connect)
When Stripe is configured by the host, typical events include:
| Event | What it does |
|---|---|
checkout.session.completed | Marks invoice payments when customers pay via payment link |
| Connect charge / refund / payout events | Sync Stripe activity into the ledger when Connect is used |
Without Stripe
Stripe is optional. Without it:
- Core accounting, invoicing, banking, and VAT reports still work
- Card payment links on invoices are not available
- See Billing & plans — Anchor remains free forever