Your payments layer. No technical person required.
Payments infrastructure for the agentic stack

Payments that answer
to you. Not your developer.

The payments layer your agent was built to talk to.

Papilio lets you set up, run, and debug your entire payments backend in plain English. No developer. No Stripe dashboard. No waiting on someone else to fix it.

Your stack has an auth layer, a data layer, and an API layer. In 2026 it needs a payments layer — one your agent can talk to, your founder can query, and you don't have to maintain. That's Papilio.

2–4 weeks of developer time replaced at setup
0 lines of code you need to write
Plain English is all it takes to run your payments
Quick question

Has this ever happened to you?

You didn't get hired to build a payments layer. You got hired to build the product.
Your founder asks why a payment failed. You have to go find out. Every time.
Stripe is powerful. It was also built before agents existed.
01 — Your business, in your control 04 — Schema from language

Tell Papilio how your business works.
It handles the rest.

Your data model.
Described once. Provisioned instantly.

Describe your business once. Then ask it anything — who owes you money, which payments failed, what changed last month. In plain English. Instantly.

Describe your entities in natural language or drop in JSON. Papilio generates a strictly typed schema — string, number, boolean, date, enum, reference — and provisions your backend. No migrations. No ORM. No schema design sessions. Every field has a description that powers the natural language query layer. Strict types enforced at provision time. Foreign key validation. Enum constraints.

Describe your business Plain English input
Generated — ready to use Generated schema
{
  "entities": {
    "customer": {
      "fields": {
        "name":           { "type": "string", "required": true },
        "email":          { "type": "string", "required": true },
        "monthly_fee":    { "type": "number", "required": true },
        "status": { "type": "enum",
          "values": ["active", "paused", "cancelled"] }
      }
    },
    "invoice": {
      "fields": {
        "customer_id": { "type": "ref", "entity": "customer" },
        "amount":      { "type": "number" },
        "status":      { "type": "enum",
          "values": ["pending", "paid", "failed"] }
      }
    }
  },
  "flows": {
    "monthly_billing": {
      "trigger": "schedule:monthly:1:00:00",
      "steps": [
        { "action": "collect_payment" },
        { "action": "create_entity", "type": "invoice" },
        { "action": "export", "integration": "xero" }
      ]
    }
  }
}
Ask your business anything
Which customers haven't paid this month?
3 customers · outstanding $1,240
Sarah Chen $450 14 days overdue
James Wu $380 9 days overdue
Mike Torres $410 pending retry
Retry James's payment now.
Payment retried · James Wu · $380
GoCardless mandate debited · receipt queued · Xero updated
How much did we collect last month?
$28,450 collected · March
↑ 12% vs February · 94 payments · 3 failed · 1 pending retry
~3s seconds to set up your entire payments layer schema generation
12+ types of business data supported entity field types
0 lines of code you need to write. Ever. lines of config to write
03 — Plain English flows 05 — Flow Engine

Your payments run.
You stay in control.

Payment flows that run themselves.
And tell you when they don't.

Define your payment flows once — collect, retry, notify, export, branch. Papilio runs them on schedule, handles failures with the logic you set, and gives you a complete execution log when something goes wrong. You write the rules. You don't babysit the runs.

Set the rules once. When something needs your attention, you handle it in plain English — no developer, no waiting, no guessing.

01
Collect Paymentcollect_payment
02
Create Invoice Recordcreate_entity
03
Check thresholdcondition: amount ≥ $100
04
Export to Xeroexport · integration:xero
+ Add step click to add
Configure
100%
Real scenario
A payment just failed.
What happens next?
Without Papilio
Customer emails you. Payment failed.
You find out from them, not your system.
"Hey, can you check why this failed?"
You message your developer.
You wait. Hours pass.
Customer is still waiting too.
"Looks like a card expiry issue."
Now you email the customer manually.
Half a day. One failed payment. You touched it four times.
With Papilio
Customer emails you. Payment failed.
Same problem. Different story from here.
|
You type it yourself. No one else needed.
Sarah Chen card expired Jan 2025 · $450 failed
Reason: card_expired · last retry: 3 days ago
Instant. You know exactly what happened.
"Notify Sarah to update her card."
One more question. Papilio sends the email.
Two minutes. Sorted. You never needed your developer.
10 step types 3 payment rails Any integration Conditional branching GoCardless — direct debit mandates Stripe — card charges and connected accounts Akahu — open banking / NZ bank accounts
03 — What it does 03 — How it works

Six months of payments work.
Done before lunch.

Six months of payments engineering.
Done before lunch.

