Skip to content
Agents Finance
Use caseEvidence: Real case

Rivian's SAP purchase-order accrual agent: accounting SOPs as instructions, parked entries and a human approver

Summary: Rivian automated month-end accruals for custom tooling purchase orders in SAP S/4HANA with an agent on Amazon Bedrock AgentCore that reads the accounting SOPs, chases PO owners for delivery dates and leaves parked entries for a finance manager to approve. Real case stated by Rivian and AWS (over 15 days of manual work saved per cycle), published on AWS's own blog and not audited.

Published on 10 min read2,360 words

Diagram: open tooling purchase orders in SAP S/4HANA, accounting SOPs in a knowledge base, an agent that checks dates and materiality, and a finance manager who approves before posting.
Our own diagram of the flow described by AWS and Rivian.Image: Agents Finance · Own work

What they do and how

For custom manufacturing tooling (stamping dies, injection molds) that takes 12 to 24 months to build and is often invoiced 18 months or more after the purchase order, Rivian must accrue the cost gradually over the development period. An agent watches SAP for purchase orders that need attention, retrieves the relevant written accounting procedure (SOP) from a knowledge base, routes each PO by materiality, emails the PO owner when it needs to confirm delivery dates, calculates a straight-line, time-proportional accrual and creates a parked journal entry in SAP. A finance manager approves before anything is posted, and corrections are written back into the SOPs.

Reported result

Stated by Rivian and AWS: the system eliminates "over 15 days of manual work per cycle"; the proof of concept took five weeks before going to production; external auditors "praised the transparency" compared with the previous spreadsheet process; and the agent can absorb the growth in tooling POs after the R2 launch. Rivian's Yogesh Yadav says it "eliminated weeks of manual work each month". No PO counts, amounts, error rates or close-length figures are published, the LLM is not named, and the 15 days are effort saved, not a shorter close calendar. PYMNTS and Let's Data Science repeat the AWS figures without independent data.

Stated figures. An identified person or organization states that they have used it. The results are stated by the source; we have not audited them.

What has really been tested

On 18 October 2026 we read the AWS for SAP blog post in full, the PYMNTS and Let's Data Science articles that cite it, the description of SAP's video about the case, the public LinkedIn profile of a Rivian co-author, an SAP Community answer on parking journal entries through the standard API, and the AgentCore and Strands documentation. We have not seen Rivian's code, SOPs, prompts or SAP configuration, have not built this on an SAP system and cannot verify the time saved. The SOP excerpt, the routing thresholds and the numerical example in this article are ours.

How to replicate it

Pick one accrual family with clear rules (for example, open POs with long lead times and no invoice). Write the procedure as a short SOP the agent can retrieve, with materiality bands, the dates to use, the formula and when to ask a human. Give the agent read access to open POs and a single write tool that can only create parked, unposted entries; send owner confirmations by email and log every step with timestamps. Run it in parallel with the spreadsheet for at least one close, have a finance manager approve every entry, and turn every correction into a line in the SOP.

In two sentences

Rivian, the US electric vehicle maker, built an agent on Amazon Bedrock AgentCore that prepares month-end accruals for custom tooling purchase orders in SAP S/4HANA: it reads the accounting procedure as plain text, asks PO owners for delivery dates by email, calculates the accrual and leaves a parked entry that a finance manager must approve. Rivian and AWS say it removes more than 15 days of manual work per close cycle, but the account comes from AWS’s own blog, names no model and publishes no volumes, so treat it as a well-documented pattern with self-reported results.

Who does it and why it is interesting

Rivian designs and builds the R1T pickup, the R1S and R2 SUVs and an electric delivery van, with manufacturing in Normal, Illinois, and around 15,000 employees according to the post. Its finance stack runs on SAP S/4HANA hosted in SAP HANA Enterprise Cloud. The case was published on 13 August 2026 on the AWS for SAP blog, written by three AWS architects and co-authored by two Rivian employees: Arunkumar Malli, whose public LinkedIn profile describes him as Senior Manager of ERP Platform Engineering at Rivian, and Sandeep Kodre. SAP has also published a video about the case, and PYMNTS covered it on 11 September 2026.

