Skip to main content
cronable
Finance automation

Close the books with workflows you can audit.

Cronable is self-hosted workflow automation for finance teams. Supplier invoices are read out of the AP inbox, overdue receivables are chased every morning, and failed card payments get a follow-up before anyone asks. It all runs on your own machine or server, every run is recorded, and your credentials stay encrypted on your own disk. Describe a workflow in a sentence and the built-in AI assistant builds it.

On the canvas

Supplier invoice to bill, with a check in the middle

The accounts payable workflow from below, as it looks in Cronable. Each card is one job. A job runs only when the one before it succeeded, and an invoice that fails the check goes to a person instead of the books.

jobs/finance
Integrations

The tools your week is made of

Finance work already runs through a mailbox, an accounting system, a payment processor and a spreadsheet. These are the integrations the workflows on this page use.

Inbox (IMAP)

Watches the AP or receipts mailbox and starts one run per new email. Plain-text mail reads cleanly; HTML or multipart mail arrives as raw MIME (up to 16,384 characters), and attachments aren’t read. Strictly read-only: nothing is moved, flagged or deleted.

Claude

Claude (API)

Reads the email text and returns the vendor, invoice number, amount and due date as JSON for the next step.

Integration details
QuickBooks

QuickBooks Online

Query bills, vendors and balances, create customers, and send a custom request for the rest of the API, such as creating a bill.

Integration details
Xero

Xero

Get invoices filtered down to what is overdue, get or create contacts, and send custom requests for anything else.

Stripe

Stripe

The Stripe webhook trigger fires on events like invoice.payment_failed and invoice.paid. The action lists charges, customers and invoices, or gets your balance.

Integration details
Google Sheets

Google Sheets

Append a row per invoice or expense, or read a range from the close workbook.

Integration details

Excel

Read and write ranges, or append table rows, in a Microsoft 365 workbook.

Database

Run SQL against Postgres, MySQL or SQL Server, such as a reporting database, with values sent as real bind parameters.

Slack

Post the exception, the chase list or the failure alert to the finance channel.

Integration details

Microsoft Teams

Post the same alerts to a Teams channel through a Workflows webhook.

Integration details

Email (SMTP)

Send the chase list or the month-end note from your own mail account.

Workflows

Four finance workflows, step by step

Each one is a chain of jobs. Every step is a real Cronable job type, and every run lands in the history with its output and logs.

Supplier invoices, out of the inbox and into the books

When a supplier invoice lands in the AP inbox…

  1. 1An Inbox trigger picks up the email and passes its body down the chain. Plain-text invoices read cleanly; HTML mail arrives as raw MIME, and attachments aren’t read.
  2. 2A Claude (API) step pulls out the vendor, invoice number, amount and due date as JSON.
  3. 3A Code step parses that JSON and fails the run if a field is missing, so a half-read invoice never reaches the books.
  4. 4A QuickBooks step creates the bill through a custom request. Rather have a person post it? Append a row to a review sheet instead.
  5. 5If the check fails, a failure handler posts the error to the AP channel in Slack.

Invoices that read cleanly go straight through. The ones that don’t arrive in Slack with the reason attached.

Failed card payments, followed up the same day

When a customer’s card payment fails…

  1. 1The Stripe webhook trigger fires on invoice.payment_failed and reaches your machine through the hosted relay.
  2. 2A Filter step lets through only invoices above the amount you set.
  3. 3An Email step sends the customer a polite note from your own accounts address, with the amount due.
  4. 4A Slack step tells the account owner, so nobody is surprised on the next call.

Every failed payment gets the same response, on the day it fails.

A chase list on your desk every morning

When the working day starts…

  1. 1A daily schedule runs a Xero step that gets authorised invoices with an amount still due.
  2. 2A Code step totals what is owed and lists each invoice, oldest first.
  3. 3A Filter step skips the email on mornings when nothing is overdue.
  4. 4An Email step sends the list. On QuickBooks? A Query step does the same job.

