Skip to content
Why FlintAI agentsUse casesPricingHow it worksFAQDocs

Commerce-first payment infrastructure

The commerce API.
Built for humans and AI agents.

Payment APIs push commerce complexity into your app. Flint keeps every step connected through one order model, from cart to refund.

  • Line items, payments & refunds in sync
  • Totals, tax & discounts computed server-side
  • Agent-safe schema hints on every call
  • Free sandbox, keys in minutes
POST/v1/orders2 line items · shipping charge · tax201
POST/v1/checkout-sessionshosted checkout · pays $22.43201
POST/v1/refundsCold brew ×1 · −$7.04201
flintord_01JX4QT8KD
Cold brew ×2$13.00
↳ refunded ×1 · −$7.04
Croissant ×1$4.95
Shipping$3.00
Tax$1.48
TOTAL$22.43
REFUNDED−$7.04
BALANCE$22.43

status · ORDER_STATUS_OPEN

one record · printed by the API

01The problem

You become the commerce database.

A payments API gives you a charge. An amount, a currency, nothing else. It moves the money and stops there. Everything that makes it commerce is now your problem: four systems, one transaction, and a full-time job keeping them in sync.

redis://cartpostgres://ordersprocessor://chargessheets://reconciliation

cart ≠ orders ≠ charges

State drifts.

Line items, tax, and discounts live in your app. The charge lives somewhere else. They disagree, and you find out from a customer.

$94.50 → which items?

Refunds become detective work.

The charge says $94.50. Which two of the five items came back? Your payments API has no idea, so you reconcile by hand.

+objects +webhooks +sync

Every new flow is a new model.

Subscriptions, checkout, in-person: each one adds objects, webhooks, and sync code. The complexity compounds.

02The model

One order. Cart to refund. Always in sync.

Flint starts one level up. The order is the record: line items, modifiers, tax, discounts, tips, payments, and refunds all compute on it, with one audit trail. There’s nothing to reconcile, because there’s one system.

The payment is a field, not the foundation

Money lands on the order. Nothing to join, nothing to drift. The charge can never disagree with the cart again.

Totals you never compute

Tax, discounts, tips, and balances are calculated on the record, server-side, every time it changes.

Refunds against what was bought

Refund two of five line items in one call. Balances, tax, and inventory reconcile automatically.

POST/v1/orders201
{
"lineItems": [
{ "name": "Cold brew", "quantity": 2,
"unitPriceMoney": { "amount": 650, "currency": "USD" } },
{ "name": "Croissant", "quantity": 1,
"unitPriceMoney": { "amount": 495, "currency": "USD" } }
],
"customerId": "cus_01JX4QSEW2",
"idempotencyKey": "order-9f31"
}

totals, tax, and balance come back computed · you never wrote the math

computed from settlement state · never set by hand
A payments API
Flint
State model
Your DB + the processor
One order record
Refund logic
Per charge
Against the order, per line item
Tax & totals
You calculate
Computed for you
Checkout sync
Webhook glue
Native lifecycle
AI legibility
Opaque charge
Semantic order + safety hints

03AI agents

The commerce layer agents can actually use.

A charge is opaque to an LLM, an amount with no meaning. A Flint order is semantic: an agent can read what was bought and reason about it. Every money-moving call ships machine-readable safety hints, so an agent knows what’s irreversible before it acts. A payments-first API structurally can’t give you this. Its primitive is the charge.

refunds.proto · agent_hintsabridged
rpc CreateRefund(CreateRefundRequest) {
  option (agent_hints) = {
    operation_type:              OPERATION_TYPE_CREATE
    side_effect_level:           SIDE_EFFECT_LEVEL_FINANCIAL
    requires_human_confirmation: true
    terminal_states:             "REFUND_STATUS_SUCCEEDED"
    terminal_states:             "REFUND_STATUS_FAILED"
  }
}
agent session · sandbox
$ agent “refund Sarah’s coffee beans from her last order”
· resolving customer → cus_01JX2M4A · Sarah Chen
· GET /v1/orders → ord_01JWY8KE · Coffee beans ×1 · $39.98
· reading agent_hints for CreateRefund
side_effect_level: FINANCIAL
requires_human_confirmation: true
⚠ this call moves money. approve refund of $39.98? [y/N]
y
✓ POST /v1/refunds → re_01JWY9C2 · REFUND_STATUS_SUCCEEDED
✓ ord_01JWY8KE reconciled · activity logged

Semantic by default

An agent can read what was bought, not just what was charged: orders, line items, balances, and refund state are all one legible object.

Safety hints on every call

agent_hints annotate every call with side effects, idempotency, scopes, and terminal states, so agents know what's irreversible before they act.

Humans stay in the loop

