SheetLink

Any output, any schedule, any infrastructure you already use.

Copy-paste these patterns to build your own bank data pipeline.

Export a fresh CSV every morning and archive it in S3 for a permanent transaction record.

# crontab -e
0 7 * * * sheetlink sync --output csv && \
  aws s3 cp transactions.csv \
  s3://my-bucket/bank-data/$(date +\%Y-\%m-\%d).csv

Refresh your database every Sunday night and rebuild your dbt models against fresh transaction data.

# crontab -e — every Sunday at 11 PM
0 23 * * 0 sheetlink sync --output postgres && \
  cd /path/to/dbt-project && \
  dbt run --select finance

Refresh your Google Sheet on the first of each month — your existing formulas and pivot tables update automatically.

# crontab -e — 1st of month at 8 AM
0 8 1 * * sheetlink auth --api-key $SL_API_KEY && \
  sheetlink sync

Sync to JSON, parse for transactions over a threshold, and post a Slack message.

sheetlink sync --output json

# In Node.js (check-large-txns.js):
const txns = JSON.parse(fs.readFileSync('transactions.json'));
const large = txns.filter(t => Math.abs(t.amount) > 500);
for (const t of large) {
  await fetch(SLACK_WEBHOOK_URL, {
    method: 'POST',
    body: JSON.stringify({
      text: `Large transaction: ${t.merchant_name} — $${t.amount} on ${t.date}`
    })
  });
}

Run a scheduled bank sync from a GitHub Actions workflow. Store your API key as a repository secret.

# .github/workflows/bank-sync.yml
name: Daily Bank Sync

on:
  schedule:
    - cron: '0 7 * * *'   # Every day at 7 AM UTC
  workflow_dispatch:        # Allow manual trigger

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - name: Install SheetLink CLI
        run: npm install -g sheetlink-cli

      - name: Authenticate with API key
        run: sheetlink auth --api-key ${{ secrets.SHEETLINK_API_KEY }}

      - name: Sync transactions to Postgres
        run: sheetlink sync --output postgres
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}

Privacy note: SheetLink uses manual sync — no persistent background access to your bank. The sync command fetches the latest data you authorized during your most recent manual bank connection via Plaid.

Manual Chrome Sync (Free / Pro)

  • Open Chrome, click Sync Now
  • Works great for personal monthly review
  • Syncs to Google Sheets or Excel
  • You control when data is fetched
  • No CLI or API access
  • Best for: individuals, occasional use

Build an internal finance dashboard that shows real-time spending, cash runway, and account balances — fed by a scheduled SheetLink sync into Postgres and visualized in Metabase or Grafana.

Run a nightly CSV sync and automatically email it to your bookkeeper. They get fresh transaction data every morning without any manual bank logins.

Manage finances for multiple business entities or clients. Each entity syncs to a separate Postgres schema or Google Sheet on the same schedule, giving you a unified automated workflow.

Build your own spending tracker, net worth calculator, or budget app on top of the SheetLink REST API. Query transactions in your language of choice and render the UI however you want.

  • 7 days of transaction history
  • Google Sheets sync
  • 1 bank connection
  • Manual sync on demand
Try Free
  • 24 months of history
  • Google Sheets + Excel add-in
  • Unlimited banks
  • Manual sync on demand
Get Pro

With SheetLink MAX, install the CLI (npm install -g sheetlink-cli), authenticate with an API key for headless use (sheetlink auth --api-key <key>), then run sheetlink sync on a schedule using cron or GitHub Actions.

No — SheetLink uses manual sync as a privacy feature. There is no persistent background access to your bank. You trigger syncs explicitly via the Chrome extension, CLI, or a scheduled job you control.

Yes. Use sheetlink auth --api-key <key> for headless authentication (no browser required), then call sheetlink sync with your preferred output. Store the API key as a GitHub Actions secret and run on a schedule trigger.

SheetLink MAX supports: Google Sheets (sheetlink sync), Postgres (--output postgres), SQLite (--output sqlite), CSV (--output csv), and JSON (--output json).

Yes. The CLI exits with a standard exit code on success or failure. Chain additional commands using && in your shell or define them as subsequent steps in a GitHub Actions job.

Automation via CLI and API key requires the MAX tier at $10.99/mo or $99/year. Free and Pro tiers support manual sync only via the Chrome extension or Excel add-in.

Last updated: April 2026