For AI builders

Remove purchase anxiety. Ship faster.

The biggest barrier to AI product adoption is the fear of wasting money on something that doesn't work. Remove that barrier. Offer risk-free trials with instant refunds in exchange for structured feedback that makes your product better.

How it works for your customers

1

Customer tries your product

They purchase credits through the shared billing hub. No Stripe setup needed on your end — they pay once, use credits across your product.

2

Not satisfied? Request refund

They click "Request Refund" and complete a short structured feedback form: what they tried, what didn't work, what would bring them back.

3

Instant refund + feedback

Credits are returned instantly. You get the structured feedback in your dashboard. They leave satisfied. Everyone wins.

Why this converts better

3x higher trial-to-purchase rate

Customers who know they can get a refund are dramatically more likely to try your product in the first place.

Structured feedback instead of silence

Most churned customers just disappear. With feedback-for-refund, you learn exactly why they left and what would bring them back.

Zero chargeback risk

Happy refunds prevent angry chargebacks. Your Stripe account stays healthy, your reputation stays clean.

Integration

Add risk-free trials in 3 steps

If you're on Cloudflare Workers, integration takes minutes. No Stripe keys needed on your side.

Step 1: Add the service binding

In your wrangler.json, add the portfolio billing service:

"services": [{ "binding": "PORTFOLIO_BILLING_SERVICE", "service": "riskfreetrial" }]

Step 2: Create checkout sessions

When a user wants to buy credits for your product, create a checkout session:

const checkout = await env.PORTFOLIO_BILLING_SERVICE.createCheckout({ domain: "yourproduct.com", offeringId: "starter_3", email: user.email, successUrl: "https://yourproduct.com/success", cancelUrl: "https://yourproduct.com/pricing" })

Step 3: Consume credits when you deliver value

When your product delivers value (AI generation, analysis, etc.), consume from the shared balance:

const result = await env.PORTFOLIO_BILLING_SERVICE.consumeCredits({ email: user.email, domain: "yourproduct.com", deltaCredits: -1, actionType: "ai_generation", referenceId: "gen_abc123" })

Refunds happen automatically

When a customer requests a refund through our portal, credits are returned to their balance. You get the feedback via the API:

GET /api/refund/requests?domain=yourproduct.com Authorization: Bearer YOUR_PORTFOLIO_BILLING_API_KEY

Coming soon

Stripe Connect: your own merchant account

For builders who want their own Stripe relationship, we're building Stripe Connect support. You keep your own merchant account and payment relationship. We handle the refund flow, feedback collection, and credit orchestration.

Your Stripe, our refund UX

Payments go directly to your Stripe account. When a customer requests a refund, our protocol handles the reversal and feedback collection on your behalf.

Split-second payouts

No waiting for us to settle. Funds land in your Stripe balance directly. The platform fee is deducted at checkout time.

Analytics + feedback dashboard

See all refund requests, feedback, conversion metrics, and credit usage in a single dashboard — even across multiple products.

Express interest in Stripe Connect

Deep dive

Read the full guide

Our step-by-step article covers the psychology behind risk-free trials, integration patterns, pricing strategy, and a real case study with FleetRepair.us.

Domain catalog

Configure your product's offerings

Each domain gets its own catalog with custom pricing, credit packs, and messaging. Your customers see your brand, not ours. Contact us to add your domain to the catalog.

Builder FAQ

What does it cost to integrate?
Integration is free. We take a small percentage of successful transactions. Refunds are free — you only pay when customers convert and keep their credits.
Can I use my own Stripe account instead?
Currently the billing runs through the shared portfolio Stripe account. This keeps integration simple (no keys on your side). We're exploring Stripe Connect for builders who want their own merchant account.
What if I'm not on Cloudflare Workers?
We also expose HTTP APIs. Use /api/billing/checkout to create sessions and /api/portfolio/credits/* endpoints with your API key for server-to-server operations.
How do I get my domain added to the catalog?
Submit an operator help request on the credits page with your domain, brand name, pricing tiers, and acute pain statement. We'll add it to the catalog within 24 hours.