VeriBank.io Knowledge Base

Everything you need to get the most out of VeriBank's bank statement analysis platform.

Platform Overview

VeriBank.io is an AI-powered bank statement analysis platform built for MCA brokers, ISOs, and funders. Upload a merchant's bank statement PDF and receive a comprehensive underwriting report in seconds — covering risk scoring, MCA stacking detection, deposit pattern analysis, and advance sizing recommendations.

What You Get

  • Composite Risk Score (0–100) — a weighted score across six underwriting factors
  • Monthly Cash Flow Breakdown — deposits, debits, balances, NSF events, and negative days per month
  • MCA Stacking Detection — identifies suspected active MCA positions from ACH patterns
  • Deposit Pattern Analysis — flags round-number deposits, payroll presence, declining trends
  • Advance Sizing Scenarios — conservative, moderate, and aggressive funding recommendations
  • Downloadable PDF Report — professional, branded report you can share with funders
Tip: VeriBank processes statements from virtually any U.S. bank. The more months of statements you provide, the more accurate the analysis.

Creating Your Account

Getting started with VeriBank takes under a minute. No credit card required.

Step 1
Visit the Landing Page
Go to veribank.io and click "Get Started Free".
Step 2
Enter Your Details
Provide your full name, company name, email address, and create a password (min 8 characters).
Step 3
Start Analyzing
You'll be automatically logged in and taken to the dashboard. Upload your first statement right away.
Tip: A welcome email with your account details will be sent to the email you provide. Check spam/junk if you don't see it.

Your First Analysis

Once logged in, running your first analysis is simple:

  1. Click "New Analysis" in the sidebar (or the upload area on your dashboard).
  2. Drag and drop a bank statement PDF (or click to browse). You can upload multiple PDFs for the same merchant if you have several months.
  3. Wait a few seconds — VeriBank parses the PDF, classifies every transaction, and builds the full report.
  4. View your report — you'll be taken to the report view automatically. From here you can download the PDF, review each section, or go back to analyze another statement.
Note: The accuracy of the report depends on PDF quality. Scanned/image-based PDFs may produce parse warnings. For best results, use digitally-generated bank statements (not photos or scans).

Upload Guide

VeriBank accepts standard bank statement PDFs. Here's how to get the best results.

Accepted Formats

  • PDF — digitally generated bank statements (preferred)
  • Multi-page PDFs — statements with multiple pages are fully supported
  • Multiple files — upload several months of statements at once for a single merchant

Best Practices

  • Provide at least 3 months of statements for the most accurate trend analysis and risk scoring.
  • Use the original PDF from the bank portal — not a printout or scan.
  • Make sure the PDF is not password-protected.
  • File size limit: 25 MB per file.
Tip: More months = better analysis. VeriBank looks at deposit trends, NSF patterns, and stacking over time. A single month limits what the engine can detect.

Supported Banks & Formats

VeriBank has dedicated parsers and classifiers for 48 U.S. banks. Any bank not on this list is handled by our universal parser, which supports the vast majority of standard PDF statement formats.

Major Traditional Banks

BankParser Type
Chase (JPMorgan Chase)Optimized — section-based
Wells FargoOptimized — section-based
Bank of AmericaOptimized — column-based
TD BankOptimized — section-based
Capital OneOptimized — column-based
Truist BankOptimized — section-based
PNC BankColumn-based
US BankColumn-based
Regions BankColumn-based
Citizens BankColumn-based
Fifth Third BankColumn-based
KeyBankColumn-based
Huntington National BankColumn-based
Comerica BankColumn-based
Synovus BankColumn-based
Valley National BankColumn-based
Wintrust BankColumn-based
Pinnacle BankColumn-based
Texas Capital BankColumn-based
Prosperity BankColumn-based
IBC (Intl. Bank of Commerce)Column-based
Popular Bank / Banco PopularColumn-based
South State BankColumn-based
Independent BankColumn-based
Glacier BankColumn-based
Live Oak BankColumn-based
Axos BankColumn-based
Western Alliance BankColumn-based
Customers BankColumn-based
Cross River BankColumn-based
Evolve Bank & TrustColumn-based
Mountain America CU (MACU)Column-based
First Internet BankColumn-based

