Importsstatements in, clean rows out
Upload bank and card statements, review the parsed rows and commit them to your ledger as one batch.
Everything you need
for statement imports
Bring statements into your workspace, review the extracted records and preserve the import history behind them.
Multiple input paths
CSV, PDF and Excel imports complement direct API ingestion and manual entry.
Reviewable results
Inspect parsed rows, resolve issues and commit a reviewed batch to your ledger.
Statement formats
Choose a parser preset for the account and statement format you are importing.
A statement import is a reviewable path into the ledger, with its source evidence and processing history kept in context.
Input formats
for your accounts
CSV statements
- Store images, videos, documents, and more
- Serve fast from a global CDN
- Fine-grained access controls
- Image optimizations and transformations
PDF statements
- Apache Iceberg open table format
- Efficient query, partition, and transform
- Historical and time-series data
- Optionally expose via Postgres
Excel statements
- Store and index vector embeddings
- Multiple distance metrics
- Metadata filtering and similarity queries
- RAG systems and AI-powered search
Explicit and consistent
finance APIs
Ingest records directly through the finance API or use statement uploads when that is more convenient.
// Upload an image to the "avatars" bucket
const spaceCat = event.target.files[0]
const { data, error } = await supabase
.storage
.from('avatars')
.upload('space-cat.png', spaceCat)// Upload an image to the "avatars" bucket
const spaceCat = event.target.files[0]
const { data, error } = await supabase
.storage
.from('avatars')
.upload('space-cat.png', spaceCat)Keeps evidence together
with workspace access
Imports belong to an account and workspace. Membership permissions apply to their evidence and review operations.
// Moneybook API: use your configured API base URL.
fetch(apiBaseUrl + '/v1/import-batches', {
headers: {
'X-Spective-Api-Key': apiKey,
'X-Spective-Workspace-Id': workspaceId
}
}).then(response => {
if (!response.ok) throw new Error('Request failed');
return response.json();
});// Moneybook API: use your configured API base URL.
fetch(apiBaseUrl + '/v1/import-batches', {
headers: {
'X-Spective-Api-Key': apiKey,
'X-Spective-Workspace-Id': workspaceId
}
}).then(response => {
if (!response.ok) throw new Error('Request failed');
return response.json();
});Kickstart your next project
with production ready templates
View all examplesStripe Subscriptions Starter
The all-in-one subscription starter kit for high-performance SaaS applications, powered by Stripe, Supabase, and Vercel.
Next.js Starter
A Next.js App Router template configured with cookie-based auth using Supabase, TypeScript and Tailwind CSS.
AI Chatbot
An open-source AI chatbot app template built with Next.js, the Vercel AI SDK, OpenAI, and Supabase.
LangChain + Next.js Starter
Starter template and example use-cases for LangChain projects in Next.js, including chat, agents, and retrieval.
Flutter User Management
Get started with Supabase and Flutter by building a user management app with auth, file storage, and database.
Expo React Native Starter
An extended version of create-t3-turbo implementing authentication on both the web and mobile applications.