Skip to content

Agent Document Parsing

Upload invoices, receipts, and bank statements to your Bkper book and let the Agent extract and categorize transactions automatically.

The Bkper Agent automatically extracts and categorizes transactions from uploaded documents using AI. Upload invoices, receipts, bank statements, or CSV files, and the Agent parses amounts, dates, and descriptions while finding the right accounts in your book.

What the Agent does

The Agent uses artificial intelligence to:

  • Extract transaction data from documents (PDFs, images, CSV files)
  • Detect whether you uploaded an invoice, receipt, or bank statement
  • Learn from your existing transactions to match your bookkeeping patterns
  • Discover and assign accounts by analyzing similar transactions
  • Improve over time by learning from your edits

Supported document types

Bank Statements and Credit Card Statements — extracts multiple transactions from a single statement, supports CSV files and scanned/photographed statements, and automatically organizes transactions by date.

Invoices — extracts a single transaction with vendor or customer details, identifies invoice numbers, dates, and amounts, and captures custom fields like tax amounts.

Receipts — extracts purchase details and amounts, identifies merchant names and transaction dates. Ideal for expense tracking.

Installation

Open your Bkper account and the book where you want to use the Agent. Click the Settings button (gear icon), select Automations, find the Bkper Agent, and click Install.

After installation, drag and drop a document to start experimenting with intelligent document parsing.

Uploading files to your book

Select the Account related to the file you are uploading — for example, select the Brex Cash account when uploading a Brex statement. Then drag and drop the file (PDF, image, or CSV) into the transaction area.

The Agent processes the file, records draft transactions, and completes the other account based on transaction history in the book. Review and post the transactions.

Attaching files to existing transactions

Drag and drop a file directly onto an existing transaction. The Agent extracts data and updates the transaction with the extracted details — perfect for adding invoices to expense entries or attaching receipts for documentation.

How the Agent learns and improves

The Agent gets smarter over time through a process called Agentic Context Engineering (ACE).

What the Agent learns from:

  • Your existing transactions — analyzing patterns in your transaction history
  • Your corrections — when you edit AI-extracted data, the Agent learns what’s correct
  • Your account structure — understanding how you organize your chart of accounts

How corrections work:

  1. Edit the transaction as needed (change amount, date, description, or accounts)
  2. Post the corrected transaction
  3. The Agent flags the extraction for improvement
  4. Behind the scenes, it analyzes what went wrong and updates its extraction instructions
  5. Future documents are processed with improved accuracy

This learning happens automatically — no configuration required.

Smart account discovery

When extracting transactions, the Agent automatically suggests From and To accounts by:

  • Analyzing transaction descriptions and extracting key terms
  • Searching transaction history for similar patterns
  • Matching based on past behavior (e.g. “Uber” always goes to Transport Expense)
  • Learning from the creator (your patterns vs. team members’ patterns)

The more you use Bkper, the better the Agent becomes at finding the right accounts.

Advanced configuration

While the Agent works well out of the box, you can customize its behavior for specific use cases.

Custom extraction instructions

Add an agent_prompt property to accounts or groups to control how the Agent extracts data. For example, on a Bank Statement - Chase account:

  • Key: agent_prompt
  • Value: Extract transactions from the statement table. Include the reference number as a custom property called "ref". Extract merchant category if available.

When you upload a Chase bank statement with this account selected, the Agent follows your custom instructions.

Centralized prompt configuration

For teams managing multiple books, store extraction instructions in a central “prompt book”:

  1. Create a dedicated book for storing prompts (e.g. Company Extraction Rules)
  2. In your operational book, add a book property: agent_prompt_book_id with the ID of your prompt book

This maintains consistent extraction rules across all your books.

Account-specific prompts

Match prompts from the remote book using agent_prompt_id:

  • Key: agent_prompt_id
  • Value: Name or ID to match in the remote prompt book

Useful when different statement types (bank, credit card) need different extraction rules.

Best practices

For bank statements:

  • Upload regularly (monthly or weekly)
  • Select the bank account before uploading for better account discovery
  • Review and post draft transactions in batch
  • Correct any errors — the Agent learns from them

For invoices and receipts:

  • Select the related account before uploading
  • Upload immediately after receiving
  • Clear, readable scans produce the best results
  • Add custom properties if you need specific fields extracted

For maximum accuracy:

  • Post transactions regularly so the Agent has more data to learn from
  • Be consistent with account names and transaction descriptions
  • Correct mistakes immediately to trigger learning
  • Use groups to organize accounts by document type

Workflow example

First upload: Select the Bank Account, drag in a statement. Most accounts are likely missing (the Agent is learning). Assign accounts manually and post.

Second upload: The Agent auto-assigns accounts for roughly 60% of transactions. Review and correct the rest.

Third upload: The Agent handles roughly 85% of transactions. Only minor corrections needed.

Ongoing: The Agent correctly extracts 95%+ of transactions. Quick review and post — bookkeeping in minutes.

Monitoring Agent performance

The Agent stores metadata on each transaction:

  • agent_extracted_ — original AI extraction (before corrections)
  • agent_credit_account_id_ / agent_debit_account_id_ — discovered accounts
  • agent_description_part_ — key terms used for discovery
  • agent_file_id_ — links transaction to source document

View these properties in transaction details to understand how the Agent processed each entry.

Troubleshooting

Agent didn’t extract anything — verify the Agent is installed (Settings > Automations), check file format (PDF, image, or CSV), and ensure the file is readable.

Extracted data is incorrect — correct the transaction and post it. The Agent learns from your correction and improves future extractions.

Accounts not auto-assigned — normal for new books with limited history. Keep posting transactions so the Agent has data to learn from. Try selecting an account before uploading.

Same mistakes keep happening — make sure you’re posting corrected transactions (not just viewing). The Agent learns incrementally — give it a few correction cycles.

Privacy and security

  • File processing uses Google Gemini AI with enterprise-grade security
  • Files are processed through Cloudflare’s AI Gateway for additional protection
  • Your data never trains public AI models — it only improves your private Agent
  • Files are stored securely in your Bkper book and can be deleted at any time
  • The Agent learns per book, so each learning path is unique