Stripe Connect lets each Neural Draft project accept payments to its own Stripe account — payouts land directly in the project owner’s bank, your brand stays on the receipts. Neural Draft acts as the Connect platform and takes a small 5% application fee on each transaction by default (configurable on your platform).Documentation Index
Fetch the complete documentation index at: https://docs.neuraldraft.io/llms.txt
Use this file to discover all available pages before exploring further.
What you get out of the box
- One-click Express onboarding from the project admin (or via API).
- Automatic
account.updatedwebhook handling —charges_enabledandpayouts_enabledflags stay in sync. - Direct charges with platform fees — your customers pay the project’s Stripe account; Neural Draft’s cut transfers automatically.
- Refund flow that re-credits both the customer and reverses the application fee proportionally.
- A “Login to Stripe Dashboard” link your project owners can use to view their balance / payouts without leaving Neural Draft.
One-time platform setup
You only do this once, on the platform’s Stripe account.Enable Connect
In the Stripe Dashboard, go to
Connect → Settings
and enable Express accounts. Set your platform name, branding and
support email — these appear on connected accounts’ onboarding flow.
Set the application fee policy
Decide whether you want Neural Draft to take a percentage of each
transaction. The platform default is 5% — change it via the
STRIPE_CONNECT_APPLICATION_FEE_PERCENT env var (or set to 0 to
disable the cut entirely).Register the Connect webhook
In the Stripe Dashboard:
Webhooks → Add endpoint.
- Endpoint URL:
https://api.neuraldraft.io/webhooks/stripe-connect - Listen to: events on
Connected accounts(not “Your account”) - Events:
account.updated,account.application.deauthorized,payout.paid,payout.failed
Per-project flow
Once the platform is set up, each Neural Draft project goes through the same onboarding regardless of admin (Vue SPA, Cursor, Claude Code, your custom UI):url you redirect the project owner to.
Stripe walks them through identity verification, bank details, and tax
forms. When they land on return_url, the account is provisioned —
POST /v1/connect/refresh confirms readiness.
How charges work
Once a project is connected, every product order or paid booking is automatically routed through Connect — there is no separate setup. The platform calls Stripe with:stripe_account: <connected account id>— direct chargepayment_intent_data.application_fee_amount: <5% of total>— the platform’s cut, computed on the order subtotal.
STRIPE_CONNECT_APPLICATION_FEE_PERCENT=0, no fee is taken — the
project keeps 100%.
Disconnect
CallPOST /v1/connect/disconnect to deauthorize the connected account
and clear all stripe_connect_* fields on the project. Future payment
attempts will then go to the platform’s main Stripe account (or fail,
depending on how your products page is configured).
Local development
For testing, point Stripe CLI at the connect webhook:STRIPE_CONNECT_WEBHOOK_SECRET
in .env. Create a test connected account via:
acct_… id into the project’s
stripe_connect_account_id field for local-only flow testing.
Troubleshooting
| Symptom | Likely cause |
|---|---|
400 invalid_request_error: Application fee amount cannot be greater than the charge total | Your STRIPE_CONNECT_APPLICATION_FEE_PERCENT is set above 100, or the order total is rounded down to 0. |
| Webhooks arrive but tenant fields don’t update | STRIPE_CONNECT_WEBHOOK_SECRET is missing or stale — webhook signature fails. |
| Onboarding link 404s on Stripe | Account has been deauthorized; call POST /v1/connect/onboarding again to create a fresh one. |