Skip to main content
Instead of waiting for customers to self-register through the portal, you can import your existing customer base in bulk using an XLSX spreadsheet. kycert validates every row before committing anything, shows you a full preview of what will succeed and what needs fixing, then automatically queues bureau KYC checks for each imported customer — no manual triggering required.

Limits

kycert enforces the following limits on every import:
LimitValue
Maximum rows per batch500 rows
Maximum file size5 MB
Supported format.xlsx (Microsoft Excel)
If your spreadsheet exceeds 500 rows, split it into multiple files and import each batch separately. kycert processes each batch independently and tracks progress per batch.

Spreadsheet format

Your spreadsheet must include the three required columns listed below. All other columns are optional but recommended for a complete KYC record. kycert recognizes common column name variations and aliases, so you do not need to rename your existing spreadsheet headers exactly — as long as the header is recognizable, kycert maps it correctly.

Required columns

ColumnAccepted header namesDescription
tipotipo, tipo*, typeRegistration type: pf for individuals or pj for companies.
nome_razao_socialnome, nome_razao_social, razao_social, nome completo, razão socialFull name (individual) or corporate name (company). Minimum 2 characters.
cpf_cnpjcpf_cnpj, cpf, cnpj, documento, cpf/cnpjCPF for individuals (11 digits) or CNPJ for companies (14 digits). Masks are stripped automatically.

Optional columns

These fields enrich the customer record and are used in bureau KYC checks. Providing them upfront reduces the chance of a NO_DATA result from verification sources.
ColumnAccepted header namesNotes
emailemail, e-mailStandard email format.
telefonetelefone, celular, phone, foneNational or international format. Minimum 10 digits after stripping non-numeric characters.
data_nascimentodata_nascimento, nascimento, data de nascimento, dt_nascimentoPF only. Format: DD/MM/AAAA or AAAA-MM-DD. Required for individuals.
nacionalidadenacionalidadeCountry of nationality.
nome_maenome_mae, mae, mãe, nome da mãeMother’s full name (PF).
peppep, politicamente expostotrue or false.
profissaoprofissao, profissão, ocupacao, ocupaçãoOccupation or profession (PF).
renda_mensalrenda_mensal, renda, renda mensalDeclared monthly income (PF), numeric.
pais_residenciapais_residencia, país de residênciaCountry of residence.
nome_fantasianome_fantasia, nome fantasiaTrade name (PJ only).
cnaecnaePrimary CNAE activity code (PJ only).
faturamento_anualfaturamento_anual, faturamento anual, faturamentoAnnual revenue (PJ only), numeric.

Import process

1

Navigate to Customers → Import

In your kycert dashboard sidebar, go to Customers, then select Import. This opens the bulk import panel.
2

Download the template spreadsheet

Click Download Template to get an XLSX file with the correct column headers already in place. Filling in the template is the fastest way to avoid header-mapping errors. The template includes one example row showing the expected formats for each field.
3

Fill in your spreadsheet and save as .xlsx

Populate your spreadsheet with customer data. Use pf or pj in the tipo column for each row. Dates should be in DD/MM/AAAA or AAAA-MM-DD format. Save the file in .xlsx format before uploading — .csv and .xls formats are not accepted.
4

Upload the file — kycert validates each row

Drag and drop your .xlsx file onto the upload area, or click Choose File to browse. kycert reads every row immediately and runs full validation, including CPF/CNPJ check digit verification, email format checks, and duplicate detection. A preview table appears showing the status of each row.
5

Review the validation preview and fix errors

The preview table shows each row with one of three statuses: valid (ready to import), duplicate (CPF/CNPJ already exists in your account), or error (a validation rule failed). For each error row, kycert displays the specific problem so you know exactly what to fix. You can either fix your spreadsheet and re-upload, or proceed and skip the invalid rows — valid rows are always imported regardless.
6

Confirm the import

Click Confirm Import to finalize. kycert creates the customer records for all valid rows and, if bureau is enabled on your account, automatically queues a bureau KYC run for each customer using your default KYC template. You do not need to trigger bureau checks manually.

Validation rules

kycert applies the following checks to every row during the preview step. Rows that fail any required check are flagged as error and skipped on import unless you fix them.

CPF format and check digit

kycert validates both the format (11 digits) and the mathematical check digit of every CPF. Sequences of repeated digits (e.g., 111.111.111-11) are also rejected as invalid.

CNPJ format and check digit

CNPJ values are validated for length (14 digits) and check digit correctness. The new alphanumeric CNPJ format is also supported.

Email format

Each email address is validated against standard RFC format. Rows with malformed email addresses are flagged but can still be imported if you choose to proceed with the warning.

Phone number format

Phone numbers must contain at least 10 digits after stripping all non-numeric characters. Both national (e.g., 11987654321) and international (e.g., +5511987654321) formats are accepted.

Birth date (PF)

For individual (pf) rows, data_nascimento is required. kycert accepts DD/MM/AAAA and AAAA-MM-DD formats and rejects unparseable values.

Duplicate detection

kycert checks whether each CPF or CNPJ already exists in your account using cryptographic hashing. Duplicates are flagged with the ID of the existing customer record so you can review them before deciding to skip.

Monitoring the import

After confirming, go to Customers → Import Batches to track progress. Each batch entry shows:
FieldDescription
Total rowsTotal number of data rows in the uploaded file.
ProcessedRows fully processed (customer created and bureau queued).
ErrorsRows that could not be processed due to validation failures.
DuplicatesRows skipped because the CPF/CNPJ already existed.
Bureau done / totalBureau KYC checks completed out of total queued for the batch.
StatusOverall batch status: processing, completed, partial_error, or failed.
Bureau runs execute in the background and complete asynchronously. Results appear in the Customers list and the Analysis Queue as they come in — you do not need to keep the import page open.

Bureau runs on import

When bureau KYC is enabled on your account, kycert automatically triggers a KYC run for every valid imported customer using your configured default template (one template for PF customers, one for PJ). You can review or change which template is used as the default in Settings → Bureau → Default Templates before importing. Bureau runs execute up to three checks in parallel per batch, then process the remaining queue sequentially. Results are available in the Customers list and Analysis Queue as each run completes. If your monthly bureau credit quota is reached mid-import, kycert’s behavior depends on your Settings → Bureau → Quota Exceeded setting: by default, bureau runs that exceed quota are halted (customer records are still created, but no bureau check is queued).
Imported customers do not go through the self-registration portal flow. They are created directly using the data in your spreadsheet, bypassing email/phone OTP verification and the PEP self-declaration wizard. Make sure your data is complete and accurate before confirming an import, and that your internal process for obtaining customer consent complies with your BCB 3.978 obligations.
Importing rows with CPFs or CNPJs that already exist in your account will be detected and skipped automatically. kycert uses cryptographic hashing to identify duplicates even across separate re-import attempts of the same file, so re-uploading a spreadsheet after fixing errors will not create duplicate customer records.