Payments & Billing

How Forte bills you, and charging your own users.

Guides

How does Forte billing work?

What Forte charges for, how compute is metered, and where to see your current usage and invoices.

How do I charge my users with payments?

Take payments from your end users with Stripe built in — no separate Stripe account, Connect onboarding, or webhook endpoint to host.

Common questions

How much does it cost to run a service?

Services bill on two tiers: a provisioned rate for keeping instances warm, plus an active rate while they're processing requests. The default size (0.25 vCPU, 0.5 GB) is $5.11/month per instance plus $0.05 per active hour; sizes go up to 2 vCPU / 4 GB at $40.88/month plus $0.40 per active hour. Bulk discounts apply when active compute exceeds 30% of monthly capacity; contact us for pricing. Build & Deploy is billed separately at $0.50 for a standard build or $2.00 when automatic configuration detection runs. Each fee covers a 4 vCPU, 8 GiB build worker for up to 30 minutes, Docker-in-Docker support, a versioned artifact, managed rollout, health verification, and rollback for eligible failed service updates.

New accounts get a $20 welcome credit that covers the default configuration free through your first month; it expires at the end of that first billing month, so any unused balance doesn't carry over.

Read the documentation

How do subscriptions work?

You define the recurring price as line items with a monthly or yearly interval. The first charge is confirmed in the browser with Stripe Elements, which also saves the card; Forte then re-charges it automatically each cycle, and every renewal is recorded as an ordinary payment so your existing triggers keep working.

If a renewal fails, the subscription goes PAST_DUE and Forte retries over a grace period before cancelling — updating the card retries immediately.

Read the documentation

How do I refund a payment?

Call refundPayment from your backend (or use the Refund action on the user's page in the console). By default it refunds the full remaining balance and moves the payment to REFUNDED; pass refundAmountCents (or use the Partial refund option in the console) to refund part of it, which leaves the payment PARTIALLY_REFUNDED and still refundable. Only COMPLETED or PARTIALLY_REFUNDED payments qualify, and there is no client-side route — end users can't refund themselves.

Revoke whatever the payment granted before you refund: refunds you initiate don't fire a trigger back into your system.

Read the documentation

Can my users pay from a bank account?

Yes — pass ACH_DIRECT_DEBIT in supportedPaymentMethods when creating the payment, and the Stripe Payment Element offers a US bank account option next to cards. ACH works for US bank accounts in USD only, and settles asynchronously: the payment sits in PROCESSING for a few business days before completing or failing, so grant access from the PAYMENT_COMPLETED trigger, not the checkout response.

Read the documentation

What's the difference between a payment preview and a payment?

A preview is read-only: it computes subtotal, tax, and total with no side effects, so call it freely as the user changes quantities, addresses, or coupons on a cart page. Creating a payment is the write step — it persists the payment and creates the Stripe PaymentIntent ready to confirm — so call it once, when the user clicks Pay.

Read the documentation

How is sales tax calculated on payments?

Give each line item a Stripe tax code — like txcd_10000000 for digital goods or txcd_99999999 for general goods — and include the customer's address; Forte computes the tax and returns subtotal, tax, and total. Tax is always exclusive (added on top of the unit price), and omitting the address skips tax entirely.

Use txcd_92010001 for shipping lines so regions that tax shipping differently are handled correctly.

Read the documentation

What do the payment states mean?

DRAFT is created but not yet confirmed by the customer — unconfirmed drafts are cancelled automatically after 24 hours. PROCESSING means the charge is settling (ACH can stay here for days). COMPLETED means the money cleared, FAILED means it didn't, and CANCELLED means it was called off. PARTIALLY_REFUNDED means some of the charge was returned and the rest is still refundable; REFUNDED means the full amount was returned.

Read the documentation

How do I get notified when a payment completes or fails?

Create a payment trigger in your project settings pointing at a path on one of your services. Forte POSTs to it on PAYMENT_COMPLETED, PAYMENT_FAILED, and PAYMENT_REFUNDED with the user ID, payment ID, and state — verify the X-Forte-Trusted: 1 header and make handling idempotent, since failed deliveries are retried up to 5 times at 60-second intervals.

Read the documentation

What test cards can I use for payments?

In a sandbox project every payment runs through Stripe's test mode, so Stripe's published test cards all work — successful charges, declines, insufficient funds, 3D Secure challenges, and more. For ACH, Stripe's test bank account (routing 110000000, account 000123456789) simulates a successful debit, with other numbers for failures and microdeposits.

Read the documentation

Why am I getting PAYMENTS_REQUIRE_APPROVED_COMPLIANCE?

Live projects can only take real payments after your account's compliance registration reaches the APPROVED state — until then, creating payments or previews is rejected with this error. Complete the registration from the console's Compliance page, or build against a sandbox project in the meantime: sandbox bypasses the gate and charges Stripe test mode.

Read the documentation