{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Invoicing"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"invoicing","__idx":0},"children":["Invoicing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Invoicing API exposes issued invoices and the customers they bill - the"," ","same records shown in the Rho dashboard. Use it to track what is outstanding,"," ","reconcile payments, and retrieve invoice PDFs without scraping the web app."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Stable contract"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Invoicing API is part of the stable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v1"]}," contract: additive-only, with"," ","breaking changes reserved for a new API version. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/v1/versioning"},"children":["Versioning and"," ","compatibility"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every endpoint requires the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoicing:read"]}," scope."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"invoices-and-customers","__idx":1},"children":["Invoices and customers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Customers are the businesses you bill. A customer ID and its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["last_invoice_id"]}," ","are UUIDs. Deleted customers are excluded from the list endpoint unless"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["include_deleted=true"]},"; fetching a customer by ID still returns it while the"," ","record exists."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Invoices are issued documents. List invoices by status or inclusive issue and"," ","due-date ranges, then follow ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["page.next_page_token"]}," with the same filters to"," ","read every page. Results are ordered by creation time, newest first."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All amounts are integer minor units in the accompanying currency. For USD,"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["124500"]}," represents $1,245.00."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"accounting-sync-status","__idx":2},"children":["Accounting sync status"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accounting_sync_status"]}," reports the invoice's relationship to the accounting"," ","integration:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["not_pushed"]}," - eligible to be pushed after being unskipped."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["synced"]}," - successfully synced to the integration."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error"]}," - the most recent sync attempt failed. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accounting_synced_at"]},", when"," ","present, remains the timestamp of the last successful sync."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skip"]}," - explicitly excluded from syncing."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["object_changed"]}," - previously synced, but changed since the last successful"," ","sync."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"invoice-pdfs","__idx":3},"children":["Invoice PDFs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When an invoice has a PDF, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["file_id"]}," is present. When no PDF exists, the field"," ","is omitted. Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /invoicing/invoices/{invoice_id}/files/{file_id}"]}," to"," ","exchange it for a fresh, short-lived ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["download_url"]},"; do not persist that URL."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"reference","__idx":4},"children":["Reference"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Full endpoint catalogue - paths, parameters, response shapes, and required"," ","scopes - lives in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api/v1/openapi/invoicing"},"children":["API Reference"]},"."]}]},"headings":[{"value":"Invoicing","id":"invoicing","depth":1},{"value":"Invoices and customers","id":"invoices-and-customers","depth":2},{"value":"Accounting sync status","id":"accounting-sync-status","depth":2},{"value":"Invoice PDFs","id":"invoice-pdfs","depth":2},{"value":"Reference","id":"reference","depth":2}],"frontmatter":{"seo":{"title":"Invoicing"}},"lastModified":"2026-09-09T13:05:33.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/v1/invoicing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}