Define your business in plain English
Schema from natural language
No database design. No technical setup. Describe your customers and what they pay — Papilio structures it instantly.
Typed, validated entity schema from a single description. String, number, boolean, date, enum, reference — all enforced at provision time.
entity.schema.generate()
Collect money automatically
Payment collection across all rails
Monthly subscriptions, marketplace payouts, service invoices — configure once, runs forever. GoCardless, Stripe, and Akahu built in.
Direct debit mandates, card charges, and bank transfers. GoCardless, Stripe, and Akahu — all configured from your flow definition. No dashboard required.
collect_payment · mandate
Runs on your schedule, automatically
Scheduled flows
Set it and forget it. Payment flows trigger automatically — weekly, monthly, on specific days. You don't need to touch it.
Trigger flows on any schedule — weekly, monthly, on a specific day. Cron-like syntax, human-readable config. No job infrastructure to manage.
schedule:monthly:1:00:00
Xero stays up to date. Always.
Accounting integrations
Every payment automatically creates the right record in Xero. No manual reconciliation at month end. Ever again.
Export invoices, receipts, and transaction records to Xero or MYOB automatically as part of your flow. No manual reconciliation.
export · integration:xero
Failed payments handle themselves
Conditional logic
Payment failed? Papilio retries automatically. Too low a balance? It skips the payout and notifies you. No one needs to manually fix anything.
Branch flows based on entity fields, payment outcomes, or thresholds. Build complex retry and escalation logic with no code.
condition · if: amount ≥ 50
Notify customers automatically
Webhook notifications
Receipts, reminders, confirmations — sent automatically as part of your payment flow. No manual emails. No separate tool needed.
POST a signed payload to any URL. Notify your backend, trigger downstream systems, or log events as steps in your flow.
webhook · notify_customer
Private Beta · Limited spots

Seen enough? Let's get you set up.

Ready to ship your payments backend in an afternoon?

We're onboarding a small group of founders now. No waitlist — we'll reach out within 24 hours.

No infrastructure. No migrations. Define your schema, configure your flows, ship.

How it works Entity Schema

Describe your business once.
Papilio does the rest.

Your data model.
Described once. Never argued about again.

Tell Papilio who your customers are, what they pay, and when. It sets up your entire payments backend — invoices, subscriptions, reminders, exports — without you writing a line of code or hiring a developer.

Describe your entities in plain English or drop in JSON. Papilio generates a strictly typed schema and provisions your backend. No migrations to write. No ORM to configure. No schema design session that runs three hours and ends in a Confluence doc nobody reads. When your founder wants to add a field, they describe it. It's done.

Plain English — no technical knowledge neededStrict field types enforced at provision time
Customers, invoices, subscriptions — any structure you needRelationships with foreign key validation
Payments collected and reconciled automaticallyEnum fields with allowed value constraints
Xero and accounting tools stay in syncReference fields that link entities together
Ask questions about your data any time, in plain EnglishEvery field has a description — powers the NL query layer
schema.json
{
  "entities": {
    "customer": {
      "description": "A paying subscriber",
      "payment_role": "initiator",
      "fields": {
        "name": {
          "type": "string",
          "required": true,
          "description": "Full legal name"
        },
        "email": {
          "type": "string",
          "required": true
        },
        "monthly_fee": {
          "type": "number",
          "required": true,
          "description": "Subscription fee in NZD"
        },
        "status": {
          "type": "enum",
          "values": ["active", "paused", "cancelled"]
        },
        "plan_id": {
          "type": "ref",
          "entity": "plan",
          "description": "The plan this customer is on"
        }
      }
    }
  }
}
Your business, mapped
Customer
name email status active / paused
creates
triggers
Invoice
amount status due_date
Payment
amount method paid
Flow Engine

Every step your payments need.
Configured once, runs forever.

Directed step graphs. Every action type
your payments will ever need.

Your payment flows run exactly as configured — every time. If something fails, Papilio retries automatically. If it needs your attention, it tells you. No surprises. No silent failures.

Flows are directed step graphs. Each step is a typed action — collect money, create a record, call a webhook, export to Xero, branch on a condition. Every step puts its output into shared context for the next step.

Example Flow
Charge customer · Create invoice · Notify customer
Collect payment · Create invoice · Export to Xero · Complete
collect_paymentcustomer.mandate
create_entityinvoice
exportxero
completeflow done

Every step puts its output into shared context. collect_payment.amount is available to every subsequent step.

Collect Payment
collect_payment

Debit a bank mandate or charge a card. GoCardless, Stripe, or Akahu.

Disburse
disburse

Send money to any bank account or Stripe connected account. Fees split automatically.

Create Record
create_entity

Insert a new entity record mid-flow. Fields populated from step context.

Update Record
update_entity

Modify entity fields as a flow step. Update balances, statuses, timestamps.