Fintech / Neobanks

BankParser Type
Rho (Under Technologies)Rho-optimized — signed amounts + transaction type codes
MercuryFintech — signed amounts
Relay FinancialFintech — signed amounts
BluevineFintech — signed amounts
Grasshopper BankFintech — signed amounts
NovoFintech — signed amounts
NorthOneFintech — signed amounts
LiliFintech — signed amounts
OxygenFintech — signed amounts
FoundFintech — signed amounts
BrexFintech — signed amounts
Kabbage / Amex BusinessFintech — signed amounts
NearsideFintech — signed amounts
Don't see your bank? Email support@veribank.io with a sample statement and we'll add a dedicated parser within 1–2 business days.

Upload Troubleshooting

Common Issues

IssueCauseSolution
Upload failsFile is too large or wrong formatEnsure it's a PDF under 25 MB
Parse warningsScanned/image-based PDFUse digitally-generated PDFs from your bank portal
Missing transactionsPassword-protected PDFRemove the PDF password before uploading
Wrong date rangeMulti-account PDFSplit the PDF so each file is one account only
"0 transactions parsed"Image-only PDF (no text layer)Re-download the statement from online banking as a text-based PDF

Risk Score Explained

The VeriBank Risk Score is a composite score from 0 to 100. Higher scores indicate lower risk (healthier merchants). The score is calculated from six weighted components:

ComponentWhat It MeasuresWeight
DepositsAverage monthly deposit volume — higher deposits indicate stronger revenue25%
BalanceAverage daily balance — a cushion against cash flow disruptions20%
NSF EventsInsufficient funds / overdraft events — fewer is better15%
Negative DaysDays with a negative balance — indicates cash flow stress10%
Deposit TrendMonth-over-month deposit growth or decline15%
StackingNumber of suspected active MCA positions15%

Risk Tiers

Score RangeTierMeaning
60 – 100LOW RISKStrong financials, low stacking, good trends. Likely fundable.
40 – 59MODERATESome flags present. May be fundable with conditions or stipulations.
0 – 39HIGH RISKSignificant red flags. Declining revenue, heavy stacking, or frequent NSFs.
Tip: The risk score is a starting point — always review the individual sections of the report for context. A moderate-score merchant with a strong upward trend may be a better deal than a low-risk merchant with flat revenue.

Monthly Cash Flow

This section breaks down the merchant's financials month by month. Each month shows:

  • Total Deposits — all money in
  • Total Debits — all money out
  • Net Cash Flow — deposits minus debits (positive = healthy)
  • Ending Balance — account balance at month-end
  • Average Daily Balance — how much cash sits in the account day-to-day
  • NSF Count — number of insufficient funds events that month
  • Negative Days — days the balance dropped below zero
  • Transaction Count — total line items parsed
  • Largest Single Deposit — the biggest deposit that month
Watch for: Months where debits exceed deposits, rising NSF counts, or declining ending balances — these are early warning signs of cash flow stress.

MCA Stacking Detection

VeriBank automatically identifies suspected active MCA (Merchant Cash Advance) positions by analyzing ACH debit patterns. The engine looks for:

  • Recurring ACH debits with consistent amounts and frequencies (daily or weekly)
  • Originator names that match known MCA funders
  • Pattern consistency — coefficient of variation is used to measure payment regularity

Confidence Levels

LevelCriteria
HIGHHighly consistent recurring ACH debits matching known MCA patterns. Very likely an active position.
MEDIUMRecurring debits that are somewhat consistent but may also be legitimate vendor payments.
LOWPossible MCA activity but could be other recurring business expenses.

