Skip to main content

SPED ECD Mapping Reference

Reference for SPED Escrituracao Contabil Digital (ECD) export, per IN RFB 2.003/2021.

Registro Map

RegistroBlockDescriptionGL Source
00000File header (company, period, CNPJ)SPEDExportConfig
I010IIdentification (IND_ESC: G/R/A/B)Config indEsc
I030IOpening term (book identification)Config + metadata
I050IChart of Accounts entriesgl_accounts (ACTIVE, with sped_natura)
I051IReferential Chart mappinggl_accounts.sped_referencial_code
I155IMonthly balances per accountgl_account_balances by period
I200IJournal entry headersgl_journal_entries (POSTED only)
I250IJournal entry line itemsgl_journal_lines
99999File close (total line count)Computed

SPED Natura Codes (COD_NAT)

Maps to gl_accounts.sped_natura:

CodeDescriptionAccount Types
01Ativo (Assets)ASSET
02Passivo (Liabilities)LIABILITY
03Patrimonio Liquido (Equity)EQUITY
04Contas de Resultado (Result)REVENUE, EXPENSE
05Compensacao (Offsetting)Special accounts
09Outros (Other)Uncategorized

Default mapping in ACCOUNT_TYPE_SPED_NATURA:

  • ASSET -> '01', LIABILITY -> '02', EQUITY -> '03', REVENUE -> '04', EXPENSE -> '04'

File Format

  • Encoding: ISO-8859-1 (latin1)
  • Delimiter: Pipe (|)
  • Line terminator: |\r\n
  • Date format: DDMMYYYY (e.g., 15012026 for Jan 15, 2026)
  • Number format: Brazilian notation with comma decimal (e.g., 1234,56)
  • Hash: SHA-256 of the entire file buffer

Pre-Export Validation

The validateBeforeExport() function checks:

CheckRegistroFailure Condition
CNPJ validity0000Invalid check digits
Balance verificationI155Any period has discrepancies
Unmapped accountsI050ACTIVE non-header account with NULL sped_natura
Balance sheet equationJ100Assets != Liabilities + Equity

CNPJ Validation

Full check-digit algorithm implemented in validateCNPJ():

  • Strip non-digits, must be exactly 14 chars
  • Reject uniform patterns (all same digit)
  • Calculate first check digit with weights [5,4,3,2,9,8,7,6,5,4,3,2]
  • Calculate second check digit with weights [6,5,4,3,2,9,8,7,6,5,4,3,2]

Account Indicators

FieldValues
IND_CTA (I050)S = Sintetica (header), A = Analitica (detail)
IND_DC_INI/FIN (I155)D = Devedor (debit balance), C = Credor (credit balance)
IND_DC (I250)D = Debito, C = Credito
IND_LCTO (I200)N = Normal, E = Estorno (reversal), X = Extemporaneo

Data Flow

gl_accounts ──────> I050 (Chart of Accounts)
└─> I051 (Referential mapping, if sped_referencial_code set)

gl_account_balances ──> I155 (Monthly balances per period)

gl_journal_entries ──> I200 (Entry headers, POSTED only)
└─ gl_journal_lines ──> I250 (Line items with D/C indicator)