Branch on Condition
condition

Evaluate an expression and route to different steps. If balance > 50, pay out.

Call Webhook
webhook

POST a signed payload to any URL. Notify your backend on any step completion.

Export
export

Send data to Xero, MYOB, or any integration. Triggered as a flow step.

Wait
wait

Pause a flow for a defined duration before the next step executes.

endpoints
GET/v1/{tenantId}/{entity}List entities with filter
GET/v1/{tenantId}/{entity}/{id}Get single entity
POST/v1/{tenantId}/{entity}Create entity record
POST/v1/{tenantId}/flows/{id}/executeExecute a flow
GET/v1/{tenantId}/paymentsList payments
GET/v1/{tenantId}/payments/{id}Get payment detail
POST/v1/{tenantId}/payments/{id}/retryRetry failed payment
POST/v1/{tenantId}/queryQuery in any mode
07 — API Surface

Eight endpoints. Every business.

Same eight endpoints regardless of your schema. Your data model changes — the API contract doesn't. No custom endpoints to build, no internal documentation to maintain, no breaking changes when the founder decides to add a field. The endpoints are stable. Everything else is configuration.

Tenant-scoped — your data is never accessible to other tenants
JWT and API key authentication
Sandbox and production environments
Webhook delivery on every event
SDK available in TypeScript
// TypeScript SDK
const papilio = new Papilio({
  tenantId: 'pap_tenant_001',
  apiKey:   process.env.PAPILIO_API_KEY,
})

const customers = await papilio
  .get('customer', { status: 'active' })

await papilio.flows
  .execute('monthly_billing', tenantId)
Why Papilio

Built for founders who don't want to depend on a developer for payments.

1
No developer required

Set up, run, and debug your payments backend yourself — in plain English.

2
No infrastructure to manage

No servers, no migrations, no DevOps. Papilio handles everything behind the scenes.

3
Answers in seconds, not hours

Ask who owes you money, what failed, or what changed — and get an answer instantly.

Ask your data anything 06 — Query Layer

Ask questions about your payments.
In plain English.

Your founder asks in plain English.
You ask in JSON.
Both get answered.

No SQL. No reports. No waiting. Just ask.

The same endpoint accepts plain English from your founder, structured filters from your code, and raw aggregation pipelines when you need them. Same auth, same response shape. One interface that works for everyone on the team.

Ask your question Query
Find all payments that failed but the order still went out.
Your answer Results 4 results · 14ms
running query...
CustomerAmountStateDate
cst_sarah_c$450.00failedMar 10
cst_james_w$380.00failedMar 12
cst_mike_t$520.00failedMar 13
cst_emma_d$290.00failedMar 14
Structured Query
papilio.query({
  entity: 'payment',
  filter: {
    state:      'failed',
    fulfilled:  true
  },
  sort:  { created_at: -1 },
  limit: 50
})
Raw Pipeline requires config flag
papilio.query.raw([
  { $match: {
      state:     'failed',
      fulfilled: true
  }},
  { $group: {
      _id:   '$customer_id',
      total: { $sum: '$amount' }
  }},
  { $sort: { total: -1 }}
])
Try these
03 — MCP First

Your IDE is your
operations centre.

Papilio ships with a native MCP server. The moment you connect it to Cursor or Claude, two things happen: you get a natural language interface to your entire payments layer, and your founder gets one too. They stop asking you why payments failed. They just ask Papilio.

18 tools across entities, payments, flows, and query
Write operations require explicit confirmation — no accidental flow execution
Sandbox and production aware
Install in one command: npm install -g @papilio/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "papilio": {
      "command": "papilio-mcp",
      "env": {
        "PAPILIO_API_KEY": "pk_test_xxx"
      }
    }
  }
}
Cursor — Papilio MCP
Developer
Which payments failed this week and haven't been retried yet?
Papilio
Found 3 payments with failed state and no retry scheduled:
cst_sarah_c    $450  failed Mar 17
cst_james_w   $380  failed Mar 17
cst_mike_t    $520  failed Mar 18
Developer
Retry all three and notify me when done.
Papilio
I'll retry payments for all 3 customers. Confirm?
Developer
Which flows failed in the last hour?
Papilio
2 failed flow executions in the last hour:
invoice_flow   cst_1042   timeout   10:13
retry_failed   cst_2071   gateway_decline   10:41
Developer
Show me the schema for the customer entity.
Papilio
customer: { id: ulid, name: string, email: string, monthly_fee: number, status: enum(active|paused|cancelled) }
Developer
Execute the invoice flow for customer ID 1042.
Papilio
This will execute invoice_flow for cst_1042 in sandbox. Confirm?
Confirmed. Execution queued with run_id: flow_01j2x.
Your rules. Your boundaries.