The commercial interest is obvious: AWS sells Bedrock AgentCore, and the post reads in places like a reference story. We use it anyway for three reasons:

  • It is a specific accounting problem, not “AI for finance”. Custom tooling such as stamping dies and injection molds takes 12 to 24 months to develop, and invoices often arrive 18 months or more after the purchase order. Under GAAP, the post explains, the cost has to be recognised gradually over the development period, so someone must track hundreds of open POs, confirm their schedules and book proportional accruals every month.
  • The design choices are named. SOPs stored in a knowledge base instead of hard-coded rules, materiality-based routing, an MCP server between the agent and SAP, parked entries and a human approver.
  • It is SAP and not Claude-centred. After several cases built on chat assistants, this is an enterprise build on an ERP that many large European groups also run, with a model-agnostic agent framework.

Tools and architecture

The blog lists the components; the way they connect below is our reading of the text, not a diagram Rivian published.

  1. SAP S/4HANA holds the purchase orders. The agent detects exceptions “via SAP OData events”, and AWS Lambda functions poll SAP on a schedule.
  2. A Strands agent on Amazon Bedrock AgentCore, “powered by a leading LLM model” that the post does not name. Strands is AWS’s open-source agent SDK; AgentCore is the managed runtime, identity and tooling layer.
  3. Amazon Bedrock Knowledge Bases store two kinds of documents: the accrual SOPs and SAP API documentation. The agent retrieves the procedure that applies to each PO’s characteristics.
  4. An MCP server with custom tools: SAP REST API connectors, email through Amazon SES and case management. The post stresses that any of these (email provider, database, SAP connector) can be swapped without touching the agent’s logic.
  5. Amazon DynamoDB keeps the state of each case and a timestamped audit trail that the authors tie to SOX requirements.
  6. Security plumbing: AgentCore Identity for the MCP servers, IAM and Cognito for role-based access, Secrets Manager for credentials, CloudWatch for monitoring and AWS CDK for infrastructure as code.
Architecture diagram: SAP S/4HANA and scheduled Lambda polling feed a Strands agent on Bedrock AgentCore, which reads SOPs from a knowledge base, logs to DynamoDB and acts through an MCP server that emails the PO owner and creates a parked entry in SAP for a finance manager to approve.
Own diagram based on the AWS for SAP blog post. Component names are from the source; the arrows are our interpretation.

What the agent does on each run, in the order the blog gives: detect exceptions, assemble context from DynamoDB and the knowledge base, decide the route, call tools through MCP to read SAP and send emails, calculate time-proportional accruals with a straight-line method, create parked journal entries for review and manage the approval workflow.

Two details are easy to miss. First, the post says the agent “adapts its approach” to each PO rather than following a fixed path: that is the reason for using an LLM at all, and also the main thing to control. Second, the entries are parked, not posted. In SAP terms a parked document is saved and visible but has no effect on the ledger until someone completes it, which is exactly the place to put a human approval step.

Step by step to replicate the pattern

Rivian’s write-up gives principles, not a runbook. The steps below combine those principles with what any SAP finance team would need; where we add something, we say so.

  1. Choose one accrual family with written rules. Rivian started with PO accruals for custom tooling. Good candidates have many open items, long lead times, a formula you can explain and a source of truth for dates.
  2. Write the SOP as the agent’s instruction manual. One short document per procedure: scope, data fields, materiality bands, which dates to use, the formula, the account assignment, when to email whom and when to stop. Finance owns it; changing a rule means editing the SOP, not asking for a code change.
  3. Load the SOPs and your SAP API notes into a knowledge base so the agent retrieves the right procedure for each PO instead of carrying every rule in one giant prompt.
  4. Expose SAP through narrow tools. Read open POs, goods receipts and invoices; write only one thing: a parked entry. Check with your SAP team which interface can do that in your edition. An accepted answer on SAP Community says the standard Journal Entry API in S/4HANA Cloud Public Edition posts directly and cannot park; Rivian’s custom MCP connectors run against a privately hosted S/4HANA, and the blog does not say which API they call.
  5. Route by materiality. Small, clean POs can be calculated from the dates on the PO; large or stale ones should trigger a confirmation email to the PO owner and closer review. The bands are yours to set; Rivian does not publish them.
  6. Automate the owner follow-up. The agent emails the PO owner, parses the reply and records it. Keep the original email and the parsed dates in the audit trail.
  7. Log every step with timestamps: which SOP version was used, what data was read, what the owner said, the calculation and who approved.
  8. Run in parallel for at least one close. Compare the agent’s parked entries with your spreadsheet line by line before switching.
  9. Keep the approval human and feed corrections back. Rivian’s finance managers approve every entry before posting; when they correct the agent, the fix goes into the SOP.

