Best API Platforms for E-Commerce AI Agents in 2026
An order lookup can be repeated. A second create can ship the same goods twice. This article compares store APIs, catalogs, workflow engines, and Swytchcode by that failure.
Key takeaways
- -In this article we explore the best API platforms for an e-commerce AI agent, using double fulfillment as the failure that qualifies them.
- -To understand how an e-commerce AI agent ships an order twice: the store accepted the first create, the answer was lost, and the retry used a new reference, so the warehouse received two orders.
- -A safe Stripe retry does not make "create shipment" safe. Stripe API v1 remembers an Idempotency-Key on a POST. The shipment is a different call and needs its own key, or a lookup instead of a second create.
- -Write idempotency was not described in Arcade's, Composio's, or Nango's public docs in October 2026.
- -Swytchcode retries a POST or PATCH only when an idempotency key is set. If the store method does not store that key, look the order up.
You want an assistant that can tell a customer where an order is, and sometimes update that order. Looking up order 1842 is safe to do twice. Creating the shipment for order 1842 is not.
This article is the shortlist for that choice. It walks through double fulfillment in order, then each kind of platform, with prices from October 2026. It does not document a store's HTTP API.
What double fulfillment is
An order change is any call that creates or edits the order, the payment, or the shipment. A lookup is not an order change. "Where is order 1842?" can be asked twice. "Create a shipment for order 1842" should not create two shipments.
Here is the usual sequence:
- The assistant sends "create shipment for order 1842."
- The store accepts it and the warehouse can already see the label.
- The answer never gets back. A timeout, a dropped connection, or an empty tool result.
- The assistant treats the silence as "nothing happened" and sends create again, with a new id.
- The warehouse prints a second label.
Step 4 is the second box. A failed response is not proof of zero shipments.
The label that makes step 4 safe is an idempotency key: a value that means "this is the same shipment as last time." Build it from something you can rebuild, such as the order id plus the word "shipment." A random value created when the request is built is a new shipment on every try. The friendly explanation is Idempotency Explained.
The payment and the shipment are not one call
Teams fix the card and assume the parcel is safe. They are different writes.
Stripe's API v1 accepts an Idempotency-Key on POST. After the endpoint starts, Stripe saves the first result and returns it when the same key is sent again. Keys are removed after they are at least 24 hours old. A new key is a new object. That stops a second card capture. It does not stop your store from creating a second fulfillment.
So an e-commerce agent has two questions:
- If I retry the payment, is it the same charge?
- If I retry the shipment, the refund, or the order edit, is it the same change?
A platform that answers only the first one has done the payment job and left the warehouse job open. The card side is Best Platforms for AI Agents That Handle Payments. Connecting Stripe as steps is How to Connect Stripe to Claude Code.
If the store method does not store a key, the safe habit is one attempt, then a read. "Did the shipment for order 1842 get created?" does not print a second label. A timeout means "go look," not "create it again."
How to evaluate an e-commerce API platform
| Criterion | What to verify |
|---|---|
| Lookup versus create | Order status and tracking can be retried. Create shipment, capture, refund, and cancel cannot, unless the same key is stored. |
| Where the key comes from | The order id, not a random value inside the tool. |
| What the store actually stores | Read that method. Do not copy the rule from the charge endpoint onto the fulfillment endpoint. |
| What a workflow replay does | A crash resume can run "ship" again. The ship call still needs the same key. |
| What the assistant is allowed to do | Lookup first. Refund and cancel stay off until a person approves them. |
| Test store versus live store | They look similar in a settings screen. They do not look similar when two boxes leave the building. |
How the platforms compare
| Platform | Closest job | October 2026 starting price | The fulfillment question |
|---|---|---|---|
| The store or payment API | System of record | The vendor's own plan | It can ignore a repeat only if that method stored your key. |
| Composio | Reach the store, Stripe, and the helpdesk from one catalog | Free, 100,000 tool calls a month. Pro $29 a month. | Write idempotency was not described in the public docs in October 2026. |
| Arcade | The assistant acts as the shopper or the support agent, with that person's grant | Free, 2,000 tool calls and 2,000 auth events | Same docs check. A permission is not a shipment key. |
| Zapier MCP | One operator using apps already on their Zapier account | Free, 100 tasks a month. A successful call uses 2 tasks. | A retry spends tasks and can still create a second order. |
| Temporal, or another durable engine | "Charge, then ship" must resume after a crash | Open source to run yourself, or Temporal Cloud | The replay can run ship again. You still attach the same key. |
| A unified commerce API | One shape for many stores | Often priced per linked store. Merge's unified API was $65 per linked account. | The common model keeps common fields and drops store-only fields. |
| Swytchcode | Run the one action you allowed | Free, 100 live commands. Pro $29 a month for 10,000. Business $149 a month for 1,000,000. | POST and PATCH retry only when a key is already set. |
1. The store and the payment API
Best for: The system that actually holds the order, the inventory, and the money.
Your store is not optional. Whatever agent platform you pick, the create still lands in Shopify, a custom order service, Stripe, or a warehouse API. That system decides whether a repeated create is one shipment. Some methods store an idempotency key. Some do not. Some store it only on the payment resource and not on fulfillment.
Do not assume. In a test store, send the same create twice with the same key and count the labels. Then send it twice with two keys and count them again. The second test is what an assistant does when it invents a new id after a timeout.
Bank transfers and payouts are a different rail from card checkout. They are covered in Using Bank APIs with Treasury AI Agents.
2. Composio
Best for: A support agent that needs the store, Stripe, and the helpdesk in one hosted catalog, and you want that catalog this week.
Composio's free tier in October 2026 was 100,000 tool calls a month when you use your own OAuth app, plus unlimited connected accounts and 3 seats. Managed apps can be a lower allowance. Pro is $29 a month. Under 100,000 tool calls, that free tier is the largest catalog allowance in this category.
The catalog gets the assistant to the store. It does not, by itself, answer the second shipment. Write idempotency was not described in Composio's public docs in October 2026. Connect the catalog if you need the apps. Test the repeated fulfillment in the store's test mode before you let the assistant create labels.
3. Arcade
Best for: A shopper-facing or agent-facing flow where each person authorizes their own account.
Arcade starts OAuth when a permission is missing. Free is 2,000 tool calls and 2,000 auth events a month. Team is $25 a month plus $0.10 per auth event and $0.01 per tool call. Idempotency on writes was not described in the public docs in October 2026. A shopper who approved "manage orders" has not approved a second shipment. Those are different controls.
4. Zapier MCP
Best for: A store owner automating their own Zapier-connected apps, not a checkout for every customer.
Each successful tool call uses 2 Zapier tasks. Free is 100 tasks a month. A loop that retries creates will burn the plan and can fulfill twice. Zapier MCP fits one person's accounts. It does not embed a connect screen for every buyer of your product.
5. A workflow engine
Best for: A sequence that must continue after a crash: charge, then write the order, then ask the warehouse to ship.
Temporal is the usual open-source choice. The workflow remembers where it was. After a restart it continues. The step that calls the store is still your code. If that step sends "create shipment" again without the same idempotency key, the warehouse gets a second label. The engine does not add that memory to the store.
Run Temporal yourself and you also run its database and upgrades. That is worth it for long sequences. It is a lot of machinery for "where is my order?" The comparison is Best Durable Execution Platforms for AI Agents.
6. A unified commerce API
Best for: The same order fields across many stores, when you can accept the fields the common model defined.
A unified API makes many carts look like one shape. It keeps the common fields. Custom objects and store-only fields disappear. Merge's unified product, in October 2026, was $65 per linked account. That meter follows how many stores you connect, not how many shipments the agent creates.
If the field that prevents a second label exists only on one store, call that store's own method. The trade is explained in Best Unified API Providers for B2B SaaS.
7. Swytchcode
Best for: The order write you cannot undo twice: create shipment, capture, refund, or cancel.
Swytchcode is a production runtime. The model decides the call. Swytchcode runs it. It is not the store.
On every call it does eight checks:
- Allow list. Only an action you added with
swy add methodcan run. Downloading a store integration does not enable fulfill, refund, and cancel. - Schema check. Inputs are checked before the request leaves.
- Policy.
policies.jsoncan allow, deny, or hold, and can read the amount or the order id. The hold is on Business and Enterprise. Free and Pro can allow or deny. - Credentials. The store secret is added at execution.
swy auth connectstores it outside the project and outside the chat. There is no project env file. - Execution. The request goes from your machine straight to the store. No proxy hop.
- Retry. Backoff on rate limits. A POST or PATCH is retried only when an idempotency key is already set. If the store does not store keys, do not retry the create. Look the order up.
- Response check. "200 OK, body says failed" is not success.
- Audit. Local log. Free 7 days, Pro 30 days, Business 90 days, as published in October 2026.
Mode is sandbox or production, set once with swy init, stored in .swytchcode/tooling.json. A test store and a live store are not a switch the assistant can flip in the chat.
On Business and Enterprise, a refund or a cancel can wait in Slack or Telegram. No answer within 48 hours means the call is not sent.
Free is 100 live commands a month, for seeing this path work, not for a holiday sale. Pro is $29 a month or $290 a year for 10,000. Business is $149 a month or $1,490 a year for 1,000,000, with approval and 5 seats. Numbers are on the pricing page.
What to turn on first
Start with order lookup and shipment lookup. Those answer the questions support asks all day, and a retry does not ship a second parcel.
Add "create fulfillment" or "capture payment" only after you have watched a second try in a test store produce one order. Leave "refund" and "cancel all" off until a person approves them. How to write the amount rule is in Policy-as-Code for AI Agents.
Which platform to pick
| If the requirement is | Start with | Leave it when |
|---|---|---|
| "Where is order 1842?" | The store's read API, through any of the tools below | You turned on create because lookup was working |
| Many apps for a support agent, under 100,000 calls | Composio | You have not tested a repeated shipment |
| Charge, then ship, must survive a crash | Temporal, plus the same shipment key | You thought the workflow engine stored the key for you |
| One shape across many stores | A unified API | The label id exists only on one store |
| The create must not run twice by accident | Swytchcode, with a stable key, or a lookup after timeout | The store method does not store keys and you enabled retry anyway |
How we checked these facts
Stripe's key behavior is from Stripe's idempotent-requests docs. Catalog prices and the October 2026 "not described" line are from each vendor's public pricing or docs. Merge's $65 figure is the unified linked-account price recorded in October 2026. Swytchcode prices are from the pricing page the same month. This article does not list store endpoints.
Follow these steps in a test store
Do not point the first try at live orders.
1. Follow this step to install the CLI
npm install -g swytchcodeOn Windows PowerShell:
irm https://cli.swytchcode.com/install.ps1 | iexOn macOS or Linux:
curl -fsSL https://cli.swytchcode.com/install.sh | shThen swy --version. Continue in the CLI quickstart.
2. Follow this step to sign in
swy loginThe authentication docs cover the Swytchcode account and the store login. They are different secrets.
3. Follow this step to start in test mode
swy init --editor=claude --mode=sandboxChange the editor to cursor or codex if needed. See Set up a project.
4. Follow this step to find a lookup, not a create
swy get stripe
swy discover "look up an order" --project stripeIf your store is a different directory name, use that name in both commands. Use the action name the search prints. Add that lookup. Leave create fulfillment off until one order comes back and you know how a repeat is stored. See the idempotency guide.
FAQ
What should an e-commerce AI agent be allowed to do first?
Look up orders and shipments. Add a create or a capture only after a repeated call in a test store produces one order, not two.
Does a safe Stripe retry protect fulfillment?
No. Stripe remembers an idempotency key on a v1 POST for the charge. The shipment is a different call. Each one needs its own answer to "what happens if we send this twice?"
What should the idempotency key be?
Something you can rebuild for that order event, such as the order id plus the action name. Not a random value generated when the request is sent. Do not put the customer's email in the key.
The call timed out. Should the assistant create the order again?
Not until a lookup shows the first one is absent. A timeout is the case where the first create may already have succeeded.
What is the best API platform for an e-commerce AI agent?
For lookups, a catalog is enough. For creates, pick the platform that will not send a second POST with a new key. Test it in a store that is not taking live orders.
Read next
- Explore this article on the card charge: How to Connect Stripe to Claude Code.
- Explore this article on which payment platforms reuse a key: Best Platforms for AI Agents That Handle Payments.
- Explore this article if a workflow will retry "charge then ship": Best Durable Execution Platforms for AI Agents.
Look up one test order before you create anything
Set up https://www.swytchcode.com/skills.md and build an order-lookup agent. Use sandbox mode. Find a read action with swy discover. When I give you an order id, look it up and tell me the status. If a call times out, look it up again. Do not create a shipment, capture a payment, or refund.If a test retry created two orders, stop and tell us which system and what the second call returned. Discord is the quick conversation. The contact form is better if the order data is customer data.
More content
How to Log Every API Call an AI Agent Makes
Log the call where it is sent, not where it is described. Record the operation, the actor, the idempotency key, the policy decision and the outcome. Never record the credential. If the agent writes its own log, the calls that were blocked quietly disappear.
How to Connect GitHub to an AI Agent (2026)
Most of what you want an agent to do on GitHub needs no push access at all. Working that out first is the difference between a useful teammate and a token that can rewrite your main branch.
Composio Pricing Compared with Nango, Arcade, Pipedream, and Swytchcode
Composio is free for 100,000 tool calls a month, then $29. Nango is $50 pay-as-you-go. Arcade Team is $25 plus a cent a call. Pipedream Startup is $99 billed annually. Swytchcode is $149 for a million. The headline prices are the least useful part, so here is the arithmetic.