Key Metrics

  • Total Monthly MCA Burden — estimated total monthly payments to all detected MCA positions
  • Burden as % of Deposits — how much of the merchant's revenue goes to MCA payments (over 15% is a red flag)
  • Round Number Injections — large round-dollar deposits ($5K+) that may indicate cash injections to cover obligations

Warning Flags

  • Declining Deposits + Rising NSF — revenue is dropping while overdrafts increase. This is a critical distress signal.
  • Negative Day Acceleration — the number of negative-balance days is increasing month over month.

Deposit Pattern Analysis

VeriBank scans all deposits for patterns that tell a story about the merchant's business health:

  • Payroll Detection — regular payroll deposits indicate the merchant has employees (generally a positive sign)
  • Round Number Deposits — large round-dollar deposits ($5,000, $10,000, etc.) may indicate cash injections or owner contributions to mask declining revenue
  • Consistent Weekly/Monthly Deposits — predictable deposit patterns suggest stable recurring revenue
  • Declining Trend — month-over-month deposit decline is flagged with severity
  • Largest Deposit Concentration — if a large portion of revenue comes from a single deposit, the merchant may be customer-concentrated

Signal Levels

Each pattern finding is tagged with a signal level: LOW (informational), MODERATE (worth noting), or HIGH (requires attention).

Advance Sizing

The advance sizing section provides three funding scenarios based on the merchant's financials:

Scenario% of DepositsDescription
Conservative~10%Low-risk approach. Suitable for merchants with existing stacking or moderate risk profiles.
Moderate~15%Balanced approach for merchants with acceptable risk levels and stable deposits.
Aggressive~20%Higher payment burden. Only suitable for strong, low-risk merchants with upward trends.

Each scenario shows the supportable monthly payment and supportable daily ACH amount the merchant can handle based on their cash flow.

Recommended Max Advance

VeriBank also provides a recommended maximum advance amount along with a suggested factor rate and term length. This is calculated from the moderate scenario using the merchant's average monthly deposits and risk profile.

Funding Conditions

The report may list conditions that should be met before funding, such as "no new MCA positions," "current on existing obligations," or "positive deposit trend." These are generated automatically based on the analysis findings.

Account Settings

Access your account settings from the Settings tab in the sidebar after logging in.

  • Email — your login email (cannot be changed; contact support if needed)
  • Password — reset your password using the "Forgot Password" link on the login screen
  • API Key — your unique API key for programmatic access (visible in Settings)
  • Plan — your current subscription plan and usage stats

Plans & Billing

VeriBank offers a free tier and paid plans for higher volume:

PlanAnalyses / MonthFeatures
FreeUnlimited (trial)Full reports, PDF download, all analysis features
Starter50Everything in Free + email support
Growth200Everything in Starter + team accounts + priority support
EnterpriseUnlimitedEverything in Growth + API access + dedicated onboarding

Manage your subscription through the billing portal — accessible from Settings inside the app. Stripe handles all payment processing securely.

API Overview

VeriBank.io provides a RESTful JSON API for programmatic bank statement analysis. Integrate VeriBank directly into your CRM, underwriting pipeline, or custom tools.

Base URL

https://veribank.io/api/v1

Quick Start

The typical API workflow is three steps: upload a PDF, poll for completion, then retrieve the report.

Step 1
Upload
POST to /api/v1/analyze with your PDF file(s) and business name. Returns an upload_id.
Step 2
Poll Status
GET /api/v1/status/{upload_id} every 2 seconds. When status is complete, grab the report_id.
Step 3
Get Report
GET /api/v1/reports/{report_id} for the full JSON report, or append /pdf for a downloadable PDF.

All Endpoints

EndpointMethodDescription
/api/v1/analyzePOSTUpload bank statement PDF(s) for analysis
/api/v1/status/{upload_id}GETPoll analysis job progress
/api/v1/reports/{report_id}GETRetrieve full analysis report (JSON)
/api/v1/reports/{report_id}/pdfGETDownload formatted PDF report
/api/v1/reportsGETList all your reports
/api/v1/reports/{report_id}DELETEDelete a report
/api/v1/accountGETCheck plan, usage, and API key
/healthGETService health check
Swagger UI: Interactive API documentation is available at https://veribank.io/api/docs — you can test endpoints directly in your browser.