An SOP excerpt the agent can retrieve (ours, not Rivian’s)

Rivian has not published its SOPs or prompts. This skeleton only turns the principles in the blog into a format you can adapt; amounts, bands and accounts are placeholders.

SOP: Accrual for custom tooling purchase orders — version [N], owner [NAME]

Scope
- Open POs with material group [TOOLING GROUPS], no final invoice,
  development start date filled in.

Data to read (read only)
- PO header and items: amount, currency, vendor, PO owner, start date,
  expected completion date.
- Invoices and goods receipts posted against the PO to date.
- Last month's approved accrual for the PO (from the audit log).

Materiality bands (set your own)
- Below [AMOUNT A]: use PO dates as they are; no email.
- [AMOUNT A] to [AMOUNT B]: email the PO owner if the completion date is in
  the past or more than [N] days old since last confirmation.
- Above [AMOUNT B]: always confirm with the PO owner; flag for senior review.

Calculation
- Months elapsed = whole months from start date to period end (cap at total).
- Cumulative accrual = PO amount × months elapsed / total development months,
  minus amounts already invoiced.
- Entry for the period = cumulative accrual − cumulative accrual already booked.
  The result can be negative (a release) if dates have moved.

Output
- One parked entry per PO in company code [CC], document type [TYPE],
  accounts [DEBIT ACCOUNT] / [CREDIT ACCOUNT], reference = PO number,
  text = "Accrual [PERIOD] SOP v[N]".

Stop and ask a person when
- The owner does not reply by [DATE], or the reply contradicts the PO.
- Invoiced amounts exceed the PO amount, or the currency differs.
- Any field needed for the calculation is missing.

Never
- Never post or complete a parked entry. Never change the PO.

A concrete example (hypothetical numbers)

The source does not give a single PO, amount or entry, so the figures below are invented to show how the pattern behaves.

A stamping die is ordered for $1,200,000, with development planned from January 2026 to June 2027: 18 months, no invoice yet. At the September 2026 close, nine months have elapsed. Following the SOP, the cumulative accrual is 9/18 × 1,200,000 = 600,000.00; 533,333.33 was booked through August, so the agent parks an entry for 66,666.67.

Now suppose the PO is above the confirmation band and the owner replies that the tool will only be finished in September 2027, making the development period 21 months. The cumulative accrual becomes 9/21 × 1,200,000 = 514,285.71, below what has already been booked, so the September entry is a release of 19,047.62. That is the case for asking a person: a spreadsheet using stale PO dates would have over-accrued, and the owner’s email is the evidence an auditor will want to see next to the entry.

Two bars comparing the 18-month plan (9/18 elapsed, September entry +66,666.67) with the 21-month revised plan (9/21 elapsed, September entry −19,047.62).
Hypothetical example with invented figures. Own diagram, not Rivian data.

Stated results

Everything in this section is stated by Rivian or AWS; none of it is independently measured.

  • “Over 15 days of manual work per cycle” eliminated (blog introduction). Yogesh Yadav, Senior Director of Global Finance Systems, adds that they have “eliminated weeks of manual work each month”.
  • Five weeks for the proof of concept, after which the solution was fast-tracked to production.
  • Audit: “External auditors have praised the transparency” of the agent-driven process compared with the previous spreadsheet calculations.
  • Scale: the system is said to absorb the “significant increase” in tooling POs after the R2 launch.
  • What is missing: the number of POs, their value (“a large volume”, “significant annual value”), accuracy or error rates, the model used, running costs and any measured change in close length.

PYMNTS headlined the story as cutting “15 Days From Every Close”. Read carefully, the source talks about manual work removed, which is not the same as closing the books 15 calendar days sooner.

