Your Canva App deserves:

Usage Credits
Per-action quotas
Subscriptions
Plans, pricing & payments
Easy Backend
Secure cloud functions

The missing infrastructure for Canva apps.

Set up in minutes

1

Connect your App

Link your Canva app to CanUp and create your first action.

$npx canup init
Linked to your Canva app
$npx canup actions new enhance-design
Created action: enhance-design
# Want server-side code? Write it in enhance-design.ts and deploy
$npx canup deploy enhance-design
Deployed action: enhance-design
2

Add CanUp to your App

Add the React components. Credits, billing, and upgrade prompts — handled.

App.tsx
import { ActionButton, CreditCounter } from "canup";

<ActionButton
  action="enhance-design"
  onResult={({ result }) => applyEnhancement(result.enhanced)}
>
  Enhance
</ActionButton>
<CreditCounter action="enhance-design" />
canva.com/design/DAG...
My Canva App
Your app UI

Used 3 of 10 credits. Credits refresh monthly. Upgrade for more credits

Credits tracked. Plans enforced. Manage everything from your dashboard.

3

Ready to monetize?

Create plans in your dashboard. Your users get your pricing page.

Dashboard › Plans › New Plan

New Plan

Pro
$9.00/mo
enhance-design100 / month
myapp.canup.link/subscribe

Pick a plan

Free

$0

10 credits / mo
Current

Pro

$9/mo

100 credits / mo
Priority support

Your users subscribe through Stripe. Credits refresh. Zero payment code.

Your app's command center

Everything at a glance

All your apps, all your metrics. One screen.

Home

Home

30d

Total Executions

24.8K

↑ +23%

Success Rate

99.2%

↑ +0.3%

MRR

$2,184

↑ +14%

Subscribers

156

↑ +9%

Your Apps

DE
Design Enhancer
Healthy

12.4K

executions

$1,247

MRR

84

subscribers

PE
Photo Editor Pro
Healthy

8.1K

executions

$723

MRR

52

subscribers

TM
Template Maker
Degraded

4.3K

executions

$214

MRR

20

subscribers

Your backend, in your browser

Write your functions, test them live, deploy in one click.

Design Enhancer › Actions › enhance-design

enhance-design

CodeHistorySettings
1
2
3
4
5
6
7
8
9
10
import type { ActionHandler } from 'canup'

const handler: ActionHandler = async (params, context) => {
  const design = await fetchDesign(params.designId)
  const enhanced = applyFilters(design, params.style)
  console.log('Enhanced design for', context.user_id)
  return { enhanced, appliedAt: new Date() }
}

export default handler
Deploy▶ Test
Deployed

See who's paying

Revenue, subscribers, plan performance — your app's business in real time.

Design Enhancer › Subscribers

Subscribers

30d

MRR

$1,247

↑ +18%

Subscribers

84

↑ +12%

Earnings

$1,122

post-fees

↑ +15%

Churn Rate

2.4%

↓ −0.8%

Revenue Trend

SubscriberPlanMRR
[email protected]Pro$14.99
[email protected]Pro$14.99
[email protected]Pro$14.99
[email protected]Pro$14.99

Everything built in

Your stack

TypeScript & Python

Write functions in the language you know.

Any dependency

npm and pip packages, built and deployed automatically.

Encrypted secrets

API keys and tokens stored with KMS encryption.

Already handled

Automatic identity

Your Canva users are recognized. Zero auth code.

Flexible quotas

Per action, per plan. Daily, weekly, monthly, or lifetime.

Billing lifecycle

Upgrades, cancellations, credit resets. Zero webhook code.

In production

Execution logs

Every run tracked. Errors, stack traces, print output.

Full CLI

Everything the dashboard does, scriptable from your terminal.

What does your app need?

We're looking for Canva developers to talk to — not to sell, just to listen.