Getting paid becomes a two-minute daily habit instead of a Friday afternoon.

Month-end scripts that start themselves

When the month closes…

  1. 1A monthly schedule runs the reconciliation script you already have (Python, a shell script, anything) as a Terminal job on your own machine.
  2. 2A retry policy with backoff covers a slow export or a flaky network share.
  3. 3A Claude (API) step turns the script’s output into a short variance note in plain language.
  4. 4An Email step sends the note to the controller. If the script fails, a failure handler posts its error to Slack.

The checklist starts without anyone kicking it off, and the run history shows when each step finished.

What changes

What changes for the finance team

Fewer things done by hand, and a record of everything that was done.

Exceptions, not everything

People see the invoices that failed a check and the payments that bounced. Everything else goes through and is recorded.

Nothing stops silently

A job that fails retries, then hands off to a failure handler. You hear about it in Slack or by email the same day, not at month-end.

An answer for the auditor

Every run keeps its status, timing, output and secret-masked logs. Every change to a workflow is a commit in a git repository you own.

You decide where financial data goes

Credentials stay encrypted on your disk, are never written into a workflow file, and are masked out of every log. Invoice and payment data goes only where your workflow sends it — through the relay if you use Stripe webhooks, to a model step if you add one.

The numbers you report on

  • Time to close the books
  • Days sales outstanding
  • Invoices posted without a manual touch
  • Time from invoice received to bill posted
  • Late-payment fees

We don’t promise figures. Cronable records every run, so you can measure these yourself, before and after.

Questions

Finance automation, answered

Where do our accounting credentials live?

On your machine. QuickBooks, Xero and Stripe credentials are stored in a local database, encrypted with AES-256-GCM under a key only you hold. Workflows refer to them by name, never by value, and resolved values are masked out of logs, output and the live stream. The job files hold no secrets, so the git repository is safe to share with your team.

What happens when a step fails?

If you set a retry policy, the job retries up to 20 times, with fixed or exponential backoff. If it still fails, the chain stops there: jobs that depend on its success don’t run. The failure handler you chose runs instead and receives the error, so it can post to Slack, open a ticket or email you. Cronable can also email you whenever any job fails.

Can we prove what happened six months later?

Yes. Every run is kept with its trigger, status, timing and output, and run history has no expiry unless you set one. Full per-run log files are kept for 30 days by default, and you can keep them longer. Every change to a workflow is a git commit in a repository you own, and on the Business plan an audit trail records who changed what in the app.

Who can change a workflow?

On Plus and Business, each person signs in with their own account. Business adds single sign-on with your identity provider, role-based access, the audit trail and four-eyes change approval: a change to a job is staged until a different admin approves it, so nobody edits the payment run alone.

What does the AI do, and what can’t it do?

Two separate things. The built-in assistant builds workflows: describe one in a sentence and it drafts the jobs, schedule and failure handling on the canvas for you to review. It has no shell, browser or file tool and never sees a secret value. Anything it runs, and any change that could make a job run on its own, asks you to confirm first, and goes through the same roles and approvals as your own changes. Inside a workflow, an AI step such as Claude (API) reads text and returns text. It extracts fields or writes a summary, and the next step checks what it produced. You decide which steps act on its output.

Where does it run?

On your own machine: a Mac or Windows app, or a server. Your workflows, run history and secrets stay there by default. Inbound webhooks such as Stripe’s reach you through Cronable’s hosted relay, which holds each event for up to 24 hours until your machine collects it, and webhooks need a paid plan. Polling triggers like the inbox reach out from your machine and don’t use the relay.

Do we pay per invoice?

No. Plans are sized by how many jobs you define, not how often they run, so a workflow that handles ten invoices a month costs the same as one that handles ten thousand. The AI assistant has a daily message allowance per plan, and AI steps inside your workflows run on your own model account.

Automate your operations.

Cronable is launching soon. Join the waitlist and we’ll email you the moment self-serve accounts — and the apps for Mac, Windows and Linux — go live.

Invoice chasing is deeply cronable.