Limitations and risks

  • Single, interested source. All details come from a vendor blog; PYMNTS, Let’s Data Science and SAP’s video page repeat it. We found no independent technical write-up by Rivian.
  • No model, no prompts, no SOPs. You cannot reproduce Rivian’s exact behaviour; you can reproduce the design.
  • Judgement is still judgement. Whether a tooling cost should be expensed or capitalised, and over what period, is an accounting policy decision that the SOP must fix in advance. Rivian’s post talks about accruing “expenses” under GAAP; your treatment may differ, and under Spanish or IFRS rules the accounts and policy will too.
  • An agent that “adapts” needs limits. The flexibility that justifies an LLM is also what an auditor will question. Narrow tools, a parked-only write path and a complete log are what make it defensible.
  • Email as a data source. Owner replies can be vague, late or wrong. The SOP needs a default when nobody answers, and someone must own unresolved cases.
  • SAP edition matters. The ability to create parked entries through an API depends on your edition and interfaces; check before you design around it.

Common mistakes

  • Putting the rules in the prompt instead of in a versioned SOP. You lose the ability for finance to change them and for auditors to see which version applied.
  • Giving the agent a posting user. If it can post, sooner or later it will. Parked entries and a separate approver are the control.
  • Skipping materiality. Emailing every PO owner every month trains people to ignore the emails; never emailing them leaves stale dates in the accrual.
  • Forgetting that entries can be negative. When dates move, the right answer is often a release, not another accrual.
  • Measuring hours instead of quality. Track rejected entries, owner response rates and post-close adjustments, not just time saved.

Conclusions

Rivian’s case is useful less for its headline figure, which nobody outside Rivian and AWS can check, than for its shape: accounting procedures written down as documents the agent retrieves, a thin and swappable tool layer to SAP, a write path that can only create parked entries, and a finance manager who approves every one. That pattern is not tied to AWS or to one model, and it fits any accrual family with clear rules and messy dates. If you try it, start with one family, run it beside the spreadsheet for a close, and let the auditor see the SOP version and the owner’s email next to each entry.

Sources

We wrote this entry in our own words from the sources above and checked that the links worked on October 18, 2026. Is anything incorrect? Tell us.

Related entries

  • Diagram: NetSuite data feeds a Claude skill with sources, format, tie-outs and stop rules, which produces a workpaper tied to the ledger at $0.00 for the controller to approve.
    Use caseEvidence: Real case

    A NetSuite controller built about 50 Claude skills for the month-end close, and the hard part was teaching them what wrong looks like

    Steve Kelly (Books & Bots Advisory)Individual · Mid-size company (unnamed; the article mentions sales orders, shipments, customer deposits and channel sales)

    Steve Kelly, a financial controller with 21 years in accounting, says he runs much of a NetSuite month-end close with about 50 Claude skills (reconciliations, accruals, reporting, a 13-week cash forecast) and saves 20 to 30 hours a month. First-hand, self-reported account from someone who now sells close services, contrasted with a CFO's NetSuite setup guide and Oracle's documentation.

    Recommended by the editors

    • Oracle NetSuite (standard reports, saved searches and SuiteQL queries as data sources)
    • Claude and Claude Cowork
    • About 50 Claude skills: written procedures for each close process
    • +2
    • Oracle NetSuite
    • Accounting
    • Treasury
    • Reporting

  • Four-step diagram: a Slack command reaches the AI agent, which reads the ERP general ledger and prepares a draft workpaper and journal entry that a human preparer and reviewer post.
    Use caseEvidence: Real case

    A CFO explains how their team reconciles prepaid expenses with an AI agent: from 2 hours to 5 minutes

    Author of OnlyCFO (a company CFO, no name visible on the page)Individual

    The author of the OnlyCFO newsletter, who runs an accounting team, describes the agent they built to reconcile prepaid expenses against their ERP’s general ledger. According to them, it went from about 2 hours of human work to about 5 minutes, and the same pattern took a day off the monthly close.

    Recommended by the editors

    • AI agent with a “skill” (a SKILL.md of about 200 lines) and a YAML configuration file
    • MCP connector to the ERP (the article does not say which one)
    • MCP connector to the shared drive (Google Drive, Box or SharePoint)
    • +2
    • Accounting

  • Useful promptEvidence: Untested proposal

    Prompt for an AI assistant to prepare a draft accounting reconciliation without posting anything

    Instructions ready to adapt for an AI assistant that reconciles an account against the trial balance: it uses only the files provided, posts no entries, checks for duplicates, separates what ties out from what is doubtful and leaves a list of questions. It is our own wording based on practices published by accountants, not tested with real data.

    Recommended by the editors

    • Any AI assistant with file access (for example, Claude, ChatGPT or Codex)
    • Exports from your ERP or bank (CSV or Excel)
    • Accounting
    • Treasury

Keep exploring