Authentication

All API requests require authentication via your API key. You can find your key in the Settings tab of the VeriBank app.

Header Format

Include your API key in the X-Api-Key header:

curl -X POST https://veribank.io/api/v1/analyze \
  -H "X-Api-Key: vb_YOUR_API_KEY_HERE" \
  -F "files=@statement.pdf" \
  -F "business_name=Acme Corp LLC"

Alternatively, you can use a Bearer token in the Authorization header (session-based auth from the login endpoint):

Authorization: Bearer <session_token>

Error Responses

StatusMeaning
401Missing or invalid API key / session token
402Usage limit reached for current billing period
Keep your API key secret. Do not expose it in client-side code, public repos, or browser JavaScript. Treat it like a password.

Submit Analysis

Upload one or more bank statement PDFs to start an analysis job. The response returns an upload_id you use to poll for progress.

POST /api/v1/analyze

Content-Type: multipart/form-data

FieldTypeRequiredDescription
filesFile(s)YesOne or more PDF bank statements (max 6 files, 15 MB each)
business_nameStringNoMerchant legal name (default: "Unknown Business")
dbaStringNoDBA name if different from legal name
bank_overrideStringNoBank name hint if auto-detection fails

Example Response

{
  "upload_id": "c1dd15af-8d8f-4cd2-afac-7afe143e9748",
  "file_count": 1,
  "status": "queued",
  "message": "Analysis queued for 1 statement(s). Poll /api/v1/status/..."
}

GET /api/v1/status/{upload_id}

Poll this endpoint every 2 seconds until status is complete or error.

FieldDescription
statusqueued, processing, complete, or error
progress_pct0–100 progress indicator
current_stepHuman-readable step description
report_idDocID of the completed report (only when status is complete)
errorError message if analysis failed

Full cURL Example

# 1. Upload
curl -X POST https://veribank.io/api/v1/analyze \
  -H "X-Api-Key: vb_YOUR_KEY" \
  -F "files=@jan_statement.pdf" \
  -F "files=@feb_statement.pdf" \
  -F "business_name=Acme Corp LLC"

# 2. Poll
curl https://veribank.io/api/v1/status/UPLOAD_ID \
  -H "X-Api-Key: vb_YOUR_KEY"

# 3. Get Report
curl https://veribank.io/api/v1/reports/REPORT_ID \
  -H "X-Api-Key: vb_YOUR_KEY"

Reports & PDF

GET /api/v1/reports/{report_id}

Returns the full analysis report as a JSON object. Key fields in the response:

FieldDescription
doc_idUnique report identifier (e.g., BFF-20260401-57927U)
business_nameMerchant name
risk_scoreObject with score (0-100), tier (LOW RISK / MODERATE / HIGH RISK), component_scores
core_metricsAvg monthly deposits, daily balance, NSF count, negative days, MCA positions
monthly_statsArray of per-month breakdowns (deposits, debits, balance, NSFs)
stacking_analysisDetected MCA positions with originator, daily payment, confidence
advance_sizingConservative, moderate, aggressive funding scenarios
analyst_notesAI-generated narrative summary of the underwriting profile

GET /api/v1/reports/{report_id}/pdf

Downloads a professionally formatted PDF report. Accepts an optional recipient query parameter that gets embedded in the PDF metadata.

curl -o report.pdf \
  "https://veribank.io/api/v1/reports/BFF-20260401-57927U/pdf?recipient=John" \
  -H "X-Api-Key: vb_YOUR_KEY"

GET /api/v1/reports

Lists all reports on your account. Returns an array of summary objects with report_id, business_name, risk_score, risk_tier, bank_name, and report_date.

DELETE /api/v1/reports/{report_id}

Permanently deletes a report. Returns {"deleted": "REPORT_ID"} on success.