The AI doesn't run your payments.
You do.

Papilio is infrastructure you control. The MCP server, the natural language query, the agent tooling — all of it is optional. You decide how much AI touches your stack, if any. The flows you define are deterministic logic. AI is just one of the ways you can interact with what you've built.

Just the infrastructure
REST API only

Call Papilio from your backend like any other service. Your flows run on schedule or on demand. No AI anywhere near your customers or your money. Papilio is just a very good payments layer.

REST API Your backend calls it Zero AI in prod
AI for you, not your customers
MCP as a dev tool

Connect MCP to Cursor or Claude. You get a natural language interface for debugging, querying, and inspecting schemas — in your editor, in your sandbox. Production flows stay deterministic. AI never touches a customer.

MCP in dev/sandbox Confirm before any write Customers never know
AI for your founder too
Controlled access

Give your founder read access via MCP. They can query payment data, check statuses, understand what's happening — without pinging you. Write operations still require explicit confirmation. You set the boundaries.

Read queries only Confirm on writes Founder self-serves
Full autonomy
Agent-driven ops

Agent queries, triggers flows, handles retries, notifies customers — all within the rules you've defined in your flow config. Every action is logged. You review, adjust the rules, stay in control at the configuration level.

You set the rules Full audit log Adjust anytime
Most teams start at level one or two and move right as they get comfortable. The infrastructure is the same at every level — only the tooling around it changes.

One platform. Three ways to use it.

From solo founders to engineering teams.

Standalone product

Use the Papilio dashboard as your entire interface. Configure entities, build flows, manage records, query data. No code required.

No codeDashboard onlyAutonomous
Embedded infrastructure

Build your product on top of Papilio. Use the dashboard for configuration, the SDK for integration. Your users never know Papilio exists.

SDKREST APITypeScript
Compliance / Credibility 08 — Audit Trail

Every payment. Every state.
Every change. Logged.

When something goes wrong at 2am,
you'll know exactly what happened.

Papilio keeps an immutable record of everything — not because you asked, but because that's how it's built. When someone asks what happened to a payment, you'll know.

Every payment state transition, flow execution, entity change, and config update is timestamped and append-only. Not because you asked for an audit trail — because that's how Papilio works. Query the full history through the same API. SOC 2 Type I in progress.

100%
Every payment tracked from start to finish
Every
Change to your data is recorded automatically
Zero
Setup needed — it's built in from day one
SOC 2
Architecture ready

Built for the moment someone asks you to prove it.

That's not a feature you configure. It's how Papilio works.

Got a developer on your team?

Switch to the developer view and send them the link.
They'll understand immediately — and they can get access on your behalf.

Get early access yourself

The payments layer is done.
Go build the product.

Get early access
No waitlist. We'll reach out within 24 hours.
Get early access
Book a technical call
Talk to the team. Bring your architecture questions.
Book a technical call
Private Beta
MCP · SDK · Dashboard

Your payments layer shouldn't need
a developer to maintain it.

Ready to stop building payments infrastructure
and start building your product?

Join the founders already building on Papilio. We'll reach out within 24 hours.

Private beta. We're onboarding a small group of technical teams now. No waitlist — we'll reach out within 24 hours.

Simple, transparent pricing

Start free. Pay as you grow.

A base subscription gives you the platform. Flow executions scale with your actual usage — so your costs match your business activity.

Monthly Annually · save 20%

Starter

Try the platform. Ship your first flow.

Free · forever
Free · forever
1 tenant
500 flow executions / mo
5,000 records
Sandbox only
Schema generation
Flow builder (visual + plain English)
Natural language query
MCP server access
Community support
Start free

Scale

For growing businesses processing serious volume.

$299 / mo
$239 / mo
billed $2,868 / year
≈ NZD $499 / mo
20 tenants
25,000 flow executions / mo
250,000 records
Sandbox + production
Everything in Growth
Priority support (4h response)
Custom flow templates
Advanced audit queries
Usage dashboard
Get early access

Enterprise

High volume, custom rails, SLA.

Let's talk

Custom tenants, executions, and records. Dedicated infrastructure available.

Everything in Scale
Custom payment rails
SLA and uptime guarantee
Dedicated onboarding
Invoice billing
Book a call
What counts as a flow execution?
Counts as 1 execution

Each time Papilio runs a payment flow from trigger to completion. A monthly billing run across 50 customers = 50 executions.

Doesn't count

Schema generation, entity queries, NL queries, MCP tool calls, dashboard usage, and sandbox runs are all free.

The average Papilio customer replaces 2–4 weeks of developer time at setup.
USD prices · NZD equivalent shown at ~1.65 exchange rate · updated quarterly.