Rightshold™ Sign up

Answers · agent payments

How do I keep segregation of duties when an AI agent pays bills?

Last updated

TL;DR: Give the agent one job in accounts payable, usually the clerk's: read invoices, draft bills, match them to purchase orders or receipts and queue them. Approving bills, releasing payments and changing a vendor's bank details stay with people who aren't the agent, and the person who controls the agent shouldn't be the only approver of what it drafts. Enforce this with the agent's own user or app connection and the accounting system's roles and approval workflows, not with instructions in its prompt. In QuickBooks Online, Bill Pay roles separate the bill clerk, bill approver and bill payer, and QuickBooks Online Advanced or Bill Pay Elite workflows can require approval of bills and of payment releases. Intuit's help says that once a transaction from a third-party app is sent for approval, a later change made in the app doesn't start a new approval, so check the amount, payee and bank account again right before payment goes out.

What should I check, step by step?

1. Write down each payables step (receive invoice, enter bill, approve bill, add or change vendor, release payment, reconcile) and who or what does it. The agent should hold at most one of approve, pay and change vendor bank details.

  1. Give the agent its own user or app connection with the narrowest role for its step. In QuickBooks Bill Pay roles, a bill clerk adds bills, marks them paid and can add and edit vendors but can't approve or pay; a bill approver can only approve; a bill payer pays bills and can edit vendor details.
  2. Turn on approvals: a bill approval workflow by amount, vendor or location (up to 7 approvers and up to 5 sequential layers) and a payment release approval workflow, where only admins can be approvers. Requests not reviewed in 30 days are denied automatically.
  3. Keep vendor bank-detail changes away from the agent where you can. Both the clerk and payer roles can edit vendors, so if the agent is a clerk, review every vendor change it makes and confirm new or changed bank details by calling the vendor on a number you already had.
  4. Recheck at release: the payee, bank account and amount being paid should equal what was approved. If anything changed after approval, approve again.
  5. If the agent works through a person's login rather than an app connection, use a non-admin login. Intuit's help describes multi-condition approvals as applying when a non-admin creates the transaction.
  6. Add limits that hold even if an approval is wrong: per-payment and daily caps, an allow-list of vendors, and your bank's payment limits or dual approval.
  7. Review monthly: bills the agent created, who approved each, vendor changes, and any payment that went out without an approval.

Why an agent needs segregation of duties too

Segregation of duties means no single actor can both create and approve a payment, or change where money goes and then pay it. An agent that can draft, approve and release payments is that single actor, and it can be misled: a fake invoice or a 'we've changed banks' email it reads is input it may act on.

What QuickBooks Online gives you, and the gaps

Bill Pay Elite comes with fixed bill roles; QuickBooks Online Advanced can also customize roles. Intuit says that downgrading from Bill Pay Elite without Advanced removes the roles and approval workflows and rejects payments pending approval.

An approval the agent can't fake

An approval the agent records for itself, or reads from a chat message, isn't separation. The approver should decide in a system where the agent can't act as them, and the record should name the exact payee, bank account reference, amount and currency.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Before releasing this bill payment, ask the owner to approve the exact vendor, bill, amount and bank account reference, and wait for the decision.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "summary": "Pay bill BILL-2219 from vendor V-1042: 1,840.00 USD to the bank account ending 6789.",
    "action": {
      "type": "pay_bill",
      "vendor_ref": "V-1042",
      "bill_ref": "BILL-2219",
      "amount_minor": 184000,
      "currency": "USD",
      "bank_account_last4": "6789"
    },
    "expires_in_minutes": 1440
  }
}

Rightshold doesn't connect to QuickBooks, Xero or your bank, and doesn't hold, send or block payments. It records approval requests and the owner's signed decisions. A decision shows that the owner account key decided, not which person used it, and Rightshold can't stop an agent that pays without asking. Enforce roles and approvals in your accounting system and bank. Not legal, tax or accounting advice.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'