How it works

From connection to bill data in four steps

One API to link a user's billers, pull their bills, stream events into your app, and store payment methods. Bill-payment execution remains unavailable and returns 501 PAYMENT_EXECUTION_NOT_AVAILABLE.

Step 1

Connect a biller

Users open your drop-in Connect flow, search for their biller, and authenticate. We handle credentials, OAuth, or API keys depending on the biller, walk users through MFA when required, and let them pick which accounts to link. Credentials are encrypted in Vault — your servers never see them.

Step 2

Retrieve bills automatically

For most billers we run headless browser automation against the biller portal on a schedule. For partnered billers we call their APIs directly. Either way we pull statements, line items, due dates, and balances, normalize them into one schema, and write them to the bill store.

Step 3

Stream events to your app

Bill and link changes publish signed webhooks such as bill.created, bill.updated, and link.expired. Subscribe to the event types you care about per client; we filter at the source, retry on failure, and sign each delivery so you can verify origin.

Step 4

Store payment methods

Collect and tokenize payment methods with hosted Elements. Bill-payment execution is not available in sandbox or production; initiation returns 501 PAYMENT_EXECUTION_NOT_AVAILABLE and does not schedule or move money.

Ready to see it in action?

The evaluator path separates what needs no account, what needs one, and what an agent may do for you. Pick a branch before you spin up a sandbox client.