StatementEdge

API key required
Security

Convert PDF bank statements to CSV / Excel / QuickBooks / Xero / Sage / OFX via StatementEdge. Auto-reconciled, EU-hosted, 100+ banks across 22 countries (UK, EU, US, India, APAC, MENA, LATAM, Africa). No model training on uploads.

Install

openclaw skills install statementedge

StatementEdge Skill

Convert PDF bank statements into structured data (CSV, Excel, QuickBooks, Xero, Sage, OFX) using StatementEdge — EU-hosted, auto-reconciled, 100+ banks across 22 countries spanning UK, EU, US, India, APAC (Singapore, Hong Kong, New Zealand, Australia, Philippines), MENA (UAE), LATAM (Mexico, Brazil), and Africa (South Africa). No model training on your uploads.

Free, no credit card — 30 seconds to your first conversion

API access is on every plan, free included. The free tier gives you 7 pages/day to test the integration end-to-end before deciding whether to upgrade — same allowance whether you call from the web app, this skill, or anywhere else.

  1. Sign up at https://www.statementedge.com — email or Google, no card required
  2. Open Dashboard → API keys → Create key — token is shown once, looks like se_live_…
  3. Drop it into your shell:
export STATEMENTEDGE_API_KEY="se_live_…"

That's it. Run the curl example in the next section and you'll have a parsed bank statement in JSON within ~30 seconds.

What the key can access

Your token is scoped to your own account only — it can convert PDFs you upload, fetch the conversions back, and read your job history. It can't see other users' data, change your plan, or touch billing. Stored as a sha256 hash on our side, so we can't recover a lost key (revoke + regenerate from the dashboard at any time).

Requirements

  • STATEMENTEDGE_API_KEY — your bearer token from the steps above. The skill won't run without it.

Privacy and data handling

What StatementEdge processes when you call this skill:

  • The PDF you upload to /v1/convert. Stored encrypted at rest in Supabase Storage (EU-Frankfurt region) and deleted automatically within one hour of a successful conversion via the purge_after job timestamp.
  • The PDF password if you supply one. Held only in memory inside the Trigger.dev conversion task; never written to our database, never logged, never sent to Sentry. Our Sentry initialisation scrubs Authorization and cookie headers from every event before it leaves us.
  • No environment variables or other files from your machine. The skill only reads STATEMENTEDGE_API_KEY and the file path you pass to it.

Where the data lives:

  • Storage and compute: Vercel fra1 (Frankfurt) plus Supabase EU
  • AI extraction: Google Gemini API. Google's published terms commit to not using paid-tier API input for model training.
  • Error monitoring: Sentry, hosted in their DE region (ingest.de.sentry.io)

Extracted transactions remain on your StatementEdge account until you remove them from /dashboard. Closing your account triggers a 30-day deletion of any remaining records, except where retention is required for invoicing under Irish/EU tax law.

Full sub-processor list and retention windows: https://www.statementedge.com/privacy. A signed Data Processing Addendum is available on the Business plan for GDPR compliance reviews.

APIs

Upload a PDF bank statement

curl -s -X POST \
  -H "Authorization: Bearer $STATEMENTEDGE_API_KEY" \
  -F "file=@/path/to/statement.pdf" \
  https://www.statementedge.com/v1/convert | jq

Example response:

{
  "jobId": "5f3a8b9c-…",
  "status": "queued",
  "statusUrl": "https://www.statementedge.com/v1/jobs/5f3a8b9c-…"
}

Save the jobId for the next step.

Check job status and fetch the converted data

curl -s \
  -H "Authorization: Bearer $STATEMENTEDGE_API_KEY" \
  https://www.statementedge.com/v1/jobs/$JOB_ID | jq

Returns the job state plus the parsed transactions once it's done:

{
  "id": "5f3a8b9c-…",
  "status": "done",
  "pageCount": 3,
  "reconcileStatus": "reconciled",
  "statement": {
    "bank_name": "AIB",
    "account_masked": "•••• 1234",
    "currency": "EUR",
    "opening_balance": 1234.56,
    "closing_balance": 2345.67,
    "period_start": "2026-02-01",
    "period_end": "2026-02-28",
    "transactions": [
      {
        "row_index": 0,
        "date_iso": "2026-02-03",
        "description": "Tesco 12345",
        "amount": -42.10,
        "balance": 1192.46,
        "direction": "debit",
        "flagged": false
      }
      // …
    ]
  }
}

Poll every ~2 seconds while status is queued or processing.

Pass a password for an encrypted PDF

For password-protected statements (common with Indian banks and some EU corporate accounts), send the password as form field on upload:

curl -s -X POST \
  -H "Authorization: Bearer $STATEMENTEDGE_API_KEY" \
  -F "file=@statement.pdf" \
  -F "password=YOUR_PDF_PASSWORD" \
  https://www.statementedge.com/v1/convert | jq

The password is held only for the duration of the conversion and never written to logs or the database.

Export to a specific format

The job's statement payload is JSON. To get CSV / Excel / QuickBooks / Xero / Sage / OFX, transform it client-side, or open the job in the browser at https://www.statementedge.com/jobs/$JOB_ID for one-click downloads.

A native multi-format export endpoint is on the roadmap. For now, transform the JSON to your target format using your favourite library — every row carries date_iso, description, amount, balance, direction, plus the parsed statement metadata.

What you get vs. raw OCR

  • Auto-reconciled: every statement is balance-checked (opening + Σtransactions = closing). The reconcileStatus field tells you whether the result is reconciled, reconciled_with_flags, or needs_review. No more silent off-by-one errors.
  • Locale-aware: USD or EUR, comma vs period decimals, DD/MM vs MM/DD dates, Money-In/Out columns, Dr/Cr suffixes — handled natively.
  • Vision-native: text-layer PDFs use a cheap text path; scanned PDFs are sent to Gemini's vision model directly. No per-bank templates that go stale.
  • EU-hosted: storage and compute in EU-Frankfurt. GDPR DPA available for European customers on the Business plan.

Limits & pricing

PlanPagesPrice
Free7 / day€0
Starter500 / month€19
Pro2,500 / month€49
Business6,000 / month€99

Unused pages on paid plans roll forward 3 months. Full details at https://www.statementedge.com/pricing.

Help