Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.
This workflow shows developers how to build automation around accounts payable. For example, you can build a scheduled job that checks for new posted bills and sends a notification to Slack, or a pipeline that reconciles bill data against another system.
Step 1: Set up authentication for your pipeline.In your CI/CD environment (GitHub Actions, Jenkins, etc.), add X_API_KEY as a secret. The CLI uses this automatically when the environment variable is set; no browser-based login required.
export X_API_KEY="$DUALENTRY_API_KEY" # reference your CI/CD secret
Step 2: Pull posted bills as JSON.
dualentry bills list --status posted --format json
The --status and --format flags are confirmed on bills. JSON output makes it straightforward to parse programmatically.Step 3: Pipe into jq or another tool.A list command returns an object, not a bare array. The shape is {items: [...], count: N}, where count is the total available rather than the number returned on this page. Reach into .items[] to iterate the records:
Inspect the raw output once to confirm the exact field names available on your version, then build your filter against those keys. Piping to jq '.[]' instead of .items[] iterates the object’s values rather than the records, which yields the array and the count as two results rather than one record per line.Step 4: Add to a scheduled job.Wire the same commands into a scheduled CI workflow. The example below runs each weekday morning in GitHub Actions:
name: Check posted billson: schedule: - cron: '0 9 * * 1-5' # weekdays at 9amjobs: check-bills: runs-on: ubuntu-latest steps: - name: Install DualEntry CLI run: curl -fsSL https://raw.githubusercontent.com/dualentry/dualentry-cli/main/install.sh | sh - name: List posted bills env: X_API_KEY: ${{ secrets.DUALENTRY_API_KEY }} run: dualentry bills list --status posted --format json > bills.json - name: Process results run: | # your notification or reconciliation logic here jq '.count' bills.json
The install script method shown here requires Python 3.11+ on the CI runner. Add a setup step (e.g., actions/setup-python with python-version: '3.11') if your runner image doesn’t include it.
Result: A scheduled CI/CD job runs on the cadence you choose, pulls posted bills as JSON, and hands them to your notification or reconciliation logic.Note that jq '.count' reports the total matching the filter, which can exceed the records in the file. Add --all to the list command if the job needs every record rather than the first page.
Use --format json for anything automated: table output is great for humans but brittle for scripts.
The same job can write back to your books: bills create and bills update work alongside list, bank-match match and bank-match unmatch reconcile bank transactions, and intercompany-journal-entries post posts drafts. See the CLI Reference for every write command.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"DualEntry Documentation","colors":{"primary":"#004F5C","light":"#5BC9DB","dark":"#81E0EF"},"logo":{"light":"https://mintcdn.com/entryinc/AComF9V8rHO5A0Pv/images/brand/dualentry-docs-logo-light.svg?fit=max\u0026auto=format\u0026n=AComF9V8rHO5A0Pv\u0026q=85\u0026s=910d5b39d1a3170bb460a1da7698f74a","dark":"https://mintcdn.com/entryinc/AComF9V8rHO5A0Pv/images/brand/dualentry-docs-logo-dark.svg?fit=max\u0026auto=format\u0026n=AComF9V8rHO5A0Pv\u0026q=85\u0026s=2ca84043acf55ced53968816ab701229","href":"/"},"favicon":"https://mintcdn.com/entryinc/AComF9V8rHO5A0Pv/images/brand/favicon.svg?fit=max\u0026auto=format\u0026n=AComF9V8rHO5A0Pv\u0026q=85\u0026s=651830fae4e719b04cd5ec5a8465baf2","api":{"playground":{"display":"simple"},"mdx":{"auth":{"method":"key","name":"X-API-KEY"},"server":"https://api.dualentry.com"}},"appearance":{"default":"system"},"background":{"color":{"light":"#F8FBFC","dark":"#0F373E"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/dualentry","x":"https://x.com/dualentry","reddit":"https://www.reddit.com/r/dualentry"}},"fonts":{"heading":{"family":"TWK Lausanne","weight":700,"source":"fonts/TWKLausanne-700.woff2","format":"woff2"},"body":{"family":"TWK Lausanne","weight":400,"source":"fonts/TWKLausanne-400.woff2","format":"woff2"}},"styling":{"latex":true},"errors":{"404":{"redirect":true}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"entryinc","hasAudioNarration":false,"actualSubdomain":"entryinc","customDomains":["docs.dualentry.com"],"gitSource":{"type":"github","owner":"dualentry","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af1e453e7b89d498acc89a8","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"API Reference","count":858},{"language":"default","tag":"Money In","count":255},{"language":"default","tag":"Accountants","count":213},{"language":"default","tag":"Money Out","count":194},{"language":"default","tag":"Accounting Setup","count":73},{"language":"default","tag":"Tax","count":64},{"language":"default","tag":"Transactions","count":64},{"language":"default","tag":"Developers","count":60},{"language":"default","tag":"Core Financials","count":51},{"language":"default","tag":"Integrations","count":48}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"ask@dualentry.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html:not(.dark) #navbar,html:not(.dark) #navbar-transition,html:not(.dark) #navbar>.absolute{background-color:#F8FBFC!important}#navbar .nav-tabs{width:100%;justify-content:center}html:not(.dark) #sidebar-content{background-color:#F8FBFC!important}html:not(.dark) #sidebar-content .sidebar-group-icon{color:#004F5C!important}html.dark #navbar,html.dark #navbar-transition,html.dark #navbar>.absolute{background-color:#0F373E!important}html.dark #navbar>.absolute:not(.inset-0){border-bottom-color:rgba(255, 255, 255, 0.06)!important}@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)){html:not(.dark) #navbar,html.dark #navbar,html:not(.dark) #navbar>.absolute:not(.inset-0),html.dark #navbar>.absolute:not(.inset-0){background-color:transparent!important}html:not(.dark) #navbar>.inset-0{background-color:rgba(248, 251, 252, 0.72)!important}html.dark #navbar>.inset-0{background-color:rgba(15, 55, 62, 0.72)!important}#navbar>.inset-0{-webkit-backdrop-filter:blur(30px) saturate(1.6);backdrop-filter:blur(30px) saturate(1.6)}}@supports (animation-timeline: scroll()){@keyframes header-fade-in{from{opacity:0}to{opacity:1}}html.dark #navbar>.absolute,html:not(.dark) body:has(.home-hero) #navbar>.absolute{animation:header-fade-in linear both;animation-timeline:scroll(root block);animation-range:0 80px}@keyframes home-nav-on-hero-text{from{color:#DEE0E1}}@keyframes home-nav-on-hero-search{from{color:rgba(255, 255, 255, 0.5);background-color:rgba(255, 255, 255, 0.03);border-color:#252728}}@keyframes home-logo-on-hero{from{opacity:1}to{opacity:0}}@keyframes home-logo-off-hero{from{opacity:0}to{opacity:1}}html:not(.dark) body:has(.home-hero) #navbar :is(a,button,svg,span):not(.absolute){animation:home-nav-on-hero-text linear both;animation-timeline:scroll(root block);animation-range:0 80px}@keyframes home-nav-on-hero-hover{from{--nav-tab-hover: #5BC9DB}}html:not(.dark) body:has(.home-hero) #navbar{animation:home-nav-on-hero-hover linear both;animation-timeline:scroll(root block);animation-range:0 80px}html:not(.dark) body:has(.home-hero) #navbar .nav-tabs-item:hover :is(svg,span){animation:none}html:not(.dark) body:has(.home-hero) #navbar #search-bar-entry{animation-name:home-nav-on-hero-search}html:not(.dark) body:has(.home-hero) #navbar a:has(>img.nav-logo){position:relative;display:inline-block}html:not(.dark) body:has(.home-hero) #navbar img.nav-logo[src*=\"logo-dark\"]{content:url(\"/images/brand/dualentry-docs-logo-dark.svg\");display:block!important;position:absolute;inset:0 auto auto 0;animation:home-logo-on-hero linear both;animation-timeline:scroll(root block);animation-range:0 80px}html:not(.dark) body:has(.home-hero) #navbar img.nav-logo[src*=\"logo-light\"]{animation:home-logo-off-hero linear both;animation-timeline:scroll(root block);animation-range:0 80px}}html.dark .code-block-background{background-color:#0F373E!important}html.dark [data-fade-overlay]{background:#0F373E!important}header#header>div.prose{display:none}header#header:has(+.mdx-content>h1) #page-title{display:none}header#header:has(+.mdx-content>h1)+.mdx-content{margin-top:0!important}html:not([data-tab-logo-ready]) img.nav-logo,html:not([data-tab-logo-ready]) #navbar nav-logo,html:not([data-current-path]) img.nav-logo,html:not([data-current-path]) #navbar nav-logo{opacity:0!important;visibility:hidden!important}#footer>div:has(a[href*=\"mintlify.com\"]){display:none!important}#footer{justify-content:flex-end!important}html.dark img[src*=\"/integration-logos/\"]{background-color:#FFFFFF!important;border-radius:4px;padding:1px}.home{--home-surface: #F9FEFF;--home-border: rgba(10, 12, 13, 0.1);--home-heading: #101828;--home-title: #161919;--home-body: #3E4041;--home-muted: #7C8385;--home-icon: #5D6768;--home-accent: #007281;--home-chip: rgba(0, 57, 71, 0.07);--home-chip-text: #1B2122;--home-link-underline: #004F5C;width:100%}html.dark .home{--home-surface: #12424A;--home-border: rgba(255, 255, 255, 0.1);--home-heading: #F4FAFB;--home-title: #F4FAFB;--home-body: #C3D3D6;--home-muted: #8FA6AA;--home-icon: #A9C4C8;--home-accent: #81E0EF;--home-chip: rgba(129, 224, 239, 0.12);--home-chip-text: #E6F6F8;--home-link-underline: #81E0EF}.home h1,.home h2,.home h3,.home p{margin:0}.home a{text-decoration:none}body:has(.home-hero){--home-nav-h: 112px}body:has(.home-hero) #content-area{padding-top:0}@media (min-width: 1024px){body:has(.home-hero){--home-nav-h: 96px}body:has(.home-hero) #navbar{margin-bottom:calc(var(--home-nav-h) * -1)}}.home-hero{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:calc(340px + var(--home-nav-h, 0px));padding:calc(56px + var(--home-nav-h, 0px)) 20px 56px;background:linear-gradient(to top, #308289 0%, #004F5C 50%, #002329 100%)}.home-hero-texture{position:absolute;inset:-24px 0 auto 0;width:100%;min-width:1200px;height:calc(100% + 260px);object-fit:cover;mix-blend-mode:color-dodge;opacity:0.24;pointer-events:none;z-index:-1}.home-hero-body{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}.home-hero-title{color:#FFFFFF;font-size:35px;font-weight:600;line-height:40px;letter-spacing:-0.9px}.home-hero-subtitle{color:#FFFFFF;font-size:18px;font-weight:500;line-height:1.5}.home-assistant{display:flex;align-items:center;justify-content:space-between;width:300px;max-width:100%;height:48px;padding:0 12px 0 14px;border:2px solid rgba(91, 182, 198, 0.2);border-radius:9999px;background:rgba(255, 255, 255, 0.5);backdrop-filter:blur(2px);color:#252728;font-size:14px;cursor:pointer;transition:background-color 0.15s ease}.home-assistant:hover{background:rgba(255, 255, 255, 0.65)}.home-assistant-label{display:flex;align-items:center;gap:8px}.home-assistant-kbd{font-family:inherit;font-size:12px;background:none;border:0;color:inherit}.home-section{max-width:1440px;margin:0 auto;padding:32px 40px}.home-section+.home-section{margin-top:40px}.home-split{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:24px;align-items:start}.home-prose{display:flex;flex-direction:column;gap:18px;padding:16px 0}.home-prose h2{color:var(--home-heading);font-size:24px;font-weight:600;line-height:32px;letter-spacing:-0.6px}.home-prose p{color:var(--home-body);font-size:15px;line-height:28px}.home-prose a{color:var(--home-heading);border-bottom:1px solid var(--home-link-underline)}.home-paths{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:24px;margin-top:32px}.home-path-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:16px;height:444px;padding:24px;overflow:hidden;border:1px solid var(--home-border);border-radius:16px;background:var(--home-surface);transition:border-color 0.15s ease, box-shadow 0.15s ease}.home-path-card:hover{border-color:rgba(0, 79, 92, 0.35);box-shadow:0 8px 24px rgba(0, 35, 41, 0.08)}.home-path-card h2{position:relative;z-index:1;color:var(--home-title);font-size:20px;font-weight:600;line-height:1.2}.home-path-card p{position:relative;z-index:1;min-height:4.2em;color:var(--home-body);font-size:15px;line-height:1.4}.home-chip{position:relative;z-index:1;display:inline-flex;align-items:center;height:32px;padding:0 8px;border-radius:4px;background:var(--home-chip);color:var(--home-chip-text);font-size:14px;font-weight:500}.home-card-art{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none}.home-card-art-layer{position:absolute;max-width:none;margin:0;border-radius:8px;transform-origin:top left;transform:rotate(30deg) skewX(-30deg) scaleY(0.87)}.home-card-art-shadow{filter:blur(6px)}.home-card-art-top{transition:translate 0.3s ease}.home-path-card:hover .home-card-art-top{translate:0 -6px}.home-icon-panel{display:grid;grid-template-columns:repeat(7, minmax(0, 72px));justify-content:center;gap:8px;padding:24px 16px;border:1px solid var(--home-border);border-radius:16px}.home-icon-cell{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;border-radius:12px;transition:background-color 0.15s ease}.home-icon-cell:hover,.home-icon-cell:focus-visible{background-color:var(--home-chip)}.home-icon-cell:hover .home-icon,.home-icon-cell:focus-visible .home-icon{background-color:var(--home-accent)}.home-icon{width:32px;height:32px;background-color:var(--home-icon);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.home-icon-tip{position:absolute;bottom:calc(100% + 6px);left:50%;z-index:10;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;border-radius:8px;background:#0F373E;color:#FFFFFF;font-size:12px;line-height:1.3;white-space:nowrap;box-shadow:0 4px 12px rgba(0, 35, 41, 0.2);opacity:0;transform:translate(-50%, 4px);transition:opacity 0.15s ease, transform 0.15s ease;pointer-events:none}.home-icon-tip strong{font-size:13px;font-weight:600}.home-icon-tip span{color:#C3D3D6}.home-icon-tip::after{content:\"\";position:absolute;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:#0F373E}html.dark .home-icon-tip{background:#F4FAFB;color:#0F373E}html.dark .home-icon-tip span{color:#4F6B70}html.dark .home-icon-tip::after{border-top-color:#F4FAFB}.home-icon-cell:hover .home-icon-tip,.home-icon-cell:focus-visible .home-icon-tip{opacity:1;transform:translate(-50%, 0)}.home-icon-dot{position:absolute;top:calc(50% - 28px);left:calc(50% + 12px);width:16px;height:16px;border-radius:9999px;background:#56D9D9}.home-cli{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));grid-template-rows:auto auto;column-gap:24px;row-gap:12px}.home-cli-panel{grid-column:2;grid-row:1}.home-cli-link{grid-column:2;grid-row:2}.home-cli-intro{display:flex;flex-direction:column;gap:8px}.home-cli-tabs{display:flex;flex-direction:column;gap:4px;padding:8px;border-radius:12px;background:var(--home-chip)}.home-cli-tab{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border:1px solid transparent;border-radius:8px;background:none;text-align:left;cursor:pointer;transition:background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease}.home-cli-tab:hover{background:var(--home-surface)}.home-cli-tab[aria-selected=\"true\"]{border-color:var(--home-border);background:var(--home-surface);box-shadow:0 1px 3px rgba(0, 35, 41, 0.08)}.home-cli-tab-label{color:var(--home-body);font-size:14px;font-weight:500}.home-cli-tab[aria-selected=\"true\"] .home-cli-tab-label{color:var(--home-accent);font-weight:600}.home-cli-tab-blurb{color:var(--home-body);font-size:13px;line-height:1.4}.home-cli-tab:not([aria-selected=\"true\"]) .home-cli-tab-blurb{display:none}.home-cli-panel{display:flex;min-width:0}.home-cli-panel .home-terminal{display:flex;flex:1;flex-direction:column;min-width:0}.home-cli-link{justify-self:end;color:var(--home-heading);font-size:14px;font-weight:500;border-bottom:1px solid var(--home-link-underline)}.home-terminal{position:relative;padding:20px;border:1px solid #334155;border-radius:16px;background:#0F172A;box-shadow:0 4px 20px rgba(0, 0, 0, 0.35)}.home-terminal-dots{display:flex;gap:8px;margin-bottom:16px}.home-terminal-dots span{width:10px;height:10px;border-radius:9999px;background:#EF4444;opacity:0.6}.home-terminal-dots span:nth-child(2){background:#EAB308}.home-terminal-dots span:nth-child(3){background:#22C55E}.home-term-body{flex:1 1 0;min-height:0;overflow:auto;color:#E2E8F0;font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;font-size:11px;line-height:1.2;white-space:pre}.home-term-cmd{white-space:pre-wrap;overflow-wrap:anywhere}.home-term-body .home-tok-prompt{color:#64748B}.home-term-body .home-tok-cmd{color:#5BC9DB}.home-term-body .home-tok-flag{color:#9CC0E8}.home-term-body .home-tok-str{color:#F0B45B}.home-term-body .home-tok-arg{color:#E2E8F0}.home-out-green{color:#4ADE80}.home-out-yellow{color:#FACC15}.home-out-blue{color:#60A5FA}.home-term-line+.home-term-line:has(>.home-tok-prompt:first-child){margin-top:6px}.home-term-caret{display:inline-block;width:6px;height:12px;margin-left:1px;vertical-align:-2px;background:#E2E8F0;animation:home-caret-blink 1s steps(1) infinite}@keyframes home-caret-blink{50%{opacity:0}}@media (prefers-reduced-motion: reduce){.home-term-caret{animation:none}}.home-help-cards{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:16px;padding:16px 0}.home-split:has(.home-help-cards){align-items:stretch}.home-help-card{display:flex;flex-direction:column;justify-content:center;gap:12px;padding:20px 19px;border:1px solid var(--home-border);border-radius:16px;background:rgba(255, 255, 255, 0.3);transition:border-color 0.15s ease}html.dark .home-help-card{background:rgba(255, 255, 255, 0.03)}.home-help-card:hover{border-color:rgba(0, 79, 92, 0.35)}.home-help-icon{width:40px;height:40px;background-color:var(--home-accent);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.home-help-card h3{color:var(--home-title);font-size:16px;font-weight:700}.home-help-card p{color:var(--home-body);font-size:15px;line-height:1.4;overflow-wrap:anywhere}.home-help-card .home-help-note{font-size:13px;overflow-wrap:normal}.home-footer{display:flex;justify-content:flex-end;gap:24px;max-width:1360px;margin:64px auto 0;padding:40px 0 48px;border-top:1px solid var(--home-border)}.home-footer a{display:flex;color:#9EA0A1;transition:color 0.15s ease}.home-footer a:hover{color:var(--home-accent)}.home-footer svg{background-color:currentColor!important}html[data-current-path=\"/\"] #navbar .nav-tabs-item[data-active=\"true\"]{text-shadow:none!important}html[data-current-path=\"/\"] #navbar .nav-tabs-item[data-active=\"true\"]>div{background-color:transparent!important}html[data-current-path=\"/\"] #navbar .nav-tabs-item:hover>div:last-child{background-color:var(--nav-tab-hover)!important}html.dark[data-current-path=\"/\"] #navbar .nav-tabs-item:hover>div:last-child{background-color:#5BC9DB!important}@media (max-width: 1024px){.home-paths,.home-split,.home-cli{grid-template-columns:minmax(0, 1fr)}.home-cli-tabs{flex-direction:row;overflow-x:auto}.home-cli-tab{flex:0 0 auto;border:1px solid var(--home-border);border-radius:9999px;padding:8px 14px}.home-cli-tab[aria-selected=\"true\"]{border-color:var(--home-accent)}.home-cli-tab-blurb{display:none}.home-cli-panel,.home-cli-link{grid-column:1;grid-row:auto}.home-path-card{height:380px}}@media (max-width: 640px){.home-section{padding:24px 16px}.home-hero{min-height:calc(300px + var(--home-nav-h, 0px));padding:calc(40px + var(--home-nav-h, 0px)) 16px 40px}.home-hero-title{font-size:28px;line-height:34px}.home-help-cards{grid-template-columns:minmax(0, 1fr)}.home-icon-panel{display:none}.home-footer{margin:48px 16px 0}.home-term-body{height:300px;flex:none}}@media (min-width: 1024px){[data-assistant-sheet-container]{overflow:hidden!important;min-width:0!important;transition:width 0.3s cubic-bezier(0.32, 0.72, 0, 1)}[data-assistant-sheet-container] #chat-assistant-sheet{min-width:368px}}@media (prefers-reduced-motion: reduce){[data-assistant-sheet-container]{transition:none}}@property --nav-tab-hover{syntax:\"\u003ccolor>\";inherits:true;initial-value:#004F5C}#navbar .nav-tabs-item:hover{color:var(--nav-tab-hover)!important}html.dark #navbar .nav-tabs-item:hover{color:#5BC9DB!important}html:not(.dark) #navbar button.nav-tabs-item:not(:hover){color:rgb(var(--gray-800))}html.dark #navbar button.nav-tabs-item:not(:hover){color:rgb(var(--gray-200))}#navbar button.nav-tabs-item>div:first-child{color:inherit!important}#navbar button.nav-tabs-item>div:first-child>svg:first-child{background-color:currentColor!important}html[data-current-path^=\"/developers/release-notes\"] #navbar button.nav-tabs-item>div:first-child{text-shadow:-0.2px 0 0 currentColor, 0.2px 0 0 currentColor}.rh-featured,.rh-updates,.rh-posted{--rh-surface: #F9FEFF;--rh-tile: linear-gradient(160deg, #E7F4F6 0%, #F4FAFB 100%);--rh-border: rgba(10, 12, 13, 0.1);--rh-border-hover: rgba(0, 79, 92, 0.35);--rh-heading: #101828;--rh-title: #161919;--rh-body: #3E4041;--rh-muted: #696F71;--rh-accent: #007281;--rh-chip: rgba(0, 57, 71, 0.07);--rh-chip-text: #1B2122;--rh-chip-on: #004F5C;--rh-chip-on-text: #FFFFFF}html.dark .rh-featured,html.dark .rh-updates,html.dark .rh-posted{--rh-surface: #12424A;--rh-tile: linear-gradient(160deg, #164C55 0%, #12424A 100%);--rh-border: rgba(255, 255, 255, 0.1);--rh-border-hover: rgba(129, 224, 239, 0.35);--rh-heading: #F4FAFB;--rh-title: #F4FAFB;--rh-body: #C3D3D6;--rh-muted: #A5B8BB;--rh-accent: #81E0EF;--rh-chip: rgba(129, 224, 239, 0.12);--rh-chip-text: #E6F6F8;--rh-chip-on: #81E0EF;--rh-chip-on-text: #0F373E}.rh-card-meta{font-size:12px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--rh-muted)}.rh-card-desc{margin:0;font-size:15px;line-height:1.5;color:var(--rh-body)}.rh-featured{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:24px;margin:16px 0 56px}.rh-featured-card{display:flex;flex-direction:column;gap:10px}.rh-featured-visual{aspect-ratio:16 / 10;overflow:hidden;margin-bottom:8px;border:1px solid var(--rh-border);border-radius:16px;background:var(--rh-tile)}a.rh-featured-visual{display:block;text-decoration:none}.rh-featured-visual img{display:block;width:100%;height:100%;max-width:none;margin:0!important;object-fit:cover;object-position:left top;transition:transform 0.3s ease}.rh-featured-card:hover .rh-featured-visual img{transform:scale(1.03)}@media (prefers-reduced-motion: reduce){.rh-featured-visual img{transition:none}.rh-featured-card:hover .rh-featured-visual img{transform:none}}.rh-featured-visual-video{aspect-ratio:16 / 9;border:0}.rh-featured-card .rh-card-desc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.rh-featured-title{margin:0!important;font-size:20px;font-weight:600;line-height:1.25;letter-spacing:-0.3px;color:var(--rh-title)}#rh-all-updates{scroll-margin-top:7rem}.rh-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0 16px}.rh-search{flex:1 1 260px;height:40px;padding:0 14px;border:1px solid var(--rh-border);border-radius:8px;background:var(--rh-surface);color:var(--rh-title);font-size:14px;transition:border-color 0.15s ease}.rh-search:hover{border-color:var(--rh-border-hover)}.rh-search:focus{outline:2px solid #5BC9DB;outline-offset:1px}.rh-segment{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:var(--rh-chip)}.rh-segment-btn{height:34px;padding:0 14px;border:0;border-radius:8px;background:transparent;color:var(--rh-muted);font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease}.rh-segment-btn:hover{color:var(--rh-title)}.rh-segment-on,.rh-segment-on:hover{background:var(--rh-surface);color:var(--rh-title);box-shadow:0 1px 3px rgba(0, 35, 41, 0.12)}html.dark .rh-segment-on,html.dark .rh-segment-on:hover{background:#1B5560;box-shadow:none}.rh-segment-btn:focus-visible{outline:2px solid #5BC9DB;outline-offset:1px}.rh-areas{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:20px}.rh-areas-label{margin-right:6px;font-size:12px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--rh-muted)}.rh-area{height:28px;padding:0 11px;border:1px solid var(--rh-border);border-radius:999px;background:transparent;color:var(--rh-body);font-size:13px;cursor:pointer;transition:border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease}.rh-area:hover{border-color:var(--rh-border-hover);color:var(--rh-title)}.rh-area-on,.rh-area-on:hover{border-color:var(--rh-accent);background:transparent;color:var(--rh-accent);font-weight:600}.rh-area-empty{opacity:0.45}.rh-area:focus-visible{outline:2px solid #5BC9DB;outline-offset:1px}.rh-result-count{margin:0 0 12px;font-size:13px;color:var(--rh-muted)}.rh-empty{margin:24px 0;font-size:15px;color:var(--rh-muted)}.rh-grid{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:20px}.rh-card{display:flex;flex-direction:column;gap:10px;padding:20px;border:1px solid var(--rh-border);border-radius:16px;background:var(--rh-surface)}.rh-card-title{margin:0!important;font-size:17px;font-weight:600;line-height:1.3;color:var(--rh-title)}.rh-card-link{color:inherit;text-decoration:none;border-bottom:0}.rh-card-link:hover{text-decoration:underline}.rh-featured-visual iframe{display:block;width:100%;height:100%;border:0}.rh-card .rh-card-desc{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.rh-card-date{margin-top:auto;padding-top:6px;font-size:13px;color:var(--rh-muted)}.rh-card-group{position:relative;transition:border-color 0.15s ease}.rh-card-group:hover{border-color:var(--rh-border-hover)}.rh-card-group .rh-card-title button{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}.rh-card-group .rh-card-title button::after{content:\"\";position:absolute;inset:0;border-radius:16px}.rh-card-group:has(.rh-card-title button:focus-visible){outline:2px solid #5BC9DB;outline-offset:1px}.rh-card-more{float:right;color:var(--rh-accent);font-weight:600}.rh-dialog{inset:0;margin:auto;width:min(640px, calc(100vw - 32px));height:fit-content;max-height:calc(100vh - 64px);padding:0;overflow:auto;border:1px solid var(--rh-border);border-radius:16px;background:var(--rh-surface);color:var(--rh-body);box-shadow:0 24px 64px rgba(0, 35, 41, 0.25)}.rh-dialog::backdrop{background:rgba(10, 20, 22, 0.55)}.rh-dialog-body{padding:24px}.rh-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:8px}.rh-dialog-title{margin:4px 0 0!important;font-size:22px;font-weight:600;line-height:1.25;color:var(--rh-title)}.rh-dialog-close{flex:none;width:36px;height:36px;border:1px solid var(--rh-border);border-radius:8px;background:transparent;color:var(--rh-title);font-size:22px;line-height:1;cursor:pointer}.rh-dialog-close:hover{border-color:var(--rh-border-hover)}.rh-dialog-close:focus-visible{outline:2px solid #5BC9DB;outline-offset:1px}.rh-dialog-list{margin:0;padding:0;list-style:none}.rh-dialog-item{display:flex;flex-direction:column;gap:6px;padding:16px 0;border-top:1px solid var(--rh-border)}.rh-dialog-item-title{margin:0!important;font-size:16px;font-weight:600;line-height:1.3;color:var(--rh-title)}.rh-dialog-date{color:var(--rh-accent);text-decoration:none;border-bottom:0}.rh-dialog-date:hover{text-decoration:underline}.rh-pager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:24px}.rh-pager-btn{height:40px;padding:0 14px;border:1px solid var(--rh-border);border-radius:8px;background:var(--rh-surface);color:var(--rh-heading);font-size:14px;font-weight:500;cursor:pointer;transition:border-color 0.15s ease}.rh-pager-btn:hover:not(:disabled){border-color:var(--rh-border-hover)}.rh-pager-btn:disabled{opacity:0.4;cursor:default}.rh-pager-label{font-size:14px;color:var(--rh-muted);font-variant-numeric:tabular-nums}.rh-posted{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);gap:32px;align-items:center;margin:64px 0 24px;padding:40px;border-radius:16px;color:#FFFFFF;background:linear-gradient(to top, #308289 0%, #004F5C 50%, #002329 100%)}.rh-posted-texture{position:absolute;inset:0;width:100%;height:100%;max-width:none;margin:0!important;object-fit:cover;mix-blend-mode:color-dodge;opacity:0.24;pointer-events:none;z-index:-1}.rh-posted-title{margin:0!important;font-size:35px;font-weight:600;line-height:40px;letter-spacing:-0.9px;color:#FFFFFF}.rh-posted-sub{margin:12px 0 0;font-size:16px;line-height:1.5;color:rgba(255, 255, 255, 0.82)}.rh-posted-form{display:grid;grid-template-columns:minmax(0, 1fr) auto;gap:8px}.rh-posted-input{height:48px;padding:0 14px;border:2px solid rgba(91, 182, 198, 0.2);border-radius:8px;background:rgba(255, 255, 255, 0.92);color:#161919;font-size:15px}.rh-posted-input:focus{outline:2px solid #81E0EF;outline-offset:1px}.rh-posted-button{height:48px;padding:0 22px;border:0;border-radius:8px;cursor:pointer;background:#81E0EF;color:#002329;font-size:15px;font-weight:600;transition:background-color 0.15s ease}.rh-posted-button:hover{background:#A6EAF4}.rh-posted-button:disabled{opacity:0.7;cursor:default}.rh-posted-consent,.rh-posted-error{grid-column:1 / -1;margin:4px 0 0;font-size:12px;line-height:1.5;color:rgba(255, 255, 255, 0.7)}.rh-posted-error{color:#FFD1CC;font-size:13px}.rh-posted-consent a{color:#FFFFFF;text-decoration:underline;text-underline-offset:2px}.rh-posted-done{margin:0;font-size:16px;font-weight:500;color:#FFFFFF}html[data-page-mode=\"center\"][data-current-path=\"/developers/release-notes\"] #sidebar-content,html[data-current-path=\"/developers/release-notes/changelog\"] #sidebar-content,html[data-current-path^=\"/developers/release-notes/changelog-\"] #sidebar-content{display:none!important}.rh-periods{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 24px}.rh-period{height:30px;padding:0 12px;display:inline-flex;align-items:center;border:1px solid rgba(10, 12, 13, 0.1);border-radius:999px;color:#3E4041;font-size:13px;text-decoration:none;border-bottom-width:1px;transition:border-color 0.15s ease, color 0.15s ease}a.rh-period:hover{border-color:rgba(0, 79, 92, 0.35);color:#161919}.rh-period-on{border-color:#007281;color:#007281;font-weight:600}html.dark .rh-period{border-color:rgba(255, 255, 255, 0.1);color:#C3D3D6}html.dark a.rh-period:hover{border-color:rgba(129, 224, 239, 0.35);color:#F4FAFB}html.dark .rh-period-on{border-color:#81E0EF;color:#81E0EF}html[data-page-mode=\"center\"][data-current-path=\"/developers/release-notes\"] #content-container{max-width:1120px!important}html[data-page-mode=\"center\"][data-current-path=\"/developers/release-notes\"] #content-area{width:100%!important}.rh-update-video{width:100%;aspect-ratio:16 / 9;border-radius:16px}@media (max-width: 1100px){.rh-grid{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (max-width: 900px){.rh-featured,.rh-grid{grid-template-columns:minmax(0, 1fr)}.rh-posted{grid-template-columns:minmax(0, 1fr);padding:28px 24px}.rh-posted-form{grid-template-columns:minmax(0, 1fr)}.rh-segment{width:100%}.rh-segment-btn{flex:1}}"},{"filePath":"cli-reference.css","content":"#content .cli-group{--cli-nav: 96px;--cli-group-h: 64px;--cli-bg: #F8FBFC}html.dark #content .cli-group{--cli-bg: #0F373E}#content .cli-group+.cli-group{margin-top:64px}#content .cli-group>h2{position:sticky;top:var(--cli-nav);z-index:22;box-sizing:border-box;height:var(--cli-group-h);margin:0!important;padding:0;display:flex;align-items:center;border-bottom:1px solid rgba(10, 12, 13, 0.1);background-color:var(--cli-bg);scroll-margin-top:var(--cli-nav)!important}html.dark #content .cli-group>h2{border-bottom-color:rgba(255, 255, 255, 0.1)}#content .cli-entry>h3{scroll-margin-top:calc(var(--cli-nav) + var(--cli-group-h) + 16px)!important}#content h3:has(+.cli-cmd){scroll-margin-top:calc(var(--cli-nav) + var(--cli-group-h) - 29px)!important;height:1px;margin:72px 0 28px!important;padding:0;overflow:hidden;font-size:0;line-height:0;color:transparent;background-color:rgba(10, 12, 13, 0.1)}html.dark #content h3:has(+.cli-cmd){background-color:rgba(255, 255, 255, 0.1)}#content .cli-cmd{position:sticky;top:calc(var(--cli-nav) + var(--cli-group-h));z-index:20;display:block;margin:0 0 20px;padding:32px 0 24px;border-bottom:1px solid rgba(10, 12, 13, 0.1);background-color:var(--cli-bg);color:#101828;font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;font-size:15px;font-weight:500;line-height:1.5}#content .cli-cmd::after{content:\"\";position:absolute;top:100%;left:0;right:0;height:32px;background:linear-gradient(to bottom, var(--cli-bg), rgba(248, 251, 252, 0));pointer-events:none}html.dark #content .cli-cmd{border-bottom-color:rgba(255, 255, 255, 0.1);color:#F4FAFB}html.dark #content .cli-cmd::after{background:linear-gradient(to bottom, var(--cli-bg), rgba(15, 55, 62, 0))}#content .cli-cmd~.cli-cmd{margin-top:40px}#content .cli-cmd::before{content:\"$\";margin-right:10px;color:#7C8385}#content .cli-cmd .cli-sig-cmd{white-space:pre-wrap}#content .cli-cmd a.cli-sig-arg{color:#004F5C;border-bottom:1px dotted rgba(0, 79, 92, 0.5);text-decoration:none;font-weight:inherit;white-space:pre-wrap}#content .cli-cmd a.cli-sig-arg:hover{border-bottom-style:solid}html.dark #content .cli-cmd a.cli-sig-arg{color:#81E0EF;border-bottom-color:rgba(129, 224, 239, 0.5)}#content .cli-anchor{scroll-margin-top:calc(var(--cli-nav) + var(--cli-group-h) + 124px)}#content li:has(>.cli-anchor:target),#content li:has(>p>.cli-anchor:target){animation:cli-target-flash 2s ease-out;border-radius:4px}@keyframes cli-target-flash{0%,40%{background-color:rgba(91, 201, 219, 0.25)}100%{background-color:transparent}}@media (max-width: 1023px){#content .cli-group{--cli-nav: 112px;--cli-group-h: 56px}#content .cli-cmd{font-size:13px;padding:24px 0 18px}}"}],"page":{"pagePath":"developers/guides/cli/how-to-automate-bill-status-checks-in-cicd","slug":"/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd","pageMetadata":{"title":"How to Automate Bill Status Checks in CI/CD","description":"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.","seo":{"description":"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job."},"content_type":"how-to","audience":"developer","product_area":"cli","contextual":{"options":[{"title":"Open in DualEntry","description":"Open Bills in the DualEntry app","icon":"arrow-up-right-from-square","href":"https://app.dualentry.com/home/money-out/bills"},"assistant","copy","view","chatgpt","claude"]},"tags":["cli","daily-operations"],"last_updated":"2026-10-15T00:00:00.000Z","status":"published","sidebarTitle":"Automate Bill Checks in CI/CD","href":"/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This workflow shows developers how to build automation around accounts payable. For example, you can build a scheduled job that checks for new posted bills and sends a notification to Slack, or a pipeline that reconciles bill data against another system.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.p,{children:[`Before you start, complete the steps in the `,_jsx(_components.a,{href:`/developers/guides/cli/quickstart`,children:`CLI Quickstart`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The CLI is installed.`}),`\n`,_jsx(_components.li,{children:`You have read access to bills.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`steps`,children:`Steps`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 1: Set up authentication for your pipeline.`})}),`\n`,_jsxs(_components.p,{children:[`In your CI/CD environment (GitHub Actions, Jenkins, etc.), add `,_jsx(_components.code,{children:`X_API_KEY`}),` as a secret. The CLI uses this automatically when the environment variable is set; no browser-based login required.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` X_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$DUALENTRY_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # reference your CI/CD secret`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 2: Pull posted bills as JSON.`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dualentry`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --status`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` posted`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --format`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` json`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`--status`}),` and `,_jsx(_components.code,{children:`--format`}),` flags are confirmed on `,_jsx(_components.code,{children:`bills`}),`. JSON output makes it straightforward to parse programmatically.`]}),`\n`,_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`Step 3: Pipe into `,_jsx(_components.code,{children:`jq`}),` or another tool.`]})}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`list`}),` command returns an object, not a bare array. The shape is `,_jsx(_components.code,{children:`{items: [...], count: N}`}),`, where `,_jsx(_components.code,{children:`count`}),` is the total available rather than the number returned on this page. Reach into `,_jsx(_components.code,{children:`.items[]`}),` to iterate the records:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dualentry`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --status`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` posted`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --format`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` json`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '.items[] | {id, vendor: .vendor_name, amount: .amount_due, due_date: .due_date}'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Inspect the raw output once to confirm the exact field names available on your version, then build your filter against those keys. Piping to `,_jsx(_components.code,{children:`jq '.[]'`}),` instead of `,_jsx(_components.code,{children:`.items[]`}),` iterates the object’s values rather than the records, which yields the array and the count as two results rather than one record per line.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 4: Add to a scheduled job.`})}),`\n`,_jsx(_components.p,{children:`Wire the same commands into a scheduled CI workflow. The example below runs each weekday morning in GitHub Actions:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`21`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Check posted bills`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`on`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` schedule`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`cron`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'0 9 * * 1-5'`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # weekdays at 9am`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`jobs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` check-bills`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` runs-on`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ubuntu-latest`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` steps`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Install DualEntry CLI`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`curl -fsSL https://raw.githubusercontent.com/dualentry/dualentry-cli/main/install.sh | sh`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`List posted bills`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` X_API_KEY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.DUALENTRY_API_KEY }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`dualentry bills list --status posted --format json > bills.json`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Process results`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` # your notification or reconciliation logic here`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` jq '.count' bills.json`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The install script method shown here requires Python 3.11+ on the CI runner. Add a setup step (e.g., `,_jsx(_components.code,{children:`actions/setup-python`}),` with `,_jsx(_components.code,{children:`python-version: '3.11'`}),`) if your runner image doesn’t include it.`]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Result:`}),` A scheduled CI/CD job runs on the cadence you choose, pulls posted bills as JSON, and hands them to your notification or reconciliation logic.`]}),`\n`,_jsxs(_components.p,{children:[`Note that `,_jsx(_components.code,{children:`jq '.count'`}),` reports the total matching the filter, which can exceed the records in the file. Add `,_jsx(_components.code,{children:`--all`}),` to the list command if the job needs every record rather than the first page.`]}),`\n`,_jsx(Heading,{level:`2`,id:`tips`,children:`Tips`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Use `,_jsx(_components.code,{children:`--format json`}),` for anything automated`]}),`: table output is great for humans but brittle for scripts.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The same job can write back to your books`}),`: `,_jsx(_components.code,{children:`bills create`}),` and `,_jsx(_components.code,{children:`bills update`}),` work alongside `,_jsx(_components.code,{children:`list`}),`, `,_jsx(_components.code,{children:`bank-match match`}),` and `,_jsx(_components.code,{children:`bank-match unmatch`}),` reconcile bank transactions, and `,_jsx(_components.code,{children:`intercompany-journal-entries post`}),` posts drafts. See the `,_jsx(_components.a,{href:`/developers/guides/cli/reference`,children:`CLI Reference`}),` for every write command.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/developers/guides/cli/how-to-review-outstanding-invoices`,children:`How to Review Outstanding Invoices with the CLI`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/developers/guides/cli/reference`,children:`CLI Reference`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"How to Automate Bill Status Checks in CI/CD","description":"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.","seo":{"description":"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job."},"content_type":"how-to","audience":"developer","product_area":"cli","contextual":{"options":[{"title":"Open in DualEntry","description":"Open Bills in the DualEntry app","icon":"arrow-up-right-from-square","href":"https://app.dualentry.com/home/money-out/bills"},"assistant","copy","view","chatgpt","claude"]},"tags":["cli","daily-operations"],"last_updated":"2026-10-15T00:00:00.000Z","status":"published","sidebarTitle":"Automate Bill Checks in CI/CD","href":"/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Steps","slug":"steps","depth":2,"children":[]},{"title":"Tips","slug":"tips","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/entryinc/01d596e72a0b5c2c/logo-tabs.js","/_mintlify/custom/entryinc/725b37e26d5b09d6/release-notes-tab.js"],"subdomain":"entryinc","siteName":"DualEntry Documentation","title":"How to Automate Bill Status Checks in CI/CD - DualEntry Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T14:22:02.552Z","gitLastModified":"2026-10-28T14:21:26.000Z","originalFileLocation":"developers/guides/cli/how-to-automate-bill-status-checks-in-cicd.md"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DualEntry Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"How to Automate Bill Status Checks in CI/CD - DualEntry Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DualEntry Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://entryinc.mintlify.site/_mintlify/api/og/v2?division=Command-Line+Interface\u0026amp;title=How+to+Automate+Bill+Status+Checks+in+CI%2FCD\u0026amp;description=Use+the+DualEntry+CLI+with+an+API+key+to+pull+posted+bills+as+JSON+in+a+CI%2FCD+pipeline%2C+then+pipe+the+results+to+jq+or+a+scheduled+job.\u0026amp;theme=e25e10837db34fb642d89fb0\u0026amp;signature=c694b3f5908ae38e09241186784eeba3e0ff546ac2af1779e0a3d055c1f8b59b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"How to Automate Bill Status Checks in CI/CD - DualEntry Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://entryinc.mintlify.site/_mintlify/api/og/v2?division=Command-Line+Interface\u0026amp;title=How+to+Automate+Bill+Status+Checks+in+CI%2FCD\u0026amp;description=Use+the+DualEntry+CLI+with+an+API+key+to+pull+posted+bills+as+JSON+in+a+CI%2FCD+pipeline%2C+then+pipe+the+results+to+jq+or+a+scheduled+job.\u0026amp;theme=e25e10837db34fb642d89fb0\u0026amp;signature=c694b3f5908ae38e09241186784eeba3e0ff546ac2af1779e0a3d055c1f8b59b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/entryinc/0hFGr3nbZt8w2lts/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DualEntry Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#004F5C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dualentry.com/#organization\",\"name\":\"DualEntry Documentation\",\"url\":\"https://docs.dualentry.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/entryinc/AComF9V8rHO5A0Pv/images/brand/dualentry-docs-logo-light.svg?fit=max\u0026auto=format\u0026n=AComF9V8rHO5A0Pv\u0026q=85\u0026s=910d5b39d1a3170bb460a1da7698f74a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dualentry.com#website\",\"name\":\"DualEntry Documentation\",\"url\":\"https://docs.dualentry.com\",\"publisher\":{\"@id\":\"https://docs.dualentry.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd#webpage\",\"url\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd\",\"name\":\"How to Automate Bill Status Checks in CI/CD\",\"description\":\"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.\",\"dateModified\":\"2026-10-28T14:21:26.000Z\",\"isPartOf\":{\"@id\":\"https://docs.dualentry.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Command-Line Interface\",\"item\":\"https://docs.dualentry.com/developers/guides/cli/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Automate Bill Status Checks in CI/CD\",\"item\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd#article\",\"headline\":\"How to Automate Bill Status Checks in CI/CD\",\"name\":\"How to Automate Bill Status Checks in CI/CD\",\"description\":\"Use the DualEntry CLI with an API key to pull posted bills as JSON in a CI/CD pipeline, then pipe the results to jq or a scheduled job.\",\"url\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dualentry.com/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd#webpage\"},\"dateModified\":\"2026-10-28T14:21:26.000Z\",\"publisher\":{\"@id\":\"https://docs.dualentry.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dualentry.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DualEntry Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"DualEntry Documentation","nav":{"global":null,"tabs":[{"tab":"Accountants","icon":"book-open","pages":[{"title":"Accountants","href":"/accountants/get-started"}]},{"tab":"Developers","icon":"compass","groups":[{"group":"Get Started","icon":"flag","pages":[{"title":"DualEntry Developer Docs","sidebarTitle":"Overview","href":"/developers/guides"},{"title":"API Versioning and Breaking Changes","sidebarTitle":"Versioning","href":"/developers/guides/versioning-policy"}]},{"group":"API","icon":"cloud","pages":[{"title":"DualEntry Public API","sidebarTitle":"Overview","href":"/developers/guides/api/index"},{"title":"Quickstart: DualEntry Public API","sidebarTitle":"API Quickstart","href":"/developers/guides/api/quickstart"},{"title":"Authentication: API Keys, Roles, and Statuses","sidebarTitle":"Authentication","href":"/developers/guides/api/authentication"},{"group":"API Keys","icon":"key","root":{"title":"API Keys","sidebarTitle":"Overview","href":"/developers/guides/api/api-keys/index"},"pages":[{"title":"How to Give an Integration Access to DualEntry","sidebarTitle":"Give an integration access","href":"/developers/guides/api/api-keys/how-to-give-an-integration-access"},{"title":"How to Authenticate Your Requests to the DualEntry API","sidebarTitle":"Authenticate your requests","href":"/developers/guides/api/api-keys/how-to-authenticate-your-requests"},{"title":"How to Replace an API Key","sidebarTitle":"Replace an API key","href":"/developers/guides/api/api-keys/how-to-replace-an-api-key"}]},{"group":"Core Concepts","icon":"gauge","root":{"title":"Core Concepts","sidebarTitle":"Overview","href":"/developers/guides/api/core-concepts/index"},"pages":[{"title":"Rate Limiting: Public API Quotas and Overrides","sidebarTitle":"Rate Limiting","href":"/developers/guides/api/core-concepts/rate-limiting"},{"title":"Pagination","sidebarTitle":"Pagination","href":"/developers/guides/api/core-concepts/pagination"},{"title":"Error Handling","sidebarTitle":"Errors","href":"/developers/guides/api/core-concepts/errors"},{"title":"Idempotency and Write Validation","sidebarTitle":"Idempotency and validation","href":"/developers/guides/api/core-concepts/idempotency-and-write-validation"}]},{"group":"Building Blocks","icon":"puzzle-piece","root":{"title":"Building Blocks","sidebarTitle":"Overview","href":"/developers/guides/api/building-blocks/index"},"pages":[{"title":"Working with Attachments","sidebarTitle":"Working with Attachments","href":"/developers/guides/api/building-blocks/working-with-attachments"},{"title":"Bank Connections: Inbound Feed API","sidebarTitle":"Bank Connections inbound","href":"/developers/guides/api/building-blocks/bank-connections-inbound"},{"title":"How to Calculate Tax Before Creating an Invoice or Bill","sidebarTitle":"Calculating tax","href":"/developers/guides/api/building-blocks/calculate-tax-before-invoicing"},{"title":"How to File and Track E-invoices with the API","sidebarTitle":"E-invoicing","href":"/developers/guides/api/building-blocks/e-invoicing"}]}]},{"group":"Command-Line Interface","icon":"terminal","pages":[{"title":"Command-Line Interface","sidebarTitle":"Overview","href":"/developers/guides/cli/index"},{"title":"Quickstart: DualEntry CLI","sidebarTitle":"CLI Quickstart","href":"/developers/guides/cli/quickstart"},{"title":"DualEntry CLI Reference","sidebarTitle":"CLI Reference","href":"/developers/guides/cli/reference"},{"title":"How to Review Outstanding Invoices with the CLI","sidebarTitle":"Review Outstanding Invoices","href":"/developers/guides/cli/how-to-review-outstanding-invoices"},{"title":"How to Run a Month-End Journal Entry Review with the CLI","description":"Use the DualEntry CLI to list, spot-check, and export every journal entry booked in a given month before you close the books for that period.","sidebarTitle":"Month-End JE Review","href":"/developers/guides/cli/how-to-run-a-month-end-journal-entry-review"},{"title":"How to Automate Bill Status Checks in CI/CD","sidebarTitle":"Automate Bill Checks in CI/CD","href":"/developers/guides/cli/how-to-automate-bill-status-checks-in-cicd"}]},{"group":"Integrations \u0026 Tools","icon":"toolbox","pages":[{"title":"Integrations \u0026 Tools","description":"Connect an AI assistant to DualEntry with MCP, or design, build, and certify a custom Public API integration for the partner program.","sidebarTitle":"Overview","href":"/developers/guides/integrations-and-tools/index"},{"title":"DualEntry MCP","sidebarTitle":"DualEntry MCP","href":"/developers/guides/integrations-and-tools/mcp"},{"title":"How Custom Integrations Work","sidebarTitle":"How Integrations Work","href":"/developers/guides/integrations-and-tools/how-custom-integrations-work"},{"title":"How to Build a Custom DualEntry Integration","sidebarTitle":"Build a Custom Integration","href":"/developers/guides/integrations-and-tools/how-to-build-a-custom-integration"},{"title":"Custom Integration Reference","sidebarTitle":"Certification \u0026 Troubleshooting","href":"/developers/guides/integrations-and-tools/custom-integration-reference"}]}]},{"tab":"API Reference","icon":"server","versions":[{"version":"V2","default":true,"tag":"Latest","groups":[{"group":"Overview","icon":"circle-info","pages":[{"title":"V2 API Reference","sidebarTitle":"Overview","href":"/developers/api/resources-v2"}]},{"group":"Organization","pages":[{"group":"Books","pages":[{"title":"List books","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/books/","href":"/developers/api/resources-v2/books/list-books"},{"title":"Get book","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/books/{book_id}/","href":"/developers/api/resources-v2/books/get-book"}]},{"group":"Companies","pages":[{"title":"List companies","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/companies/","href":"/developers/api/resources-v2/companies/list-companies"},{"title":"Get company","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/companies/{company_id}/","href":"/developers/api/resources-v2/companies/get-company"}]},{"group":"Payment Methods","pages":[{"title":"List payment methods","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/payment-methods/","href":"/developers/api/resources-v2/payment-methods/list-payment-methods"},{"title":"Get payment method","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/payment-methods/{payment_method_id}/","href":"/developers/api/resources-v2/payment-methods/get-payment-method"}]},{"group":"Period Locks","pages":[{"title":"List period locks","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/period-locks/","href":"/developers/api/resources-v2/period-locks/list-period-locks"}]},{"group":"Terms","pages":[{"title":"List terms","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/terms/","href":"/developers/api/resources-v2/terms/list-terms"},{"title":"Get term","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/terms/{term_id}/","href":"/developers/api/resources-v2/terms/get-term"}]}]},{"group":"Accounting Setup","pages":[{"group":"Accounts","pages":[{"title":"List accounts","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/accounts/","href":"/developers/api/resources-v2/accounts/list-accounts"},{"title":"Create account","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/accounts/","href":"/developers/api/resources-v2/accounts/create-account"},{"title":"Get account","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/accounts/{account_number}/","href":"/developers/api/resources-v2/accounts/get-account"},{"title":"Update account","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/accounts/{account_number}/","href":"/developers/api/resources-v2/accounts/update-account"}]},{"group":"Classifications","pages":[{"title":"List Classifications","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/classifications/","href":"/developers/api/resources-v2/classifications/list-classifications"},{"title":"Create Classification","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/classifications/","href":"/developers/api/resources-v2/classifications/create-classification"},{"title":"Get Classification","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/classifications/{classification_id}/","href":"/developers/api/resources-v2/classifications/get-classification"},{"title":"Update Classification","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/classifications/{classification_id}/","href":"/developers/api/resources-v2/classifications/update-classification"},{"title":"Update classification (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/classifications/{classification_id}/","href":"/developers/api/resources-v2/classifications/update-classification-partial"},{"title":"Delete Classification","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/classifications/{classification_id}/","href":"/developers/api/resources-v2/classifications/delete-classification"}]},{"group":"Classifications Lines","pages":[{"title":"List Classification Lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/classifications-lines/","href":"/developers/api/resources-v2/classifications-lines/list-classification-lines"}]},{"group":"Custom Fields","pages":[{"title":"List custom fields","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/custom-fields/","href":"/developers/api/resources-v2/custom-fields/list-custom-fields"},{"title":"Create custom field","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/custom-fields/","href":"/developers/api/resources-v2/custom-fields/create-custom-field"},{"title":"Get custom field","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/custom-fields/{custom_field_id}/","href":"/developers/api/resources-v2/custom-fields/get-custom-field"},{"title":"Update custom field","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/custom-fields/{custom_field_id}/","href":"/developers/api/resources-v2/custom-fields/update-custom-field"},{"title":"Delete custom field","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/custom-fields/{custom_field_id}/","href":"/developers/api/resources-v2/custom-fields/delete-custom-field"}]},{"group":"Exchange Rates","pages":[{"title":"List exchange rates","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/exchange_rates/","href":"/developers/api/resources-v2/exchange-rates/list-exchange-rates"}]},{"group":"Items","pages":[{"title":"List Items","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/items/","href":"/developers/api/resources-v2/items/list-items"},{"title":"Create Item","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/items/","href":"/developers/api/resources-v2/items/create-item"},{"title":"Get Item","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/items/{item_id}/","href":"/developers/api/resources-v2/items/get-item"},{"title":"Update Item","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/items/{item_id}/","href":"/developers/api/resources-v2/items/update-item"},{"title":"Update Item (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/items/{item_id}/","href":"/developers/api/resources-v2/items/update-item-partial"},{"title":"Archive Item","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/items/{item_id}/","href":"/developers/api/resources-v2/items/archive-item"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/projects/","href":"/developers/api/resources-v2/projects/list-projects"},{"title":"Get project","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/projects/{project_id}/","href":"/developers/api/resources-v2/projects/get-project"}]}]},{"group":"Transactions","pages":[{"group":"Accrual Templates","pages":[{"title":"List accrual templates","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/accrual-templates/","href":"/developers/api/resources-v2/accrual-templates/list-accrual-templates"},{"title":"Get accrual template","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/accrual-templates/{accrual_template_id}/","href":"/developers/api/resources-v2/accrual-templates/get-accrual-template"}]},{"group":"Intercompany Journal Entries","pages":[{"title":"List intercompany journal entries","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/intercompany-journal-entries/","href":"/developers/api/resources-v2/intercompany-journal-entries/list-intercompany-journal-entries"},{"title":"Create intercompany journal entry","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/intercompany-journal-entries/","href":"/developers/api/resources-v2/intercompany-journal-entries/create-intercompany-journal-entry"},{"title":"Get intercompany journal entry","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/intercompany-journal-entries/{record_number}/","href":"/developers/api/resources-v2/intercompany-journal-entries/get-intercompany-journal-entry"},{"title":"Update intercompany journal entry","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/intercompany-journal-entries/{record_number}/","href":"/developers/api/resources-v2/intercompany-journal-entries/update-intercompany-journal-entry"}]},{"group":"Journal Entries","pages":[{"title":"List JournalEntry records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/journal-entries/","href":"/developers/api/resources-v2/journal-entries/list-journalentry-records"},{"title":"Create JournalEntry record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/journal-entries/","href":"/developers/api/resources-v2/journal-entries/create-journalentry-record"},{"title":"Get JournalEntry record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/journal-entries/{record_number}/","href":"/developers/api/resources-v2/journal-entries/get-journalentry-record"},{"title":"Update JournalEntry record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/journal-entries/{record_number}/","href":"/developers/api/resources-v2/journal-entries/update-journalentry-record"},{"title":"Create JournalEntry record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/journal-entries/{record_number}/attachments/","href":"/developers/api/resources-v2/journal-entries/create-journalentry-record-attachments"},{"title":"List JournalEntry record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/journal-entries/{record_number}/lines/","href":"/developers/api/resources-v2/journal-entries/list-journalentry-record-lines"}]},{"group":"Recurring Journal Entries","pages":[{"title":"List RecurringJournalEntry records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/recurring/journal-entries/","href":"/developers/api/resources-v2/recurring-journal-entries/list-recurringjournalentry-records"},{"title":"Create RecurringJournalEntry record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/recurring/journal-entries/","href":"/developers/api/resources-v2/recurring-journal-entries/create-recurringjournalentry-record"},{"title":"Get RecurringJournalEntry record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/recurring/journal-entries/{record_number}/","href":"/developers/api/resources-v2/recurring-journal-entries/get-recurringjournalentry-record"},{"title":"Update RecurringJournalEntry record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/recurring/journal-entries/{record_number}/","href":"/developers/api/resources-v2/recurring-journal-entries/update-recurringjournalentry-record"},{"title":"Delete RecurringJournalEntry record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/recurring/journal-entries/{record_number}/","href":"/developers/api/resources-v2/recurring-journal-entries/delete-recurringjournalentry-record"}]},{"group":"Statistical Journals","pages":[{"title":"List StatisticalJournal records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/statistical-journals/","href":"/developers/api/resources-v2/statistical-journals/list-statisticaljournal-records"},{"title":"Create StatisticalJournal record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/statistical-journals/","href":"/developers/api/resources-v2/statistical-journals/create-statisticaljournal-record"},{"title":"Get StatisticalJournal record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/statistical-journals/{record_number}/","href":"/developers/api/resources-v2/statistical-journals/get-statisticaljournal-record"},{"title":"Update StatisticalJournal record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/statistical-journals/{record_number}/","href":"/developers/api/resources-v2/statistical-journals/update-statisticaljournal-record"},{"title":"Create StatisticalJournal record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/statistical-journals/{record_number}/attachments/","href":"/developers/api/resources-v2/statistical-journals/create-statisticaljournal-record-attachments"},{"title":"List StatisticalJournal record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/statistical-journals/{record_number}/lines/","href":"/developers/api/resources-v2/statistical-journals/list-statisticaljournal-record-lines"}]}]},{"group":"Money In","pages":[{"group":"Cash Sales","pages":[{"title":"List CashSale records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/cash-sales/","href":"/developers/api/resources-v2/cash-sales/list-cashsale-records"},{"title":"Create CashSale record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/cash-sales/","href":"/developers/api/resources-v2/cash-sales/create-cashsale-record"},{"title":"Get CashSale record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/cash-sales/{record_number}/","href":"/developers/api/resources-v2/cash-sales/get-cashsale-record"},{"title":"Update CashSale record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/cash-sales/{record_number}/","href":"/developers/api/resources-v2/cash-sales/update-cashsale-record"},{"title":"Create CashSale record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/cash-sales/{record_number}/attachments/","href":"/developers/api/resources-v2/cash-sales/create-cashsale-record-attachments"},{"title":"List CashSale record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/cash-sales/{record_number}/lines/","href":"/developers/api/resources-v2/cash-sales/list-cashsale-record-lines"}]},{"group":"Contract Templates","pages":[{"title":"List contract templates","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contract-templates/","href":"/developers/api/resources-v2/contract-templates/list-contract-templates"},{"title":"Get contract template","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contract-templates/{contract_template_id}/","href":"/developers/api/resources-v2/contract-templates/get-contract-template"}]},{"group":"Contracts","pages":[{"title":"List Contracts","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contracts/","href":"/developers/api/resources-v2/contracts/list-contracts"},{"title":"Create Contract","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/contracts/","href":"/developers/api/resources-v2/contracts/create-contract"},{"title":"Get Contract","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contracts/{record_id}/","href":"/developers/api/resources-v2/contracts/get-contract"},{"title":"Update Contract","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/contracts/{record_id}/","href":"/developers/api/resources-v2/contracts/update-contract"},{"title":"Update Contract (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/contracts/{record_id}/","href":"/developers/api/resources-v2/contracts/update-contract-partial"},{"title":"List milestones for a contract","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contracts/{contract_id}/milestones/","href":"/developers/api/resources-v2/contracts/list-milestones-for-a-contract"},{"title":"List usage records for a contract","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contracts/{contract_id}/usage/","href":"/developers/api/resources-v2/contracts/list-usage-records-for-a-contract"},{"title":"Upsert usage records for contract obligations","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/contracts/{contract_id}/usage/bulk-upsert/","href":"/developers/api/resources-v2/contracts/upsert-usage-records-for-contract-obligations"},{"title":"List Change Orders","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contracts/{contract_id}/change-orders/","href":"/developers/api/resources-v2/contracts/list-change-orders"},{"title":"Create Change Order","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/contracts/{contract_id}/change-orders/","href":"/developers/api/resources-v2/contracts/create-change-order"},{"title":"Get Change Order","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/contracts/{contract_id}/change-orders/{change_order_id}/","href":"/developers/api/resources-v2/contracts/get-change-order"},{"title":"Update Change Order","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/contracts/{contract_id}/change-orders/{change_order_id}/","href":"/developers/api/resources-v2/contracts/update-change-order"},{"title":"Archive Change Order","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/contracts/{contract_id}/change-orders/{change_order_id}/","href":"/developers/api/resources-v2/contracts/archive-change-order"}]},{"group":"Customer Credits","pages":[{"title":"List CustomerCredit records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-credits/","href":"/developers/api/resources-v2/customer-credits/list-customercredit-records"},{"title":"Create CustomerCredit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-credits/","href":"/developers/api/resources-v2/customer-credits/create-customercredit-record"},{"title":"Get CustomerCredit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-credits/{record_number}/","href":"/developers/api/resources-v2/customer-credits/get-customercredit-record"},{"title":"Update CustomerCredit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/customer-credits/{record_number}/","href":"/developers/api/resources-v2/customer-credits/update-customercredit-record"},{"title":"Update CustomerCredit record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/customer-credits/{record_number}/","href":"/developers/api/resources-v2/customer-credits/update-customercredit-record-partial"},{"title":"List CustomerCredit record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-credits/{record_number}/lines/","href":"/developers/api/resources-v2/customer-credits/list-customercredit-record-lines"}]},{"group":"Customer Deposits","pages":[{"title":"List CustomerDeposit records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-deposits/","href":"/developers/api/resources-v2/customer-deposits/list-customerdeposit-records"},{"title":"Create CustomerDeposit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-deposits/","href":"/developers/api/resources-v2/customer-deposits/create-customerdeposit-record"},{"title":"Get CustomerDeposit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-deposits/{record_number}/","href":"/developers/api/resources-v2/customer-deposits/get-customerdeposit-record"},{"title":"Update CustomerDeposit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/customer-deposits/{record_number}/","href":"/developers/api/resources-v2/customer-deposits/update-customerdeposit-record"},{"title":"Create CustomerDeposit record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-deposits/{record_number}/attachments/","href":"/developers/api/resources-v2/customer-deposits/create-customerdeposit-record-attachments"},{"title":"List CustomerDeposit record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-deposits/{record_number}/lines/","href":"/developers/api/resources-v2/customer-deposits/list-customerdeposit-record-lines"}]},{"group":"Customer Payments","pages":[{"title":"List CustomerPayment records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-payments/","href":"/developers/api/resources-v2/customer-payments/list-customerpayment-records"},{"title":"Create CustomerPayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-payments/","href":"/developers/api/resources-v2/customer-payments/create-customerpayment-record"},{"title":"Get CustomerPayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-payments/{record_number}/","href":"/developers/api/resources-v2/customer-payments/get-customerpayment-record"},{"title":"Update CustomerPayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/customer-payments/{record_number}/","href":"/developers/api/resources-v2/customer-payments/update-customerpayment-record"},{"title":"Update CustomerPayment record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/customer-payments/{record_number}/","href":"/developers/api/resources-v2/customer-payments/update-customerpayment-record-partial"},{"title":"List CustomerPayment record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-payments/{record_number}/lines/","href":"/developers/api/resources-v2/customer-payments/list-customerpayment-record-lines"}]},{"group":"Customer Prepayment Applications","pages":[{"title":"List CustomerPrepaymentApplication records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-prepayment-applications/","href":"/developers/api/resources-v2/customer-prepayment-applications/list-customerprepaymentapplication-records"},{"title":"Create CustomerPrepaymentApplication record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-prepayment-applications/","href":"/developers/api/resources-v2/customer-prepayment-applications/create-customerprepaymentapplication-record"},{"title":"Get CustomerPrepaymentApplication record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-prepayment-applications/{record_number}/","href":"/developers/api/resources-v2/customer-prepayment-applications/get-customerprepaymentapplication-record"},{"title":"Update CustomerPrepaymentApplication record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/customer-prepayment-applications/{record_number}/","href":"/developers/api/resources-v2/customer-prepayment-applications/update-customerprepaymentapplication-record"},{"title":"Update CustomerPrepaymentApplication record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/customer-prepayment-applications/{record_number}/","href":"/developers/api/resources-v2/customer-prepayment-applications/update-customerprepaymentapplication-record-partial"},{"title":"Create CustomerPrepaymentApplication record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-prepayment-applications/{record_number}/attachments/","href":"/developers/api/resources-v2/customer-prepayment-applications/create-customerprepaymentapplication-record-attachments"},{"title":"List CustomerPrepaymentApplication record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-prepayment-applications/{record_number}/lines/","href":"/developers/api/resources-v2/customer-prepayment-applications/list-customerprepaymentapplication-record-lines"}]},{"group":"Customer Prepayments","pages":[{"title":"List CustomerPrepayment records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-prepayments/","href":"/developers/api/resources-v2/customer-prepayments/list-customerprepayment-records"},{"title":"Create CustomerPrepayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-prepayments/","href":"/developers/api/resources-v2/customer-prepayments/create-customerprepayment-record"},{"title":"Get CustomerPrepayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-prepayments/{record_number}/","href":"/developers/api/resources-v2/customer-prepayments/get-customerprepayment-record"},{"title":"Update CustomerPrepayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/customer-prepayments/{record_number}/","href":"/developers/api/resources-v2/customer-prepayments/update-customerprepayment-record"},{"title":"Update CustomerPrepayment record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/customer-prepayments/{record_number}/","href":"/developers/api/resources-v2/customer-prepayments/update-customerprepayment-record-partial"},{"title":"Create CustomerPrepayment record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-prepayments/{record_number}/attachments/","href":"/developers/api/resources-v2/customer-prepayments/create-customerprepayment-record-attachments"}]},{"group":"Customer Refunds","pages":[{"title":"List CustomerRefund records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-refunds/","href":"/developers/api/resources-v2/customer-refunds/list-customerrefund-records"},{"title":"Create CustomerRefund record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-refunds/","href":"/developers/api/resources-v2/customer-refunds/create-customerrefund-record"},{"title":"Get CustomerRefund record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-refunds/{record_number}/","href":"/developers/api/resources-v2/customer-refunds/get-customerrefund-record"},{"title":"Update CustomerRefund record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/customer-refunds/{record_number}/","href":"/developers/api/resources-v2/customer-refunds/update-customerrefund-record"},{"title":"Create CustomerRefund record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customer-refunds/{record_number}/attachments/","href":"/developers/api/resources-v2/customer-refunds/create-customerrefund-record-attachments"},{"title":"List CustomerRefund record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customer-refunds/{record_number}/lines/","href":"/developers/api/resources-v2/customer-refunds/list-customerrefund-record-lines"}]},{"group":"Customers","pages":[{"title":"List customers","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customers/","href":"/developers/api/resources-v2/customers/list-customers"},{"title":"Create customer","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customers/","href":"/developers/api/resources-v2/customers/create-customer"},{"title":"Merge customers","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/customers/merge/","href":"/developers/api/resources-v2/customers/merge-customers"},{"title":"Get customer","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/customers/{customer_id}/","href":"/developers/api/resources-v2/customers/get-customer"},{"title":"Update customer","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/customers/{customer_id}/","href":"/developers/api/resources-v2/customers/update-customer"},{"title":"Update customer (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/customers/{customer_id}/","href":"/developers/api/resources-v2/customers/update-customer-partial"},{"title":"Delete customer","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/customers/{customer_id}/","href":"/developers/api/resources-v2/customers/delete-customer"}]},{"group":"Invoices","pages":[{"title":"List Invoice records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/invoices/","href":"/developers/api/resources-v2/invoices/list-invoice-records"},{"title":"Create Invoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/invoices/","href":"/developers/api/resources-v2/invoices/create-invoice-record"},{"title":"Get Invoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/invoices/{record_number}/","href":"/developers/api/resources-v2/invoices/get-invoice-record"},{"title":"Update Invoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/invoices/{record_number}/","href":"/developers/api/resources-v2/invoices/update-invoice-record"},{"title":"Update Invoice record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/invoices/{record_number}/","href":"/developers/api/resources-v2/invoices/update-invoice-record-partial"},{"title":"Create Invoice record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/invoices/{record_number}/attachments/","href":"/developers/api/resources-v2/invoices/create-invoice-record-attachments"},{"title":"Replace Invoice record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/invoices/{record_number}/attachments/replace/","href":"/developers/api/resources-v2/invoices/replace-invoice-record-attachments"},{"title":"List Invoice record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/invoices/{record_number}/lines/","href":"/developers/api/resources-v2/invoices/list-invoice-record-lines"},{"title":"Send Invoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/invoices/{record_number}/send/","href":"/developers/api/resources-v2/invoices/send-invoice-record"}]},{"group":"Quotes","pages":[{"title":"List Quote records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/quotes/","href":"/developers/api/resources-v2/quotes/list-quote-records"},{"title":"Create Quote record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/quotes/","href":"/developers/api/resources-v2/quotes/create-quote-record"},{"title":"Get Quote record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/quotes/{record_number}/","href":"/developers/api/resources-v2/quotes/get-quote-record"},{"title":"Update Quote record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/quotes/{record_number}/","href":"/developers/api/resources-v2/quotes/update-quote-record"},{"title":"Update Quote record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/quotes/{record_number}/","href":"/developers/api/resources-v2/quotes/update-quote-record-partial"},{"title":"Send Quote record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/quotes/{record_number}/send/","href":"/developers/api/resources-v2/quotes/send-quote-record"}]},{"group":"Recurring Invoices","pages":[{"title":"List RecurringInvoice records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/recurring/invoices/","href":"/developers/api/resources-v2/recurring-invoices/list-recurringinvoice-records"},{"title":"Create RecurringInvoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/recurring/invoices/","href":"/developers/api/resources-v2/recurring-invoices/create-recurringinvoice-record"},{"title":"Get RecurringInvoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/recurring/invoices/{record_number}/","href":"/developers/api/resources-v2/recurring-invoices/get-recurringinvoice-record"},{"title":"Update RecurringInvoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/recurring/invoices/{record_number}/","href":"/developers/api/resources-v2/recurring-invoices/update-recurringinvoice-record"},{"title":"Delete RecurringInvoice record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/recurring/invoices/{record_number}/","href":"/developers/api/resources-v2/recurring-invoices/delete-recurringinvoice-record"}]},{"group":"Sales Orders","pages":[{"title":"List SalesOrder records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/sales-orders/","href":"/developers/api/resources-v2/sales-orders/list-salesorder-records"},{"title":"Create SalesOrder record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/sales-orders/","href":"/developers/api/resources-v2/sales-orders/create-salesorder-record"},{"title":"Get SalesOrder record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/sales-orders/{record_number}/","href":"/developers/api/resources-v2/sales-orders/get-salesorder-record"},{"title":"Update SalesOrder record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/sales-orders/{record_number}/","href":"/developers/api/resources-v2/sales-orders/update-salesorder-record"},{"title":"Create SalesOrder record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/sales-orders/{record_number}/attachments/","href":"/developers/api/resources-v2/sales-orders/create-salesorder-record-attachments"},{"title":"List SalesOrder record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/sales-orders/{record_number}/lines/","href":"/developers/api/resources-v2/sales-orders/list-salesorder-record-lines"}]}]},{"group":"Money Out","pages":[{"group":"Bills","pages":[{"title":"List Bill records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bills/","href":"/developers/api/resources-v2/bills/list-bill-records"},{"title":"Create Bill record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bills/","href":"/developers/api/resources-v2/bills/create-bill-record"},{"title":"Get Bill record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bills/{record_number}/","href":"/developers/api/resources-v2/bills/get-bill-record"},{"title":"Update Bill record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/bills/{record_number}/","href":"/developers/api/resources-v2/bills/update-bill-record"},{"title":"Update Bill record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/bills/{record_number}/","href":"/developers/api/resources-v2/bills/update-bill-record-partial"},{"title":"Create Bill record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bills/{record_number}/attachments/","href":"/developers/api/resources-v2/bills/create-bill-record-attachments"},{"title":"List Bill record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bills/{record_number}/lines/","href":"/developers/api/resources-v2/bills/list-bill-record-lines"}]},{"group":"Direct Expenses","pages":[{"title":"List DirectExpense records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/direct-expenses/","href":"/developers/api/resources-v2/direct-expenses/list-directexpense-records"},{"title":"Create DirectExpense record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/direct-expenses/","href":"/developers/api/resources-v2/direct-expenses/create-directexpense-record"},{"title":"Get DirectExpense record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/direct-expenses/{record_number}/","href":"/developers/api/resources-v2/direct-expenses/get-directexpense-record"},{"title":"Update DirectExpense record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/direct-expenses/{record_number}/","href":"/developers/api/resources-v2/direct-expenses/update-directexpense-record"},{"title":"Create DirectExpense record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/direct-expenses/{record_number}/attachments/","href":"/developers/api/resources-v2/direct-expenses/create-directexpense-record-attachments"},{"title":"List DirectExpense record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/direct-expenses/{record_number}/lines/","href":"/developers/api/resources-v2/direct-expenses/list-directexpense-record-lines"}]},{"group":"Paper Check Templates","pages":[{"title":"List paper check templates","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/paper-check-templates/","href":"/developers/api/resources-v2/paper-check-templates/list-paper-check-templates"},{"title":"Get paper check template","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/paper-check-templates/{template_id}/","href":"/developers/api/resources-v2/paper-check-templates/get-paper-check-template"}]},{"group":"Paper Checks","pages":[{"title":"List paper checks","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/paper-checks/","href":"/developers/api/resources-v2/paper-checks/list-paper-checks"},{"title":"Print check immediately","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/paper-checks/print-now/","href":"/developers/api/resources-v2/paper-checks/print-check-immediately"},{"title":"Queue checks for later printing","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/paper-checks/print-later/","href":"/developers/api/resources-v2/paper-checks/queue-checks-for-later-printing"},{"title":"Batch print paper checks","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/paper-checks/print-batch/","href":"/developers/api/resources-v2/paper-checks/batch-print-paper-checks"},{"title":"Get paper check","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/paper-checks/{paper_check_id}/","href":"/developers/api/resources-v2/paper-checks/get-paper-check"},{"title":"Archive paper check","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/paper-checks/{paper_check_id}/","href":"/developers/api/resources-v2/paper-checks/archive-paper-check"}]},{"group":"Purchase Orders","pages":[{"title":"List PurchaseOrder records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/purchase-orders/","href":"/developers/api/resources-v2/purchase-orders/list-purchaseorder-records"},{"title":"Create PurchaseOrder record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/purchase-orders/","href":"/developers/api/resources-v2/purchase-orders/create-purchaseorder-record"},{"title":"Get PurchaseOrder record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/purchase-orders/{record_number}/","href":"/developers/api/resources-v2/purchase-orders/get-purchaseorder-record"},{"title":"Update PurchaseOrder record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/purchase-orders/{record_number}/","href":"/developers/api/resources-v2/purchase-orders/update-purchaseorder-record"},{"title":"Create PurchaseOrder record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/purchase-orders/{record_number}/attachments/","href":"/developers/api/resources-v2/purchase-orders/create-purchaseorder-record-attachments"},{"title":"List PurchaseOrder record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/purchase-orders/{record_number}/lines/","href":"/developers/api/resources-v2/purchase-orders/list-purchaseorder-record-lines"}]},{"group":"Recurring Bills","pages":[{"title":"List RecurringBill records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/recurring/bills/","href":"/developers/api/resources-v2/recurring-bills/list-recurringbill-records"},{"title":"Create RecurringBill record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/recurring/bills/","href":"/developers/api/resources-v2/recurring-bills/create-recurringbill-record"},{"title":"Get RecurringBill record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/recurring/bills/{record_number}/","href":"/developers/api/resources-v2/recurring-bills/get-recurringbill-record"},{"title":"Update RecurringBill record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/recurring/bills/{record_number}/","href":"/developers/api/resources-v2/recurring-bills/update-recurringbill-record"},{"title":"Delete RecurringBill record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/recurring/bills/{record_number}/","href":"/developers/api/resources-v2/recurring-bills/delete-recurringbill-record"}]},{"group":"Vendor Credits","pages":[{"title":"List VendorCredit records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-credits/","href":"/developers/api/resources-v2/vendor-credits/list-vendorcredit-records"},{"title":"Create VendorCredit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendor-credits/","href":"/developers/api/resources-v2/vendor-credits/create-vendorcredit-record"},{"title":"Get VendorCredit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-credits/{record_number}/","href":"/developers/api/resources-v2/vendor-credits/get-vendorcredit-record"},{"title":"Update VendorCredit record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/vendor-credits/{record_number}/","href":"/developers/api/resources-v2/vendor-credits/update-vendorcredit-record"},{"title":"List VendorCredit record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-credits/{record_number}/lines/","href":"/developers/api/resources-v2/vendor-credits/list-vendorcredit-record-lines"}]},{"group":"Vendor Payments","pages":[{"title":"List VendorPayment records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-payments/","href":"/developers/api/resources-v2/vendor-payments/list-vendorpayment-records"},{"title":"Create VendorPayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendor-payments/","href":"/developers/api/resources-v2/vendor-payments/create-vendorpayment-record"},{"title":"Get VendorPayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-payments/{record_number}/","href":"/developers/api/resources-v2/vendor-payments/get-vendorpayment-record"},{"title":"Update VendorPayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/vendor-payments/{record_number}/","href":"/developers/api/resources-v2/vendor-payments/update-vendorpayment-record"},{"title":"Update VendorPayment record (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/vendor-payments/{record_number}/","href":"/developers/api/resources-v2/vendor-payments/update-vendorpayment-record-partial"},{"title":"Create VendorPayment record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendor-payments/{record_number}/attachments/","href":"/developers/api/resources-v2/vendor-payments/create-vendorpayment-record-attachments"},{"title":"List VendorPayment record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-payments/{record_number}/lines/","href":"/developers/api/resources-v2/vendor-payments/list-vendorpayment-record-lines"}]},{"group":"Vendor Prepayment Applications","pages":[{"title":"List VendorPrepaymentApplication records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-prepayment-applications/","href":"/developers/api/resources-v2/vendor-prepayment-applications/list-vendorprepaymentapplication-records"},{"title":"Create VendorPrepaymentApplication record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendor-prepayment-applications/","href":"/developers/api/resources-v2/vendor-prepayment-applications/create-vendorprepaymentapplication-record"},{"title":"Get VendorPrepaymentApplication record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-prepayment-applications/{record_number}/","href":"/developers/api/resources-v2/vendor-prepayment-applications/get-vendorprepaymentapplication-record"},{"title":"Update VendorPrepaymentApplication record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/vendor-prepayment-applications/{record_number}/","href":"/developers/api/resources-v2/vendor-prepayment-applications/update-vendorprepaymentapplication-record"},{"title":"List VendorPrepaymentApplication record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-prepayment-applications/{record_number}/lines/","href":"/developers/api/resources-v2/vendor-prepayment-applications/list-vendorprepaymentapplication-record-lines"}]},{"group":"Vendor Prepayments","pages":[{"title":"List VendorPrepayment records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-prepayments/","href":"/developers/api/resources-v2/vendor-prepayments/list-vendorprepayment-records"},{"title":"Create VendorPrepayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendor-prepayments/","href":"/developers/api/resources-v2/vendor-prepayments/create-vendorprepayment-record"},{"title":"Get VendorPrepayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-prepayments/{record_number}/","href":"/developers/api/resources-v2/vendor-prepayments/get-vendorprepayment-record"},{"title":"Update VendorPrepayment record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/vendor-prepayments/{record_number}/","href":"/developers/api/resources-v2/vendor-prepayments/update-vendorprepayment-record"}]},{"group":"Vendor Refunds","pages":[{"title":"List VendorRefund records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-refunds/","href":"/developers/api/resources-v2/vendor-refunds/list-vendorrefund-records"},{"title":"Create VendorRefund record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendor-refunds/","href":"/developers/api/resources-v2/vendor-refunds/create-vendorrefund-record"},{"title":"Get VendorRefund record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-refunds/{record_number}/","href":"/developers/api/resources-v2/vendor-refunds/get-vendorrefund-record"},{"title":"Update VendorRefund record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/vendor-refunds/{record_number}/","href":"/developers/api/resources-v2/vendor-refunds/update-vendorrefund-record"},{"title":"Create VendorRefund record attachments","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendor-refunds/{record_number}/attachments/","href":"/developers/api/resources-v2/vendor-refunds/create-vendorrefund-record-attachments"},{"title":"List VendorRefund record lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendor-refunds/{record_number}/lines/","href":"/developers/api/resources-v2/vendor-refunds/list-vendorrefund-record-lines"}]},{"group":"Vendors","pages":[{"title":"List vendors","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendors/","href":"/developers/api/resources-v2/vendors/list-vendors"},{"title":"Create vendor","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendors/","href":"/developers/api/resources-v2/vendors/create-vendor"},{"title":"Merge vendors","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/vendors/merge/","href":"/developers/api/resources-v2/vendors/merge-vendors"},{"title":"Get vendor","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vendors/{vendor_id}/","href":"/developers/api/resources-v2/vendors/get-vendor"},{"title":"Update vendor","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/vendors/{vendor_id}/","href":"/developers/api/resources-v2/vendors/update-vendor"},{"title":"Update vendor (partial)","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/vendors/{vendor_id}/","href":"/developers/api/resources-v2/vendors/update-vendor-partial"},{"title":"Delete vendor","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/vendors/{vendor_id}/","href":"/developers/api/resources-v2/vendors/delete-vendor"}]}]},{"group":"Financial \u0026 Banking","pages":[{"group":"Bank Connections","pages":[{"title":"List customer API bank connections","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-connections/","href":"/developers/api/resources-v2/bank-connections/list-customer-api-bank-connections"},{"title":"Register a customer API bank connection","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bank-connections/","href":"/developers/api/resources-v2/bank-connections/register-a-customer-api-bank-connection"},{"title":"Push bank transactions for a customer_api account","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bank-connections/accounts/{financial_account_id}/transactions/","href":"/developers/api/resources-v2/bank-connections/push-bank-transactions-for-a-customer_api-account"},{"title":"List accounts for a customer API bank connection","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-connections/{connection_id}/accounts/","href":"/developers/api/resources-v2/bank-connections/list-accounts-for-a-customer-api-bank-connection"},{"title":"Register accounts under a customer API bank connection","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bank-connections/{connection_id}/accounts/","href":"/developers/api/resources-v2/bank-connections/register-accounts-under-a-customer-api-bank-connection"},{"title":"Get a customer API bank connection","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-connections/{connection_id}/","href":"/developers/api/resources-v2/bank-connections/get-a-customer-api-bank-connection"},{"title":"Unregister a customer API bank connection","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/bank-connections/{connection_id}/","href":"/developers/api/resources-v2/bank-connections/unregister-a-customer-api-bank-connection"}]},{"group":"Bank Match","pages":[{"title":"Run the bank-match pipeline now","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bank-match/populate/","href":"/developers/api/resources-v2/bank-match/run-the-bank-match-pipeline-now"},{"title":"List bank-match suggestions","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-match/suggestions/","href":"/developers/api/resources-v2/bank-match/list-bank-match-suggestions"},{"title":"Get one bank-match suggestion","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-match/suggestions/{suggestion_id}/","href":"/developers/api/resources-v2/bank-match/get-one-bank-match-suggestion"},{"title":"Check bank-match pipeline progress","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-match/status-counts/","href":"/developers/api/resources-v2/bank-match/check-bank-match-pipeline-progress"},{"title":"List bank-feed transactions","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-match/bank-transactions/","href":"/developers/api/resources-v2/bank-match/list-bank-feed-transactions"},{"title":"Get one bank-feed transaction","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-match/bank-transactions/{financial_transaction_id}/","href":"/developers/api/resources-v2/bank-match/get-one-bank-feed-transaction"},{"title":"Confirm a bank-match","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bank-match/matches/","href":"/developers/api/resources-v2/bank-match/confirm-a-bank-match"},{"title":"Undo a bank-match","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bank-match/unmatches/","href":"/developers/api/resources-v2/bank-match/undo-a-bank-match"}]},{"group":"Bank Transfers","pages":[{"title":"List BankTransfer records","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-transfers/","href":"/developers/api/resources-v2/bank-transfers/list-banktransfer-records"},{"title":"Create BankTransfer record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/bank-transfers/","href":"/developers/api/resources-v2/bank-transfers/create-banktransfer-record"},{"title":"Get BankTransfer record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/bank-transfers/{record_number}/","href":"/developers/api/resources-v2/bank-transfers/get-banktransfer-record"},{"title":"Update BankTransfer record","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/bank-transfers/{record_number}/","href":"/developers/api/resources-v2/bank-transfers/update-banktransfer-record"}]}]},{"group":"Assets","pages":[{"group":"Depreciation Books","pages":[{"title":"List depreciation books","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/depreciation-books/","href":"/developers/api/resources-v2/depreciation-books/list-depreciation-books"},{"title":"Get depreciation book by code","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/depreciation-books/{book_code}/","href":"/developers/api/resources-v2/depreciation-books/get-depreciation-book-by-code"}]},{"group":"Fixed Asset Classes","pages":[{"title":"List fixed asset classes","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/fixed-asset-classes/","href":"/developers/api/resources-v2/fixed-asset-classes/list-fixed-asset-classes"},{"title":"Get fixed asset class","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/fixed-asset-classes/{fixed_asset_class_id}/","href":"/developers/api/resources-v2/fixed-asset-classes/get-fixed-asset-class"}]},{"group":"Fixed Assets","pages":[{"title":"List fixed assets","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/fixed-assets/","href":"/developers/api/resources-v2/fixed-assets/list-fixed-assets"},{"title":"Create fixed asset","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/fixed-assets/","href":"/developers/api/resources-v2/fixed-assets/create-fixed-asset"},{"title":"Get fixed asset","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/fixed-assets/{fixed_asset_number}/","href":"/developers/api/resources-v2/fixed-assets/get-fixed-asset"},{"title":"Update fixed asset","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/fixed-assets/{fixed_asset_number}/","href":"/developers/api/resources-v2/fixed-assets/update-fixed-asset"},{"title":"Partial update fixed asset","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/fixed-assets/{fixed_asset_number}/","href":"/developers/api/resources-v2/fixed-assets/partial-update-fixed-asset"},{"title":"Archive fixed asset","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/fixed-assets/{fixed_asset_number}/","href":"/developers/api/resources-v2/fixed-assets/archive-fixed-asset"},{"title":"Get depreciation schedule by book","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/fixed-assets/{fixed_asset_number}/schedules/{depreciation_book_id}/schedule/","href":"/developers/api/resources-v2/fixed-assets/get-depreciation-schedule-by-book"}]}]},{"group":"Tax","pages":[{"group":"E-invoicing","pages":[{"title":"Get the e-invoicing status of the organization","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/","href":"/developers/api/resources-v2/e-invoicing/get-the-e-invoicing-status-of-the-organization"},{"title":"List the e-invoicing countries","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/countries/","href":"/developers/api/resources-v2/e-invoicing/list-the-e-invoicing-countries"},{"title":"List the e-invoicing settings of the companies","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/companies/","href":"/developers/api/resources-v2/e-invoicing/list-the-e-invoicing-settings-of-the-companies"},{"title":"Get the e-invoicing settings of a company","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/companies/{company_id}/","href":"/developers/api/resources-v2/e-invoicing/get-the-e-invoicing-settings-of-a-company"},{"title":"Get the e-invoicing registration of a company","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/companies/{company_id}/countries/{country}/registration/","href":"/developers/api/resources-v2/e-invoicing/get-the-e-invoicing-registration-of-a-company"},{"title":"List the e-invoice filing events","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/events/","href":"/developers/api/resources-v2/e-invoicing/list-the-e-invoice-filing-events"},{"title":"Check that a customer can receive an e-invoice","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/preflight/","href":"/developers/api/resources-v2/e-invoicing/check-that-a-customer-can-receive-an-e-invoice"},{"title":"Get the e-invoice filing of an invoice","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/invoices/{number}/","href":"/developers/api/resources-v2/e-invoicing/get-the-e-invoice-filing-of-an-invoice"},{"title":"Get the credit note filing of a customer credit","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/customer-credits/{number}/","href":"/developers/api/resources-v2/e-invoicing/get-the-credit-note-filing-of-a-customer-credit"},{"title":"Retry the e-invoice filing of an invoice","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/e-invoicing/invoices/{number}/retry/","href":"/developers/api/resources-v2/e-invoicing/retry-the-e-invoice-filing-of-an-invoice"},{"title":"Retry the credit note filing of a customer credit","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/e-invoicing/customer-credits/{number}/retry/","href":"/developers/api/resources-v2/e-invoicing/retry-the-credit-note-filing-of-a-customer-credit"},{"title":"Refresh the e-invoice filing of an invoice","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/e-invoicing/invoices/{number}/refresh/","href":"/developers/api/resources-v2/e-invoicing/refresh-the-e-invoice-filing-of-an-invoice"},{"title":"Refresh the credit note filing of a customer credit","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/e-invoicing/customer-credits/{number}/refresh/","href":"/developers/api/resources-v2/e-invoicing/refresh-the-credit-note-filing-of-a-customer-credit"},{"title":"Download a legal file of an invoice filing","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/invoices/{number}/files/{attachment_id}/","href":"/developers/api/resources-v2/e-invoicing/download-a-legal-file-of-an-invoice-filing"},{"title":"Download a legal file of a credit note filing","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/customer-credits/{number}/files/{attachment_id}/","href":"/developers/api/resources-v2/e-invoicing/download-a-legal-file-of-a-credit-note-filing"},{"title":"List the events of an invoice filing","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/invoices/{number}/events/","href":"/developers/api/resources-v2/e-invoicing/list-the-events-of-an-invoice-filing"},{"title":"List the events of a credit note filing","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/customer-credits/{number}/events/","href":"/developers/api/resources-v2/e-invoicing/list-the-events-of-a-credit-note-filing"},{"title":"Get the e-invoicing identifiers of a customer","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/customers/{customer_id}/identifiers/","href":"/developers/api/resources-v2/e-invoicing/get-the-e-invoicing-identifiers-of-a-customer"},{"title":"Set the e-invoicing identifiers of a customer","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/e-invoicing/customers/{customer_id}/identifiers/","href":"/developers/api/resources-v2/e-invoicing/set-the-e-invoicing-identifiers-of-a-customer"},{"title":"Get the e-invoicing identifiers of a vendor","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/e-invoicing/vendors/{vendor_id}/identifiers/","href":"/developers/api/resources-v2/e-invoicing/get-the-e-invoicing-identifiers-of-a-vendor"}]},{"group":"GST Tax Rates","pages":[{"title":"List GST tax rates","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/gst-tax-rates/","href":"/developers/api/resources-v2/gst-tax-rates/list-gst-tax-rates"},{"title":"Get GST tax rate by ID","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/gst-tax-rates/{gst_tax_rate_id}/","href":"/developers/api/resources-v2/gst-tax-rates/get-gst-tax-rate-by-id"}]},{"group":"Product Tax Codes","pages":[{"title":"List product tax codes","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/product-tax-codes/","href":"/developers/api/resources-v2/product-tax-codes/list-product-tax-codes"},{"title":"Create product tax code","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/product-tax-codes/","href":"/developers/api/resources-v2/product-tax-codes/create-product-tax-code"},{"title":"Get product tax code","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/product-tax-codes/{product_tax_code_id}/","href":"/developers/api/resources-v2/product-tax-codes/get-product-tax-code"},{"title":"Update product tax code","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/product-tax-codes/{product_tax_code_id}/","href":"/developers/api/resources-v2/product-tax-codes/update-product-tax-code"},{"title":"Delete product tax code","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/product-tax-codes/{product_tax_code_id}/","href":"/developers/api/resources-v2/product-tax-codes/delete-product-tax-code"}]},{"group":"Taxes","pages":[{"title":"Calculate tax","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/taxes/calculate/","href":"/developers/api/resources-v2/taxes/calculate-tax"}]},{"group":"VAT Rates","pages":[{"title":"List VAT rates","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vat-rates/","href":"/developers/api/resources-v2/vat-rates/list-vat-rates"},{"title":"Get VAT rate by ID","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/vat-rates/{vat_rate_id}/","href":"/developers/api/resources-v2/vat-rates/get-vat-rate-by-id"}]}]},{"group":"Financial Planning","pages":[{"group":"Budgets","pages":[{"title":"List budgets","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/budgets/","href":"/developers/api/resources-v2/budgets/list-budgets"},{"title":"Get budget","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/budgets/{budget_id}/","href":"/developers/api/resources-v2/budgets/get-budget"},{"title":"Get budget cells","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/budgets/{budget_id}/cells/","href":"/developers/api/resources-v2/budgets/get-budget-cells"},{"title":"Get budget actuals","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/budgets/{budget_id}/actuals/","href":"/developers/api/resources-v2/budgets/get-budget-actuals"},{"title":"Get budget accounts","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/budgets/{budget_id}/accounts/","href":"/developers/api/resources-v2/budgets/get-budget-accounts"}]}]},{"group":"Reporting","pages":[{"group":"Reporting","pages":[{"title":"List account balances","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/account_balances/","href":"/developers/api/resources-v2/reporting/list-account-balances"},{"title":"List general ledger lines","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/general_ledger/","href":"/developers/api/resources-v2/reporting/list-general-ledger-lines"},{"title":"List trial balance facts","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/trial_balance/","href":"/developers/api/resources-v2/reporting/list-trial-balance-facts"},{"title":"List chart of accounts facts","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/chart_of_accounts/","href":"/developers/api/resources-v2/reporting/list-chart-of-accounts-facts"},{"title":"List consolidated rates","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/consolidated_rates/","href":"/developers/api/resources-v2/reporting/list-consolidated-rates"}]}]},{"group":"Governance","pages":[{"group":"Approval Policies","pages":[{"title":"List workflows","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/","href":"/developers/api/resources-v2/approval-policies/list-workflows"},{"title":"List workflow approvers","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/approvers/","href":"/developers/api/resources-v2/approval-policies/list-workflow-approvers"},{"title":"Get workflow approver","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/approvers/{approver_id}/","href":"/developers/api/resources-v2/approval-policies/get-workflow-approver"},{"title":"List execution states","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/execution-states/","href":"/developers/api/resources-v2/approval-policies/list-execution-states"},{"title":"Get execution state by ID","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/execution-states/{state_id}/","href":"/developers/api/resources-v2/approval-policies/get-execution-state-by-id"},{"title":"Get approval actions for execution state","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/execution-states/{state_id}/actions/","href":"/developers/api/resources-v2/approval-policies/get-approval-actions-for-execution-state"},{"title":"List approval actions","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/actions/","href":"/developers/api/resources-v2/approval-policies/list-approval-actions"},{"title":"Get roles for workflow conditions","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/roles/","href":"/developers/api/resources-v2/approval-policies/get-roles-for-workflow-conditions"},{"title":"Get workflow by ID","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/{workflow_id}/","href":"/developers/api/resources-v2/approval-policies/get-workflow-by-id"},{"title":"Get workflow version history","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/workflows/{workflow_id}/versions/","href":"/developers/api/resources-v2/approval-policies/get-workflow-version-history"}]},{"group":"Inbox","pages":[{"title":"Get inbox summary","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/inbox/","href":"/developers/api/resources-v2/inbox/get-inbox-summary"},{"title":"List transactions inbox","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/inbox/transactions/","href":"/developers/api/resources-v2/inbox/list-transactions-inbox"},{"title":"List records inbox","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/inbox/records/","href":"/developers/api/resources-v2/inbox/list-records-inbox"},{"title":"Get transaction inbox details","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/inbox/transactions/{record_id}/","href":"/developers/api/resources-v2/inbox/get-transaction-inbox-details"},{"title":"Get record inbox details","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/inbox/records/{record_id}/","href":"/developers/api/resources-v2/inbox/get-record-inbox-details"}]}]},{"group":"Developers","pages":[{"group":"Data Exports","pages":[{"title":"List export jobs","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/export-jobs/","href":"/developers/api/resources-v2/data-exports/list-export-jobs"},{"title":"Request a data export","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/export-jobs/","href":"/developers/api/resources-v2/data-exports/request-a-data-export"},{"title":"Get export job","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/export-jobs/{job_id}/","href":"/developers/api/resources-v2/data-exports/get-export-job"}]},{"group":"Webhooks","pages":[{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/webhooks/","href":"/developers/api/resources-v2/webhooks/list-webhooks"},{"title":"Create webhook","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/webhooks/","href":"/developers/api/resources-v2/webhooks/create-webhook"},{"title":"List webhook topics","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/webhooks/topics/","href":"/developers/api/resources-v2/webhooks/list-webhook-topics"},{"title":"Get webhook","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/webhooks/{webhook_uuid}/","href":"/developers/api/resources-v2/webhooks/get-webhook"},{"title":"Update webhook","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json put /public/v2/webhooks/{webhook_uuid}/","href":"/developers/api/resources-v2/webhooks/update-webhook"},{"title":"Patch webhook","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json patch /public/v2/webhooks/{webhook_uuid}/","href":"/developers/api/resources-v2/webhooks/patch-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json delete /public/v2/webhooks/{webhook_uuid}/","href":"/developers/api/resources-v2/webhooks/delete-webhook"},{"title":"List webhook deliveries","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/webhooks/{webhook_uuid}/deliveries/","href":"/developers/api/resources-v2/webhooks/list-webhook-deliveries"}]}]},{"group":"Monitoring","pages":[{"group":"Health","pages":[{"title":"API Health Check","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/health/","href":"/developers/api/resources-v2/health/api-health-check"}]}]},{"group":"OAuth","pages":[{"title":"Start CLI OAuth flow","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/oauth/authorize/","href":"/developers/api/resources-v2/oauth/start-cli-oauth-flow"},{"title":"OAuth callback from WorkOS","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json get /public/v2/oauth/callback/","href":"/developers/api/resources-v2/oauth/oauth-callback-from-workos"},{"title":"Exchange authorization code for API key","deprecated":null,"version":null,"openapi":"/developers/openapi/resources-v2.json post /public/v2/oauth/token/","href":"/developers/api/resources-v2/oauth/exchange-authorization-code-for-api-key"}]}]},{"version":"V1","tag":"Legacy","pages":[{"title":"V1","href":"/developers/api/resources-v1/index"}]},{"version":"V3-alpha","tag":"Preview","pages":[{"title":"V3-alpha","href":"/developers/api/resources-v3-alpha/index"}]}]},{"tab":"Release Notes","icon":"clock-rotate-left","menu":[{"item":"Release notes","icon":"sparkles","description":"The biggest launches, plus every new feature and improvement.","pages":[{"title":"Release notes","href":"/developers/release-notes"}]},{"item":"Changelog","icon":"list","description":"Every release by date, including fixes.","pages":[{"title":"Changelog","href":"/developers/release-notes/changelog"}]}],"pages":[{"title":"Release Notes","href":"/developers/release-notes"}]}]},"basePath":"","title":"How to Automate Bill Status Checks in CI/CD - DualEntry Documentation","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":[],"chunks":[]}