Bill Fetch

Thousands of portals.
One structured invoice.

Deck agents log into utility, vendor, and billing portals, download invoices, and return structured data. No portal APIs. No manual downloads.

Bills
3 connected portals
Response
[{
  "vendor": "Con Edison",
  "amount": 187.43,
  "due": "2026-05-15",
  "line_items": [
    { "desc": "Supply", "amt": 94.21 },
    { "desc": "Delivery", "amt": 72.18 },
    { "desc": "Taxes", "amt": 21.04 }
  ]
}, {
  "vendor": "Comcast",
  "amount": 89.99,
  "due": "2026-05-22",
  "line_items": [
    { "desc": "Internet", "amt": 69.99 },
    { "desc": "Equipment", "amt": 14.00 },
    { "desc": "Fees", "amt": 6.00 }
  ]
}, {
  "vendor": "AT&T",
  "amount": 112.50,
  "due": "2026-05-28",
  "line_items": [
    { "desc": "Wireless", "amt": 85.00 },
    { "desc": "Insurance", "amt": 15.00 },
    { "desc": "Taxes", "amt": 12.50 }
  ]
}]

Built for automated bill fetch

One task returns consistent, structured invoice data across thousands of billing portals. No APIs. No manual downloads.

Con Edison
Comcast
AT&T
Verizon
Duke Energy
National Grid
Xcel Energy
PG&E
Southern Company
Any portal with a login.

No portal API required

Utility portals don’t publish data APIs. Deck doesn’t need them. Agents navigate real portals through the browser. No partnership, no connector, no export file.

User links account Via your app · Auth Component or API
Credentials stored Encrypted in Deck Vault · AES-256
MFA handled automatically OTP · SMS · Passkey · CAPTCHA
Session established Authenticated, ready to fetch

Authentication built in

Your user links their billing portal through your app. Deck stores the credentials, handles MFA, and establishes an authenticated session ready for extraction.

POST /tasks/v1/bill-fetch/run
200 OK
{
  "vendor": "Con Edison",
  "account": "****4821",
  "amount_due": 187.43,
  "due_date": "2026-05-15",
  "line_items": 4,
  "status": "unpaid"
}

Structured data and the original bill

Every fetch returns structured output matched to your schema. Vendor, amount, due date, line items — normalized and validated. Plus the original PDF when you need it.

Store. Fetch. Receive.

Store your user’s portal credentials, trigger a bill fetch, and get structured invoice data back.

POST /v2/credentials
{
  "source_id": "src_coned",
  "credentials": {
    "username": "...",
    "password": "..."
  }
}

Store portal credentials

Connect a billing portal once. Deck encrypts the credentials in Vault and reuses them on every fetch. Delete anytime.

POST /tasks/v1/bill-fetch/run
{
  "credential_id": "cred_abc",
  "action": "fetch_latest_invoice",
  "data_types": [
    "invoice",
    "line_items",
    "payment_history"
  ]
}

Run the fetch

Trigger a fetch via API whenever you need it. Deck logs in, navigates to invoices, and extracts the data you defined.

task_run.completed
{
  "vendor": "Con Edison",
  "account": "****4821",
  "amount_due": 187.43,
  "due_date": "2026-05-15",
  "line_items": [...],
  "status": "unpaid",
  "runtime_ms": 6820
}

Get the PDF and structured data

Deck retrieves the original invoice PDF, then extracts the data into structured JSON. Same schema, every portal, every time.

Who’s this for?

Property management

Fetch utility bills across thousands of units. Automate cost allocation, validate tenant charges, and eliminate manual portal visits.

Energy & sustainability

Access utility data from every provider. Track consumption, monitor rates, and feed billing data into ESG reporting pipelines.

Accounts payable

Pull vendor invoices from billing portals automatically. Match to POs, validate amounts, and close the books faster.

Fintech platforms

Give your users a single view of their bills. Fetch data from any provider and surface it in your product.

FAQ

OCR breaks when vendors change templates. Deck extracts data from the source portal, not the PDF. No template dependency, no layout parsing, no re-training when a vendor redesigns their invoice.

Deck handles MFA automatically. When a portal sends a code, the agent completes the challenge or pauses for user input via the Deck interaction flow. No manual intervention on your side.

Yes. Deck provisions isolated sessions on demand. Run fetches across thousands of portals in parallel. There is no fixed connector list or integration to maintain.

As often as you need. Schedule monthly fetches, trigger on-demand via API, or both. You control the cadence through the Deck API and event system.

You define the output schema. Common fields include vendor, account number, amount due, due date, line items, and payment status. Every fetch returns data matched to your schema.

Deck agents navigate by understanding the page, not pattern-matching a fixed layout. They adapt when portals redesign. No scraper maintenance, no CSS selector updates.