GET /api/v1/account

Check your current plan, usage counts, and API key. Useful for monitoring quota before submitting batch jobs.

{
  "email": "you@example.com",
  "plan": "trial",
  "analyses_used": 12,
  "analyses_limit": null,
  "analyses_remaining": null,
  "api_key": "vb_YOUR_API_KEY"
}

Error Handling

The API returns standard HTTP status codes. Error responses include a detail field with a human-readable message.

CodeMeaningCommon Cause
400Bad RequestNo PDF attached, file not a valid PDF, or file too large
401UnauthorizedMissing or invalid API key
402Payment RequiredAnalysis quota exhausted for the billing period
404Not FoundInvalid upload_id or report_id
413Payload Too LargePDF exceeds the 15 MB per-file limit
500Server ErrorUnexpected failure — contact support

Error Response Format

{
  "detail": "At least one PDF file is required."
}

Rate Limits

The API does not enforce per-second rate limits, but analysis jobs are queued and processed sequentially. For batch uploads, we recommend submitting one analysis at a time and waiting for completion before sending the next.

File Validation

  • Files must have a .pdf extension
  • Files must start with %PDF magic bytes (no renamed ZIPs or images)
  • Maximum 6 files per request
  • Maximum 15 MB per file
  • Files smaller than 100 bytes are rejected as empty/corrupt
Need help? Email bronson@blackflagfunding.com with your API key prefix (first 8 characters) and the error response you received.

Email-In Analysis

VeriBank.io offers an Email-In Analysis feature that lets brokers and ISOs get bank statement reports without logging into the platform. Simply email your bank statement PDFs and receive a full analysis report back in your inbox — typically within 30 seconds.

How It Works

  1. Compose an email to veribank@in.bffsoftware.com
  2. Set the subject line to the business name (e.g., "Acme Corp LLC"). This becomes the business name on the report.
  3. Attach the bank statement PDFs (up to 6 files, must be PDF format).
  4. Send. VeriBank processes the statements automatically.
  5. Receive your report — a reply email arrives with the full analysis: risk score, monthly cash flow, stacking detection, deposit patterns, and advance sizing. The PDF report is attached.

What You Get Back

  • HTML email summary — key metrics, risk score badge, and business info right in your inbox.
  • PDF report attachment — the same professional report you'd get from the web platform, including all 6 sections.
  • Subject line formatted as: VeriBank Report: {Business Name} | Score {XX} {TIER} | {N} months analyzed

Requirements & Limits

  • Attachments must be PDF files (JPG/PNG/scanned images are not supported via email).
  • Maximum 6 PDF attachments per email.
  • Subject line is used as the business name — keep it clean (prefixes like "Fwd:" and "Re:" are automatically stripped).
  • The sender email address receives the reply — make sure it can receive emails.

Supported Banks

The Email-In pipeline uses the same analysis engine as the web platform. All supported banks work, including Chase, Bank of America, Wells Fargo, US Bank, Mountain America Credit Union (MACU), and many more. See the Supported Banks section for the full list.

Tips for Best Results

  • Use digitally-generated PDFs downloaded from online banking — not photos or scanned paper statements.
  • Include multiple months for a more comprehensive analysis. Each PDF can contain one or more statement months.
  • Make sure statements are not password-protected — encrypted PDFs cannot be parsed.
Pro Tip: This feature is perfect for brokers who live in their inbox. Forward bank statements directly from your email and get the underwriting report back without switching tools.

Integrations & Recipes

VeriBank Recipes let you connect your analysis workflow to external tools — automatically. Once configured, recipes fire in the background every time an analysis completes. No manual steps, no copy-paste.

Available Recipe Types

RecipeWhat It DoesRequires
Analysis → WebhookPOSTs analysis results to any URL (Zapier, Make, your CRM, etc.)A webhook URL
Drive Drop → AnalyzeWatch a Google Drive folder — drop a PDF, VeriBank analyzes it automaticallyGoogle account connected
Gmail → AnalyzeAuto-analyze bank statements forwarded to a watched Gmail labelGoogle account connected
Analysis → Save to DriveSave the PDF report to a Google Drive folder on every completionGoogle account connected

