# Stripe Connect

# Stripe Connect

Stripe Connect permette a ogni azienda di ricevere payout sul proprio account Stripe mentre la piattaforma trattiene una commissione.

## Collegare un account

1. Vai su **Impostazioni azienda** → **Payments** → account Stripe (`/companies/{company}/stripe-accounts`).
2. Clicca **Onboard** (`POST /companies/{company}/stripe/onboard`) — redirige al flusso di onboarding Stripe.
3. Stripe torna su `stripe-accounts/{stripeAccount}/refresh`; la riga account salva `stripe_account_id`, `type`, `country` ed `email`. L'azione **Sync** (`POST stripe-accounts/{stripeAccount}/sync`) ri-scarica lo stato dell'account.

## Payout & commissioni

- I pagamenti sono **destination charge**: `transfer_data.destination` = account dell'azienda, `application_fee_amount` = fee flat + percentuale del package. I rimborsi passano `refund_application_fee` così la fee piattaforma viene restituita proporzionalmente.
- `app:stripe-sync-payouts` (giornaliero 03:15) sincronizza i totali pagati dalla storia payout Stripe; ogni riga `Financial` registra `payout_id` e `paid_out_at`.
- `app:stripe-sync-commissions` (giornaliero 03:00) riconcilia le fee Stripe totali (ciò che Stripe addebita alla piattaforma) per account connesso.

## Webhook

Tre endpoint pubblici — niente sessione/CSRF, verificati da firma Stripe:

- `POST /stripe/webhook` — payment intent, rimborsi, completamento checkout.
- `POST /stripe/connect-webhook` — eventi account connessi.
- `POST /stripe/billing-webhook` — ciclo di vita abbonamenti.

Tutti rate-limited dal limiter `stripe-webhook`: **1000 req/min per IP** (generoso apposta — Stripe riprova su 5xx e un checkout produce più eventi). Gli eventi bloccati in `processing_at` da oltre 5 minuti vengono recuperati ogni ora (`app:stripe-reap-stale-webhook-events`).

## Permessi

- `stripeaccounts.view` — vede gli account connessi (owner + admin).
- `stripeaccounts.create` / `stripeaccounts.update` — onboard, modifica e sync (owner di default).
- I pannelli embedded controllano inoltre `companies.update` / la policy `view` dell'account.


---
> Source: https://placeful-app.com/docs/companies/stripe-connect