Anything that moves money can demand explicit confirmation. Agents do the work; people approve the consequences.

the capability ceiling

An agent is only as capable as the API you hand it.

A payments API gives an agent two verbs: charge and refund. The asks that actually land are bigger, and agents can carry them now. The ceiling is the API, not the model.

the aska payments APIFlint
“Charge my card $94.50.”can: the verb it hascan: POST /v1/payment-intents
“Refund the grinder, not the whole order.”can't: no line itemscan: POST /v1/refunds · lineItems[]
“Add a bag of beans to my order before it ships.”can't: no order to editcan: POST /v1/orders/{id}/line-items
“Is the dark roast back in stock?”can't: no inventorycan: GET /v1/products · stock
“Has my order shipped yet?”can't: no fulfillmentcan: GET /v1/orders/{id} · fulfillment
“What sold best this week?”can't: no record of what soldcan: GET /v1/orders · line items
five asks · one missing object · the order

04Use cases

Built for the whole transaction, not just the charge.

1

Refunds that know what was bought

Refund two of five line items in one call. Balances, tax, and inventory reconcile automatically, and it all lands on the order’s activity trail. No “which charge was that?”

Espresso blend ×1$18.00
Coffee beans ×1$39.98
  Grinder ×1$36.52
POST /v1/refunds · lineItems[2] → −$57.98 · tax & stock reconciled

2

Agentic commerce, safely

Give an agent a semantic order model plus per-call safety hints. It reads orders, answers “what did I pay for?”, and pauses for a human on anything that moves money.

FINANCIALconfirm: requiredterminal: SUCCEEDED

3

Subscriptions without the price-object maze

One plan with multiple line items, a trial, a setup fee, and a dunning policy, created in a single call. No products × prices × items juggling to bill a bundle.

billingIntervalMONTHLY
trialPeriodDays14
setupFeeMoney$49.00
lineItems×3

4

In person and online, one ledger

Hosted checkout, payment links, a virtual terminal, and POS devices all write to the same order and balance model. Sell anywhere; reconcile once.

checkoutlinksterminal→ ord_

5

Catalog, inventory & tax built in

Products, variants, and bundles with stock that deducts on payment and tax computed per line item. No separate catalog database to keep in sync.

Coffee beans · stock42 → 41 on payment
tax per line itemcomputed

6

Flexible ways to get paid

Pay-what-you-want donations, event tickets with numbering, deposits with auth-only capture, and custom fields to collect what you need. No custom checkout code.

pay-what-you-wantdeposits · auth → captureticketscustom fields

7

The money-out half, too

Balances broken out as available, pending, and reserved; standard or instant payouts; a full transaction ledger. The whole money cycle, not just the inbound charge.

available$8,214
pending$2,967
reserved$1,025

05The trade

The systems you don’t build.

Per-transaction pricing is the visible cost. The real one is the commerce stack around the charge: designed, hosted, monitored, and kept in sync by your team, quarter after quarter. On one order record, that backlog isn’t abstracted. It’s gone.

commerce-roadmap.md8 items · 0 remaining
×Cart & order serviceThe tables, the totals logic, the admin views.
the order record
×Tax mathRates per line item, refund proration, rounding bugs.
computed
×Reconciliation jobsThe nightly cron diffing your DB against the processor.
one system
×Refund toolingSupport dashboards mapping charges back to items.
per line item
×Cross-system sync glueRetries, ordering, idempotency, replay, all between your own services.
nothing to sync
×Subscription state machineTrials, dunning, proration, pause and resume.
built in
×Inventory syncDecrement on payment, restock on refund.
automatic
×Audit trailWho changed what, when, and why.
every change logged
8 systems crossed offreplaced by one order record

06Pricing

One rate. The whole stack.

No add-ons for orders, tax, subscriptions, payouts, or agent tooling. One per-transaction rate covers all of it. The fee is the product, not a line in a bigger bill.

Freeno monthly fee
4.9% + 45¢per successful transaction

Everything included. Start in the sandbox, go live the same day, pay only when you get paid.

  • Orders, catalog, tax & discounts
  • Hosted checkout, links & subscriptions
  • Refunds, balances & payouts
  • agent_hints on every call
  • Full sandbox & API access
Get free API keys

free sandbox · no card · keys in minutes

Enterprisevolume
Customvolume pricing

Rates that scale with you. Built for high volume, marketplaces, and platforms running agents at scale.

  • Everything in Free, at negotiated rates
  • Volume & interchange-plus options
  • Dedicated support & onboarding
  • SLAs & higher rate limits
Contact sales

talk through volume & get a quote

07How it works

Four calls from first order to full commerce.

01

Create the order once

Line items, totals, buyer: exactly what's being sold, written down before money moves.

POST /v1/orders
02

Attach checkout, get paid

