Tally for Stripe
Stripe payouts, reconciled to the bank — automatically.
Tally reads Stripe charges, payouts, balance transactions, refunds, disputes, and subscriptions. No writes are possible — every confirm, capture, refund, or void endpoint is blocked at the application layer.
What Tally does with Stripe
Tally connects to Stripe to automate the data flow into your accounting stack — with explicit safety rules at every step.
Payout-to-deposit reconciliation
Reads payouts and ties each one to the corresponding deposit in your QuickBooks bank feed. Includes the gross / fees / net split for accurate fee categorization.
Charge-level revenue tracking
Reads charges, payment intents, and the associated balance transactions for revenue recognition. Last-4 and brand of cards are preserved for matching; full card numbers and fingerprints are stripped.
Refund & dispute handling
Reads refunds and disputes (chargebacks) so each can be categorized to the correct contra-revenue or expense account.
Invoice & subscription visibility
For subscription businesses, Tally reads invoices, subscriptions, products, prices, and customers to produce accurate revenue-recognition reports.
Balance transaction ledger
The unified balance-transactions endpoint gives Tally a single ledger of every gross / fee / net movement, simplifying month-end reconciliation.
Multi-account support
Each Ballast client gets their own Stripe API key in their own encrypted config row. Tally cannot read across client boundaries.
How it works
Setup is straightforward and auditable. No copy-pasted CSVs, no shared logins.
Authorize Tally in Stripe
A Ballast accountant initiates the connection. Authorization happens through Stripe's standard OAuth or API-key flow with the minimum required scopes.
Credentials encrypted at rest
Tokens are immediately encrypted with AES-256-GCM and stored in Tally's PostgreSQL database. Plaintext credentials never touch logs or error reports.
Tally pulls and normalizes data
Tally fetches data from Stripe on a schedule, normalizes it, and ties it back to the corresponding records in QuickBooks Online.
Your accountant takes it from there
A Ballast accountant reviews exceptions, posts entries, and closes the books. You get monthly financials without lifting a finger.
Availability
This integration is provided to Ballast Consulting Group's accounting clients at no additional charge as part of their engagement. There is no per-seat fee, per-API-call fee, or per-integration fee billed to the client. The cost is included in your accounting fee.
Tally isn't sold separately. Access requires an active engagement with Ballast Consulting Group as your finance and accounting department. If you're interested in becoming a Ballast client, please reach out.
Security & compliance
Every Tally integration follows the same safety pattern. Here is how the Stripe integration specifically is locked down.
Strictly read-only
assertAllowedMethod() in the Stripe fetcher rejects all non-GET requests. Even if an agent attempts to hit /charges/{id}/refund, the request fails before it leaves Tally.
Endpoint allowlist
Only 12 endpoint prefixes are reachable: charges, payment_intents, refunds, balance_transactions, payouts, disputes, customers, products, prices, invoices, subscriptions, balance. Nothing else.
Action endpoints blocked
/confirm, /capture, /cancel, /void, /finalize, /pay, /send, /tokens, /payment_methods, /sources, /files are blocked even within allowed prefixes. No write actions of any kind.
PII sanitization
Card fingerprints, full card numbers, bank account numbers, CVCs, and street addresses are stripped from all responses inside the Stripe-core package — before data reaches dashboards or AI agents. Card last-4 and brand are preserved for reconciliation.
Publishable keys rejected
If you try to connect with a pk_* key, Tally rejects it with a clear error. Only sk_live_* / sk_test_* secret keys are accepted.
Pinned API version
Tally pins a Stripe-Version header on every request so behavior doesn't drift if your account's default API version changes.
Frequently asked questions
Can Tally process refunds in Stripe?
No. Tally is strictly read-only. The /refunds/{id}/refund endpoint is blocked, and POST on /refunds is rejected by the method allowlist. Refunds must be processed through your Stripe dashboard.
What kind of API key does Tally need?
A Stripe secret key — sk_live_* for production or sk_test_* for testing. Publishable keys (pk_*) are rejected. The key never leaves Tally's encrypted database.
Are amounts in dollars or cents?
Cents. Stripe's API uses the smallest currency unit (cents for USD). Tally preserves cents internally and converts to dollars only when displaying to the user.
Can Tally read my customer's full card numbers?
No. Stripe's API only ever returns the last-4 and brand of a card — never the full number, fingerprint, or CVC. Tally additionally strips the fingerprint and any street addresses before data reaches the dashboard.
What's the rate limit?
Tally is configured at 100 req/sec for live mode and 25 req/sec for test mode, matching Stripe's documented limits. The token bucket is per-account so different clients don't share a budget.
Talk to Ballast about your books
Tally's Stripe integration comes at no additional charge when Ballast runs finance and accounting for you. If you need a team that actually understands the systems your business runs on, get in touch.