How Authentication Works

The Integrations page is fully frictionless for logged-in VeriBank users. When you open /veribank-integrations.html while already logged in to the app, your existing session is used automatically — no API key or re-login required. If you're not logged in, you'll be prompted for your email and password. Your API key is always accepted as an alternative via the "Use API key instead" toggle.

Tip: Open Integrations from the sidebar nav (or the ⚡ icon in the top bar) while already logged in for a zero-friction experience.

Webhook Recipe

The Analysis → Webhook recipe POSTs a structured JSON payload to any URL you specify every time an analysis completes. Use it to push results into Zapier, Make (Integromat), your internal CRM, a Slack channel, or any custom endpoint.

Setup

  1. Go to Integrations from the sidebar.
  2. Click + Add Recipe on the "Analysis → Webhook" card.
  3. Paste your webhook URL and optionally enter a signing secret.
  4. Click Save. The recipe is live immediately.

Payload Structure

Every webhook POST includes:

  • event — always "analysis.complete"
  • timestamp — ISO 8601 UTC timestamp
  • report — report ID, business name, risk score, risk tier, period, avg deposits, NSF count, stacking data, and a direct report URL
  • transactions — included only if you enable "Include transaction detail" (capped at 500 rows)

Payload Signing (HMAC-SHA256)

If you provide a secret, VeriBank signs every payload and sends the signature in the X-VeriBank-Signature header as sha256=<hex>. Verify it on your end by computing HMAC-SHA256(secret, raw_body) and comparing.

Test Your Endpoint

Click Send Test on any saved webhook recipe to fire a synthetic analysis.test payload. Check your endpoint logs to confirm receipt before relying on it in production.

Note: Webhooks time out after 10 seconds. Make sure your endpoint responds quickly (return 200 OK immediately and process async if needed).

Google Account Setup

Google recipes (Drive Watcher, Gmail Trigger, Drive Save) all require a one-time Google account connection. This gives VeriBank permission to read/write your Drive and read your Gmail labels.

Connecting Your Google Account

  1. Open Integrations from the sidebar.
  2. Click Sign in with Google in the Google section at the top of the page.
  3. Complete the standard Google OAuth flow — select your account and grant the requested permissions.
  4. You'll be redirected back to the Integrations page. Your connected email will appear in the Google bar.
Permissions requested: Google Drive (read/write files and folders) and Gmail (read messages and manage labels). VeriBank only accesses folders and labels you explicitly configure — it never reads your entire Drive or inbox.

Disconnecting

Click Disconnect next to your connected email. This revokes VeriBank's access token. Any active Google recipes will stop firing until you reconnect.

Token Refresh

VeriBank stores a refresh token so your connection stays active indefinitely without you having to re-authenticate. If your Google account's permissions change or you revoke access from Google's side, you'll need to reconnect from the Integrations page.

Drive Drop → Auto-Analyze

The Drive Drop → Auto-Analyze recipe watches a Google Drive folder. Drop any bank statement PDF into that folder and VeriBank automatically picks it up, runs a full analysis, and saves the report to your dashboard. No manual upload needed.

One-Touch Setup (Recommended)

  1. Connect your Google account if you haven't already.
  2. On the "Drive Drop → Auto-Analyze" card, click ⚡ Create Folder & Activate.
  3. VeriBank creates a folder called VeriBank — Bank Statements in your Google Drive and activates the recipe automatically.
  4. A link to open your new folder appears on the card. Bookmark it.

Custom Folder Setup

If you prefer to use an existing folder: click or use your own folder, paste your Google Drive folder URL (the URL must contain /folders/FOLDER_ID), and click Activate.