Hosted checkout, a payment link, or a saved card. The payment lands on the order, not as a disconnected charge.

POST /v1/checkout-sessions
03

Handle the support moment

Refunds and “what did I pay for?” resolve against the order, line by line, not across systems.

POST /v1/refunds
04

Add the next flow later

Subscriptions, in-person, new channels: the same order model underneath. No rewrite.

POST /v1/subscription-plans

08Start small

Need just a payment today? That works too.

You don’t have to adopt the whole model on day one. Charge a card in one call. When the product needs orders, checkout, or subscriptions, the upgrade is one field, not a migration. Same API, same keys.

POST/v1/payment-intents
{
"amountMoney": { "amount": 2500, "currency": "USD" },
"paymentSourceToken": "tok_sandbox_4242",
"autoConfirm": true,
"idempotencyKey": "pi-20260609-001"
}
201"status": "PAYMENT_STATUS_SUCCEEDED"

drop amountMoney, add orderId · the amount now derives from the order’s balance

09Try it live

Run a real flow, before you sign up.

One click provisions a throwaway merchant, a seeded catalog, and a real API key. Pick a flow and run it against a live key for 30 minutes. No card. When it expires, it shreds itself.

POST/v1/demo-sessionsno signup · 30 minutes

creates a temporary merchant + sandbox key · free · expires after 30 minutes

Pick a flow below. Spin up a sandbox above to run it live.

The order models what's being bought

Send line items. The server prices them against the catalog, sums the subtotal, and returns the total. You never wrote the math.

  1. live
    GET List the seeded catalog
    curl 'https://api.withflintpay.com/v1/products' \
      -H "Authorization: Bearer $FLINT_API_KEY"
    previewReal products, seeded for you. We grab a variant id for the order.
    returned2 records
  2. live
    POST Create an order from a variant
    curl 'https://api.withflintpay.com/v1/orders' \
      -X POST \
      -H "Authorization: Bearer $FLINT_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"line_items":[{"variant_id":"$VARIANT_ID","quantity":2}]}'
    previewYou sent a variant and a quantity. Subtotal, discount, tax, and total came back computed.
    orderord_01JXDEMO0001total$128.00

the calls fill in with your key once a sandbox is live · until then $FLINT_API_KEY is a placeholder

Protected by Cloudflare Turnstile · Privacy · Terms

10FAQ

Questions, answered.

Is Flint a Stripe alternative, or built on Stripe?
Flint is the commerce layer most payments APIs leave you to build: orders, catalog, tax, subscriptions, line-item refunds, and payouts on one record. A charge-only API gives you two verbs, charge and refund; Flint gives you the whole transaction. Settlement runs on battle-tested, bank-grade rails underneath, so it is one integration, not a migration to a new processor.
What's the best payment API for AI agents and agentic commerce?
Flint is built for AI agents to transact safely. The order is a semantic record (line items, balances, and refund state, not an opaque charge), so an agent can read exactly what was bought and reason about it. Every money-moving call ships agent_hints: machine-readable side-effect levels, idempotency, required scopes, and terminal states, so an agent knows what’s irreversible before it acts, and anything financial can require human confirmation. It’s plain HTTP and JSON.
Do I need to build my own order or cart service if I use a payments API?
With a charge-only payments API, yes: you end up building the order and cart service, tax math, reconciliation jobs, and refund tooling yourself, then keeping your database and the processor in sync. Flint removes that work. The order is the system of record, so totals, tax, discounts, and refunds compute on one object with one audit trail. There is nothing to reconcile, because there is one source of truth, not two.
Can I refund a single line item instead of the whole charge?
Yes. Flint refunds against the order, line by line: one POST /v1/refunds with the line items returns the money, recomputes the balance and tax, and restocks inventory automatically. A charge-only payments API can only refund an amount, so you map charges back to items by hand. Flint never loses the link between what was charged and what was bought.
Do I have to adopt the whole order model on day one?
No. Charge a card with one POST /v1/payment-intents call and stop there if that’s all you need. Orders, checkout, subscriptions, and payouts are the same API and the same keys when you want them. No migration, no new account.
Does Flint handle tax and totals?
Yes. Flint computes tax per line item on the order, so totals come back correct and refunds return the right tax automatically. You set policy; the order does the math, every time it changes.
How does money out work with Flint?
Flint breaks balances out as available, pending, and reserved; payouts run standard or instant; and every movement lands in one transaction ledger, behind the same API as the commerce that generated it.
How do I get started with Flint?
Create an account and grab sandbox keys: free, no credit card, no sales call. The quickstart takes you from first order to paid checkout in minutes.

Build on the order, not the charge.

Free sandbox. No credit card. One order model from day one, for your team and the agents they ship.

POST /v1/orders · everything else follows