Autorrelato de transferência interna: o participante avisa ao BC um pagamento que ele liquidou por dentro, sem passar pelo SPI.
Versão 1.1. É o chamado book transfer. Independe de pacs.008 e
pacs.002, e a resposta é uma Isox.Camt025.
TxSts.Sts tem valor único ("ACCC") e fica fixo: só se reporta o que
já foi liquidado.
Três regras da planilha que o XSD não expressa
Validadas em encode/3:
cdtr_acct_proxy, a chave Pix, é obrigatório quandolcl_instrmé"DICT","QRDN","QRES","APDN","APES"ou"INIC", e proibido quando é"MANU"ou"AUTO".cdtr_acct_typenunca pode ser"SLRY", porque conta-salário não recebe pagamento. O XSD aceita porque reusa o mesmo enum de cinco opções para os dois lados.instr_idpresente significa que a transação reportada é uma devolução, e devolução exigelcl_instrmigual a"MANU".
Prazo e indicador de nível de serviço
O Manual de Tempos pede 99% dos reportes em até 300 segundos. Isso é percentil, não limite por mensagem: reporte atrasado continua sendo aceito. O prazo que é regra são os 30 dias.
Lote
TrckrStsAndTx/Tx é ilimitado no schema. encode/3 aceita uma mensagem
ou uma lista, e decode/1 devolve uma struct ou uma lista.
Summary
Functions
Decodifica um XML de trck.002 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um Tx (lote), para uma lista de structs.
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista de mensagens (lote: vira vários
Tx na mesma Document).
Types
@type t() :: %Isox.Trck002{ cdtr_acct_id: term(), cdtr_acct_issr: term(), cdtr_acct_proxy: term(), cdtr_acct_type: term(), cdtr_agt_ispb: term(), cdtr_cpf_cnpj: term(), created_at: term(), dbtr_acct_id: term(), dbtr_acct_issr: term(), dbtr_acct_type: term(), dbtr_agt_ispb: term(), dbtr_cpf_cnpj: term(), end_to_end_id: term(), instr_id: term(), lcl_instrm: term(), msg_id: term(), pmt_scnro_prtry: term(), reqd_exctn_dt: term(), value: term() }
@type version() :: :v1_1
Functions
Decodifica um XML de trck.002 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um Tx (lote), para uma lista de structs.
@spec encode(t() | [t(), ...], Isox.AppHdr.t(), version()) :: {:ok, binary()} | {:error, String.t()}
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista de mensagens (lote: vira vários
Tx na mesma Document).
msg_id/created_at são de GrpHdr (uma vez por mensagem XML). Em
lote, têm que ser iguais em todos os itens da lista.