From d725cb9676f5e20690d359bd03e043b741e8fc7a Mon Sep 17 00:00:00 2001 From: Ben Stokes Date: Fri, 4 Sep 2026 17:41:58 +0100 Subject: [PATCH] fix: display of account status chips for connected accounts --- apps/api/src/modules/Account.ts | 14 +++++++++++--- .../util/connected-account-display.ts | 11 +++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/api/src/modules/Account.ts b/apps/api/src/modules/Account.ts index 0367c71..5eeef99 100644 --- a/apps/api/src/modules/Account.ts +++ b/apps/api/src/modules/Account.ts @@ -559,10 +559,18 @@ export class AccountModule { }, }; case 'in_review': - // pending_verification[0] exists ⇒ array is non-empty - // OR person verification is pending (handled client-side for chips; - // list filter focuses on soft-review pending_verification). + // Lite-review flags only. KYC-due / payouts-off accounts are Restricted + // even when pending_verification also lists the document. return { + payouts_enabled: true, + 'requirements.disabled_reason': { + operator: QueryOperators['not-in'], + value: rejectedReasons, + }, + 'requirements.currently_due.0': { + operator: QueryOperators.exists, + value: false, + }, 'requirements.pending_verification.0': { operator: QueryOperators.exists, value: true, diff --git a/apps/web/src/app/features/account/connected-accounts/util/connected-account-display.ts b/apps/web/src/app/features/account/connected-accounts/util/connected-account-display.ts index dcc340a..8bfbaba 100644 --- a/apps/web/src/app/features/account/connected-accounts/util/connected-account-display.ts +++ b/apps/web/src/app/features/account/connected-accounts/util/connected-account-display.ts @@ -7,22 +7,17 @@ export function GetAccountStatus(account: Account): string { return 'rejected'; } - // Document submitted / provider processing — Stripe "In review" - if (account.individual?.verification?.status === 'pending') { - return 'in_review'; - } - const currentlyDue = account.requirements?.currently_due ?? []; - if (currentlyDue.length > 0) { + if (currentlyDue.length > 0 || !account.payouts_enabled) { return 'restricted'; } - // Soft lite-review signals (duplicates, country mismatch, etc.) + // Soft lite-review only — payouts still on, operator can dismiss or reject if ((account.requirements?.pending_verification?.length ?? 0) > 0) { return 'in_review'; } - return account.payouts_enabled ? 'enabled' : 'restricted'; + return 'enabled'; } export function FormatPayoutSchedule(account: Account): string {