Invoice intake
Every bill starts as a document: a PDF or image a vendor sent you. Payvy keeps the original as the record and works from it, never from a transcription alone.
Ways in
Section titled “Ways in”- Upload — add files to the document inbox directly.
- Email — each organization gets an inbound address; vendors send bills to it, or you forward them. PDF and image attachments land in the inbox, including attachments of a forwarded email. Setup is in Bills by email.
- API/MCP — agents file documents with the same commands the app uses.
Where originals live
Section titled “Where originals live”Documents live in any S3-compatible store you configure: Cloudflare R2, Backblaze B2, AWS S3, or one you run (Garage, SeaweedFS). They are keyed by content hash per organization. A file’s type is read from its contents, never the filename or a claimed content type, and the same file arriving twice is caught as a duplicate.
Self-hosters choose the store and own its access, backup and retention. See Configuration for the PAYVY_S3_* variables.
What happens next
Section titled “What happens next”With extraction on, new inbox documents are read automatically in the background (see Reading bills with a model): a draft is prepared, checked and matched to a vendor. A failed read is recorded on the document and retried; after three failures it waits for a person. Nothing becomes a bill until bill.create is called with the draft, as-is or corrected.