Describe
your
business
in
plain English.
Papilio provisions your payments backend, entity schema, and flow engine from a single description. No infrastructure code. No payments engineering team.
Your business logic,
instantly structured.
Describe any business in natural language. Papilio generates a production-ready entity schema and payment flows in seconds.
{
"entities": {
"tenant": {
"fields": {
"name": { "type": "string", "required": true },
"email": { "type": "string", "required": true },
"mandate_status": { "type": "enum",
"values": ["pending", "active", "failed"] }
}
},
"property": {
"fields": {
"address": { "type": "string", "required": true },
"weekly_rent": { "type": "number", "required": true }
}
}
},
"flows": {
"collect_rent": {
"trigger": "schedule:weekly:MON:08:00",
"steps": [
{ "action": "collect_payment",
"from": "tenant.mandate_id" },
{ "action": "disburse",
"to": "landlord.bank_account" },
{ "action": "export",
"integration": "xero" }
]
}
}
}
Visual flows or plain English — your choice.
Everything a payments team
would build. Already built.
Your data model.
Described, not coded.
Define your entities, fields, and relationships in plain English. Papilio generates a strictly typed schema — string, number, boolean, date, enum, reference — and provisions your data backend instantly. No migrations. No ORM. No schema design sessions.
{
"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"
}
}
}
}
}From a single payment
to a full business process.
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. Chain them in any order.
Debit a bank mandate or charge a card. GoCardless, Stripe, or Akahu.
Send money to any bank account or Stripe connected account. Fees split automatically.
Insert a new entity record mid-flow. Fields populated from step context.
Modify entity fields as a flow step. Update balances, statuses, timestamps.
Evaluate an expression and route to different steps. If balance > 50, pay out.
POST a signed payload to any URL. Notify your backend on any step completion.
Send data to Xero, MYOB, or any integration. Triggered as a flow step.
Pause a flow for a defined duration before the next step executes.
Every step puts its output into shared context. disburse.amount is available to every subsequent step.
Eight endpoints.
Every business.
Papilio exposes the same eight endpoints to every tenant regardless of their configuration. Your entity schema, your flows, your data — all accessible through a consistent, versioned API. No custom endpoints to build. No documentation to maintain.
// TypeScript SDK const papilio = new Papilio({ tenantId: 'pap_tenant_001', apiKey: process.env.PAPILIO_API_KEY, }) const tenants = await papilio .get('tenant', { status: 'active' }) await papilio.flows .execute('collect_rent', tenantId)
Ask questions.
Get answers.
The Papilio query interface accepts plain English, structured filters, or raw pipelines. One endpoint, three modes. Your data, however you want to ask for it.
| Tenant | Amount | State | Date |
|---|---|---|---|
| tnt_sarah_c | $450.00 | failed | Mar 10 |
| tnt_james_w | $380.00 | failed | Mar 10 |
| tnt_mike_t | $520.00 | failed | Mar 10 |
| tnt_emma_d | $425.00 | failed | Mar 11 |
| tnt_priya_p | $490.00 | failed | Mar 11 |
papilio.query({
entity: 'payment',
filter: {
state: 'failed',
created_at: { $gte: '2025-03-01' }
},
sort: { created_at: -1 },
limit: 50
})papilio.query.raw([
{ $match: {
tenant_id: 'pap_001',
state: 'failed'
}},
{ $group: {
_id: '$entity_id',
total: { $sum: '$amount' }
}},
{ $sort: { total: -1 }}
])Your IDE becomes
your operations centre.
Papilio ships with a Model Context Protocol server. Connect it to Kiro, Cursor, or Claude and query your live data, trigger flows, debug failures, and onboard customers — all in natural language without leaving your editor.
npm install -g @papilio/mcp// .cursor/mcp.json { "mcpServers": { "papilio": { "command": "papilio-mcp", "env": { "PAPILIO_API_KEY": "pk_test_xxx" } } } }
James Wilson $380 failed Mar 10
Mike Thompson $520 failed Mar 11
One platform. Three ways to use it.
From solo founders to engineering teams.
Use the Papilio dashboard as your entire interface. Configure entities, build flows, manage records, query data. No code required. The platform runs autonomously.
Connect Papilio's MCP server to Kiro or Cursor. Query live data, trigger flows, debug failures — all in natural language without leaving your editor.
Build your product on top of Papilio. Use the dashboard for configuration, the SDK for integration. Your users never know Papilio exists.
Your audit trail comes
with the infrastructure.
Every financial event in Papilio is immutable and append-only. Payment state transitions, flow executions, entity changes, config updates — all timestamped and queryable. Fintechs building on Papilio walk into AML audits with the hardest part already done.
SOC 2 Type I certification in progress.
Be first to build on Papilio.
We're onboarding a small group of founders and developers early. No waitlist nonsense — we'll reach out directly.
No spam. No newsletter. Just Papilio.