How It Works

  • VeriBank polls your watched folder every 5 minutes.
  • Any PDF added since the last poll is downloaded, analyzed, and a report is created.
  • Each file is processed exactly once — files already in the folder before the recipe was created are not re-analyzed.
  • The original PDF is left in your Drive folder untouched.
Important: The file name is used as the business name unless the analysis engine detects it from the statement itself. Name your PDFs clearly (e.g., ABC Plumbing - Chase Jan 2025.pdf) for best results.

Gmail → Auto-Analyze

The Gmail → Auto-Analyze recipe watches a Gmail label. When an email carrying a bank statement PDF lands in that label, VeriBank analyzes the attachment automatically.

Setup

  1. Connect your Google account.
  2. Create a Gmail label for incoming statements (e.g., veribank-incoming).
  3. On the Gmail recipe card, type the label name and click Activate.
  4. Have merchants or team members forward statements with that label applied (or set up a Gmail filter to auto-label).

How It Works

  • VeriBank polls the Gmail label every 5 minutes.
  • New emails with PDF attachments trigger an analysis. Each email is processed exactly once (marked as processed internally).
  • The email subject line is used as the business name if the statement doesn't identify one.
Tip: Set up a Gmail filter: "From: @bankdomain.com → Apply label: veribank-incoming" to fully automate statement intake without any manual forwarding.

Analysis → Save to Drive

The Analysis → Save to Drive recipe automatically saves the completed PDF report to a Google Drive folder every time an analysis finishes. Useful for building a Drive-based archive of all your underwriting reports.

Setup

  1. Connect your Google account.
  2. On the "Analysis → Save to Drive" card, paste a Google Drive folder URL and click Activate.
  3. Every completed analysis will save a copy of the PDF report to that folder within seconds.
Tip: Combine this recipe with the Drive Drop Watcher for a fully automated pipeline: drop a statement into Drive → VeriBank analyzes it → the PDF report is saved back to Drive automatically.

Frequently Asked Questions

How accurate is the analysis?

VeriBank's accuracy depends on the quality of the bank statement PDF. Digitally-generated PDFs from online banking portals produce the best results. The AI engine parses every transaction line and classifies it using pattern matching and NLP. Accuracy is typically 95%+ for well-formatted statements.

How long does an analysis take?

Most analyses complete in 10–30 seconds depending on the number of pages and transactions. Multi-month statements with hundreds of transactions may take up to a minute.

Is my data secure?

Yes. All uploads are transmitted over HTTPS (TLS 1.2+). Bank statements are processed in memory and not permanently stored on disk. Reports are saved to a database associated with your account and accessible only via your authenticated session or API key.

Can I delete a report?

Yes. Go to your dashboard, find the report, and use the delete option. Deleted reports are permanently removed from the database.

What if a bank statement doesn't parse correctly?

Check the parse warnings at the bottom of the report. Common issues include scanned PDFs (no text layer), password-protected files, or unusual statement formats. If the issue persists, contact support with the bank name and statement format so we can add support for it.

Can I export reports?

Yes. Every report can be downloaded as a professionally formatted PDF from the report view. The PDF includes all sections: risk score, cash flow, stacking detection, deposit patterns, and advance sizing.

How do I reset my password?

Click "Forgot Password?" on the login screen and enter your email. You'll receive a reset link. If you don't receive it, check your spam folder or contact support.

Can I analyze statements without logging in?

Yes! Use the Email-In feature: send your bank statement PDFs to veribank@in.bffsoftware.com with the business name as the subject line. You'll receive the full analysis report back in your inbox within seconds. See the Email-In Analysis section for details.

Does VeriBank have an API?

Yes. VeriBank provides a full REST API for programmatic bank statement analysis. You can upload PDFs, poll for results, and retrieve reports as JSON or PDF. Your API key is available in Settings. See the API documentation for full details, or visit the interactive Swagger UI.

Where do I find my API key?

Your API key is shown in the Settings tab of the VeriBank app. It starts with vb_. You can also call GET /api/v1/account with your session token to retrieve it.