Install
openclaw skills install statementedgeConvert 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.
openclaw skills install statementedgeConvert 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.
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.
se_live_…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.
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).
STATEMENTEDGE_API_KEY — your bearer token from the steps above. The skill won't run without it.What StatementEdge processes when you call this skill:
/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.Authorization and cookie headers from every event before it leaves us.STATEMENTEDGE_API_KEY and the file path you pass to it.Where the data lives:
fra1 (Frankfurt) plus Supabase EUExtracted 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.
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.
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.
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.
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.
reconcileStatus field tells you whether the result is reconciled, reconciled_with_flags, or needs_review. No more silent off-by-one errors.| Plan | Pages | Price |
|---|---|---|
| Free | 7 / day | €0 |
| Starter | 500 / month | €19 |
| Pro | 2,500 / month | €49 |
| Business | 6,000 / month | €99 |
Unused pages on paid plans roll forward 3 months. Full details at https://www.statementedge.com/pricing.