Owner e admin. Multipart com o campo `file`: `.xlsx` ou `.csv`, reconhecidos pelo conteúdo (não pela extensão). Até 5 MB, 5.000 linhas de dados e 100 colunas; `.xls`, `.xlsm` (mesmo renomeado), XLSX que descompacta acima de 50 MB (ou com o ZIP inconsistente) e leitura acima de 30 s (`reason: readTimeout`) são recusados. Fórmulas valem pelo valor calculado guardado no arquivo (nunca são avaliadas).
O arquivo original fica guardado no armazenamento privado como cópia de segurança (sem expirar; baixável por owner e admin em `GET /api/members/imports/{id}/file`). A análise traz as abas (`sheets`), a codificação e o separador do CSV, a linha de cabeçalho detectada (`headerRow`, 1 = primeira linha; `headerDetected: false` quando nenhuma linha pareceu cabeçalho), as primeiras linhas cruas (`rawRows`, para escolher outra) e as colunas: `index` (0 = coluna A), `name` (com "(col. N)" quando o nome se repete), os 3 primeiros valores, a sugestão de destino (`suggestion.target`, `confidence` `high` ou `low`; consentimento, tags e grupos nunca são sugeridos), o tipo que um campo novo teria (`inferredType`) e até 50 valores distintos.
Nada é enviado a serviço externo para sugerir. A importação nasce `ANALYZED` e vira `ABANDONED` se não for confirmada em 24 h.
**Comunidade suspensa pela Memberfy** (F-86): 403 com `errors`, `code: COMMUNITY_SUSPENDED` e o motivo (em `message` e em `reason`) para owner, admin, moderador e financeiro; nada é lido nem guardado.