-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path2.0.0.yml
5090 lines (4919 loc) · 262 KB
/
2.0.0.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
openapi: 3.0.0
info:
title: API Automatic Payments - Open Finance Brasil
description: |
API de Iniciação de Pagamentos automáticos, responsável por viabilizar as operações de iniciação de pagamentos automáticos (Pix automático e Transferências Inteligentes) para o Open Finance Brasil.
Para cada uma das formas de pagamento previstas é necessário obter prévio consentimento do cliente através dos endpoints dedicados ao consentimento nesta API.
# Orientações
- `CONTA`, referente às instituições detentoras de conta participantes do Open Finance Brasil;
- `PAGTO`, referente às instituições iniciadoras de pagamento participantes do Open Finance Brasil.
Os tokens utilizados para consumo nos endpoints de consentimentos devem possuir o scope recurring-payments e os endpoints de pagamentos recorrentes devem possuir os scopes openid e recurring-payments.
Esta API não requer a implementação de permissions para sua utilização.
Todas as requisições e respostas devem ser assinadas seguindo o protocolo estabelecido na sessão Assinaturas do guia de segurança.
## Orientações gerais sobre os consentimentos de pagamentos automáticos
- Duração e reutilização do consentimento: A utilização das credenciais geradas a partir de uma autorização de um consentimento recorrente deve durar até que o consentimento recorrente atinja o fim do seu ciclo de vida, conforme detalhado na sua [máquina de estados](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/198410647).
- Credenciais: As credenciais (authorization_code) geradas na autorização do consentimento devem ser utilizadas para criação dos pagamentos subsequentes utilizando o mecanismo de refresh, caso necessário. Maiores informações através do link [[PT] Open Finance Brasil Financial-grade API Security Profile 1.0 Implementers Draft 3 - Área do Desenvolvedor -Open Finance Brasil - Área do Desenvolvedor (atlassian.net)](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/82051180/PT+Open+Finance+Brasil+Financial-grade+API+Security+Profile+1.0+Implementers+Draft+3#7.2.2.-Servidor-de-autorização)
## Regras do arranjo Pix
A implementação e o uso da API de Pagamentos Automáticos (Pix) devem seguir as regras do arranjo Pix do Banco Central, que podem ser encontradas no link abaixo:
[Banco Central do Brasil](https://www.bcb.gov.br/estabilidadefinanceira/pix?modalAberto=regulamentacao_pix)
## Assinatura de payloads
No contexto da API de Pagamentos Automáticos, os payloads de mensagem que trafegam tanto por parte da instituição iniciadora de transação de pagamento quanto por parte da instituição detentora de conta devem estar assinados.
Para o processo de assinatura destes payloads, as instituições devem seguir as especificações de segurança publicadas no Portal do desenvolvedor.
## Controle de acesso
- Os endpoints de consulta de pagamentos GET /pix/recurring-payments/{recurringPaymentId} e GET /pix/recurring-payments devem suportar acesso a partir de access_token emitido por meio de um grant_type do tipo client credentials, como opção do uso do token vinculado ao consentimento (hybrid flow).
- Para evitar vazamento de informação, a detentora deve validar que o pagamento consultado pertence ao ClientId que o criou e, caso haja divergências, retorne um erro HTTP 400.
## Aprovações de múltipla alçada
Todas as aprovações devem ser realizadas até a data/hora limite suportada pela detentora e em tempo hábil para realizar o primeiro pagamento.
## Validações da edição do consentimento recorrente para o produto Pix Automático
- Para permitir a edição dos campos de um consentimento na iniciadora sem que se faça necessário o redirecionamento para o ambiente da detentora de conta, é necessário o envio de indicadores de risco.
Esta medida visa proporcionar à detentora de conta as informações necessárias para decidir sobre os ajustes no consentimento de forma segura.
- Além disso, para permitir o correto entendimento da transação pela detentora, o endpoint dedicado a isso (PATCH /recurring-consents/{recurringConsentId}) possui características de obrigatoriedade de campos, na sua requisição, diferentes do endpoint de criação de consentimentos. Durante a edição do consentimento, a instituição iniciadora deverá informar todos os campos que foram marcados como obrigatórios e também os campos que não deseja alterar(enviando o valor atual do campo), também podendo altera-los, se assim desejar.
- Caso a requisição seja para tornar o prazo de expiração do consentimento e/ou o valor máximo do pagamento variável indeterminados, estes devem ser omitidos da requisição, e todos os outros campos devem ser informados.
- Caso o prazo de expiração e/ou o valor máximo do pagamento variável já sejam indeterminados, estes não devem ser informados, mantendo seu valor atual.
- Detalhes dos cenários e campos que podem ser editados podem ser encontrados na página de [Edição do consentimento - [SV] Pagamentos Automáticos](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/718405977)
- Se a edição do consentimento for realizada via iniciador (chamando o endpoint PATCH /recurring-consents/{recurringConsentId}) o detentor deverá validar se o usuário solicitante possui poderes plenos sobre o consentimento, isso significa que a alteração realizada por ele não precisará passar por outros aprovadores.
## Validações para pagamentos recorrentes
- Caso o usuário pagador tenha agendado recorrências para os dias 29, 30 ou 31 de cada mês e o dia previsto não exista no respectivo mês, o iniciador deve enviar a ordem de pagamento para liquidação com o endToEndId representando o dia seguinte à data prevista para a liquidação.
Se identificado pelo detentor que a data enviada no endToEndId corresponde a um dia inexistente, ele deve rejeitar o pagamento
- Caso a data de liquidação do pagamento seja superior ao prazo de expiração do consentimento, a solicitação deve ser rejeitada com o motivo FORA_PRAZO_PERMITIDO e, no detalhe, uma descrição da causa.
## Validações
Durante a jornada de iniciação de pagamento, diferentes validações são necessárias pela instituição detentora de conta e devem ocorrer conforme a seguir:
1. **Validações na criação do consentimento de longa duração (_POST /recurring-consents_)**
1.1 **Orientações Iniciais**
 1.1.1 Não devem ser retornadas na resposta deste endpoint informações associadas ao usuário/cliente (ex. insuficiência de saldo, conta inexistente/bloqueada).
 1.1.2 Não devem ser realizadas validações de informações sobre o usuário/cliente durante a criação do consentimento.
1.2 **Casos de erro relacionados às permissões de segurança para acesso à API (ex. certificado, access_token, jwt, assinatura)**
 1.2.1 Validação de Certificado: Valida utilização de certificado correto durante processo de DCR - HTTP Code 401 (INVALID_CLIENT);
 1.2.2 Validação de Access_Token: Verifica se Access_Token utilizado está correto - HTTP Code 401 (UNAUTHORIZED);
 1.2.3 Validação de assinatura da mensagem: Valida se assinatura das mensagens enviadas está correta – HTTP Code 400 (BAD_SIGNATURE);
 1.2.4 Validação de Claims (exceto data);
 1.2.4.1 Valida se dados (aud, iss, iat e jti) são válidos - HTTP status code 403 – (INVALID_CLIENT);
 1.2.4.2 Valida reuso de jti - HTTP Code 403 (INVALID_CLIENT).
1.3 **Casos de erro sintáticos e semânticos, previstos com retorno HTTP Code 422 - Unprocessable Entity (detalhamento adicional na documentação técnica da API):**
 1.3.1 **Sintáticos**
 1.3.1.1 Envio de campos obrigatórios: Valida se todos os campos obrigatórios foram informados (PARAMETRO_NAO_INFORMADO);
 1.3.1.2 Formatação de parâmetros: Valida se parâmetros informados obedecem a formatação especificada (PARAMETRO_INVALIDO).
 1.3.2 **Semânticos**
 1.3.2.1 Data de pagamento: Valida se a data de pagamento enviada é válida para a forma de pagamento selecionada (DATA_PAGAMENTO_INVALIDA);
 1.3.2.2 Detalhes do pagamento: Valida se determinado parâmetro informado obedece às regras de negócio (DETALHE_PAGAMENTO_INVALIDO);
 1.3.2.3 Demais validações não explicitamente informadas (ex. suspeita de fraude): (NAO_INFORMADO);
 1.3.2.4 Idempotência: Valida se há divergência entre chave de idempotência e informações enviadas (ERRO_IDEMPOTENCIA);
 1.3.2.5 Funcionalidade não habilitada: A detentora de conta não oferece o serviço nessa modalidade (FUNCIONALIDADE_NAO_HABILITADA).
2. **Demais validações executadas durante o processamento assíncrono do consentimento pela detentora poderão ser consultados pela iniciadora através do endpoint GET /recurring-consents/{recurringConsentId} previstos com retorno HTTP Code 200 – OK com status REJECTED e rejectionReason conforme abaixo:**
2.1 **Validações durante o processamento assíncrono do consentimento**
 2.1.1 Falha de infraestrutura: Ocorreu algum erro interno na detentora durante processamento da criação do consentimento (FALHA_INFRAESTRUTURA);
 2.1.2 Tempo de autorização expirado: O usuário não confirmou o consentimento e o mesmo expirou (TEMPO_EXPIRADO_AUTORIZACAO);
 2.1.3 Rejeitado pelo usuário: O usuário explicitamente rejeitou a autorização do consentimento (REJEITADO_USUARIO);
 2.1.4 Mesma conta origem/destino: A conta indicada pelo usuário para recebimento é a mesma selecionada para o pagamento (CONTAS_ORIGEM_DESTINO_IGUAIS);
 2.1.5 Tipo de conta inválida: A conta indicada não permite operações de pagamento (CONTA_NAO_PERMITE_PAGAMENTO);
 2.1.6 Saldo do usuário: Valida se a conta selecionada possui saldo suficiente para realizar o pagamento (SALDO_INSUFICIENTE);
 2.1.7 Limites da transação: Valida se o valor ultrapassa o limite estabelecido [na instituição/no arranjo/outro] para permitir a realização de transações pelo cliente (VALOR_ACIMA_LIMITE);
 2.1.8 Autenticação divergente: O usuário autenticado no ambiente da detentora não é o mesmo usuário autenticado no ambiente da iniciadora e que criou o consentimento. (AUTENTICACAO _DIVERGENTE);
3. **Demais validações executadas durante o processamento assíncrono do consentimento pela detentora, poderão ser consultados pela iniciadora através dos endpoints GET /recurring-consents/{recurringConsentId} previstos com retorno HTTP Code 200 - OK com status REVOKED e revocationReason conforme abaixo (detalhamento adicional na documentação técnica da API).**
3.1 **Demais validações durante o processamento assíncrono:**
 3.1.1 Nao informado: Validações não explicitamente informadas (ex. suspeita de fraude) (NAO_INFORMADO);
 3.1.2 Revogado pelo recebedor: O usuário recebedor solicitou explicitamente ao iniciador a revogação do consentimento (ex: término de contrato) (REVOGADO_RECEBEDOR);
 3.1.3 Revogado pelo pagador: O usuário pagador solicitou explicitamente a revogação do consentimento (REVOGADO_USUARIO).
4. **Validações na criação do pagamento - Síncrono (_POST /pix/recurring-payments_)**
4.1 **Casos de erro relacionados às permissões de segurança para acesso à API (ex. certificado, access_token, jwt, assinatura)**
 4.1.1 Validação de Certificado: Valida utilização de certificado correto durante processo de DCR - HTTP Code 401 (INVALID_CLIENT);
 4.1.2 Validação de Access_Token: Verifica se Access_Token utilizado está correto - HTTP Code 401 (UNAUTHORIZED);
 4.1.3 Validação de assinatura da mensagem: Valida se assinatura das mensagens enviadas está correta – HTTP Code 400 (BAD_SIGNATURE);
 4.1.4 Validação de Claims (exceto data);
 4.1.4.1 Valida se dados (aud, iss, iat e jti) são válidos - HTTP status code 403 – (INVALID_CLIENT);
 4.1.4.2 Valida reuso de jti - HTTP Code 403 (INVALID_CLIENT).
 4.1.5 Detalhe tentativa inválida: Valida se os parâmetros informados condizem com a tentativa original de pagamento (DETALHE_TENTATIVA_INVALIDO).
4.2 **Casos de erro sintáticos e semânticos, previstos com retorno HTTP Code 422 - Unprocessable Entity (detalhamento adicional na documentação técnica da API):**
 4.2.1 Sintáticos
 4.2.1.1 Envio de campos obrigatórios: Valida se todos os campos obrigatórios são informados (PARAMETRO_NAO_INFORMADO);
 4.2.1.2 Formatação de parâmetros: Valida se parâmetros informados obedecem a formatação especificada (PARAMETRO_INVALIDO).
 4.2.2 Semânticos
 4.2.2.1 Saldo do usuário: Valida se a conta selecionada possui saldo suficiente para realizar o pagamento (SALDO_INSUFICIENTE);
 4.2.2.2 Limites da transação: Valida se o valor ultrapassa o limite estabelecido [na instituição (conta ou canal)/no arranjo] para permitir a realização de transações pelo cliente (VALOR_ACIMA_LIMITE);
 4.2.2.3 Valor informado: Valida se valor enviado é válido para o consentimento associado ao pagamento (VALOR_INVALIDO);
 4.2.2.4 Status Consentimento: Valida se o consentimento encontra-se em um dos estados finais “CONSUMED”, “REVOKED” ou “REJECTED" (CONSENTIMENTO_INVALIDO);
 4.2.2.5 Demais validações não explicitamente informadas (ex. suspeita de fraude): (NAO_INFORMADO);
 4.2.2.6 Divergência entre pagamento e consentimento: Valida se dados do pagamento são diferentes dos dados do consentimento (PAGAMENTO_DIVERGENTE_CONSENTIMENTO)
 4.2.2.7 Recusado pela detentora: Valida se pagamento foi recusado pela detentora (PAGAMENTO_RECUSADO_DETENTORA), com a descrição do motivo de recusa;
 4.2.2.8 Detalhes do pagamento: Valida se determinado parâmetro informado obedece as regras de negócio (DETALHE_PAGAMENTO_INVALIDO);
 4.2.2.9 Pagamento recusado no Sistema de Pagamentos Instantâneos (SPI) (PAGAMENTO_RECUSADO_SPI);
 4.2.2.10 Idempotência: Valida se há divergência entre chave de idempotência e informações enviadas (ERRO_IDEMPOTENCIA);
 4.2.2.11 Limite valor excedido por período: Foi atingido o valor limite permitido pelo usuário por um determinado período de tempo no consentimento do pagamento (LIMITE_PERIODO_VALOR_EXCEDIDO);
 4.2.2.12 Limite quantidade excedida por período: A quantidade de cobranças atingiu o limite determinado pelo usuário na criação do consentimento (LIMITE_PERIODO_QUANTIDADE_EXCEDIDO);
 4.2.2.13 Consentimento pendente de autorização: Consentimento em “PARTIALLY_ACCEPTED” aguardando aprovação de múltiplas alçadas (CONSENTIMENTO_PENDENTE_AUTORIZACAO);
 4.2.2.14 Limite global excedido: O consentimento encontra-se autorizado e o valor solicitado para cobrança ultrapassa a faixa de limite global parametrizado pelo usuário durante a criação do consentimento (LIMITE_VALOR_TOTAL_CONSENTIMENTO_EXCEDIDO);
 4.2.2.15 Limite de transação excedido: O consentimento encontra-se autorizado e o valor solicitado para cobrança ultrapassa a faixa de limite de valor por transação parametrizado pelo usuário na criação do consentimento (LIMITE_VALOR_TRANSACAO_CONSENTIMENTO_EXCEDIDO);
 4.2.2.16 Limite de retentativas atingido: Valida se todas as tentativas de liquidação permitidas já foram realizadas (LIMITE_TENTATIVA_EXCEDIDO);
 4.2.2.17 Fora do prazo permitido: A tentativa de agendamento foi realizada fora do horário ou período permitido e não pode ser aceita pela instituição detentora (FORA_PRAZO_PERMITIDO).
5. **Validações na consulta do pagamento (_GET /pix/recurring-payments/{recurringPaymentId}_ e _GET /pix/recurring-payments_)**
5.1 **Casos de erro relacionados às permissões de segurança para acesso à API (ex. certificado, access_token)**
 5.1.1 Validação de Certificado: Valida utilização de certificado correto durante processo de DCR - HTTP Code 401 (INVALID_CLIENT);
 5.1.2 Validações de Access_Token: Verifica se Access_Token utilizado está correto - HTTP Code 401 (UNAUTHORIZED).
6. **Demais validações executadas durante o processamento assíncrono do pagamento pela detentora, poderão ser consultados pela iniciadora através dos endpoints _GET /pix/recurring-payments/{recurringPaymentId}_ e _GET /pix/recurring-payments_ previstos com retorno HTTP Code 200 - OK com status RJCT (Rejected) e rejectionReason conforme abaixo (detalhamento adicional na documentação técnica da API):**
6.1 **Demais validações durante o processamento assíncrono:**
 6.1.1 - Saldo do usuário: Valida se a conta selecionada possui saldo suficiente para realizar o pagamento (SALDO_INSUFICIENTE);
 6.1.2 - Limites da transação: Valida se o valor ultrapassa o limite estabelecido [na instituição (conta ou canal)/no arranjo] para permitir a realização de transações pelo cliente (VALOR_ACIMA_LIMITE);
 6.1.3 - Valor informado: Valida se valor enviado é válido para o consentimento do pagamento (VALOR_INVALIDO);
 6.1.4 - Demais validações não explicitamente informadas (ex. suspeita de fraude): (NAO_INFORMADO);
 6.1.5 - Divergência entre pagamento e consentimento: Valida se dados do pagamento são diferentes dos dados do consentimento (PAGAMENTO_DIVERGENTE_CONSENTIMENTO);
 6.1.6 - Recusado pela detentora: Valida se pagamento foi recusado pela detentora (PAGAMENTO_RECUSADO_DETENTORA), com a descrição do motivo de recusa;
 6.1.7 - Pagamento recusado no Sistema de Pagamentos Instantâneos (SPI) (PAGAMENTO_RECUSADO_SPI);
 6.1.8 - Erro de infraestrutura na consulta ao SPI: Ocorreu uma falha de infraestrutura durante a consulta ao SPI(FALHA_INFRAESTRUTURA_SPI);
 6.1.9 - Erro de infraestrutura na consulta ao ICP: Ocorreu uma falha de infraestrutura durante a consulta ao ICP (FALHA_INFRAESTRUTURA_ICP);
 6.1.10 - Erro de infraestrutura na comunicação com o PSP do recebedor: Ocorreu uma falha de infraestrutura durante a comunicação com o PSP do recebedor (FALHA_INFRAESTRUTURA_PSP_RECEBEDOR);
 6.1.11 - Erro de infraestrutura interno na detentora: Ocorreu uma falha de infraestrutura interna na detentora durante o processamento do pagamento (FALHA_INFRAESTRUTURA_DETENTORA);
 6.1.12 - Status Consentimento: Valida se o consentimento encontra-se em um dos estados finais “CONSUMED”, “REVOKED” ou “REJECTED" (CONSENTIMENTO_INVALIDO);
 6.1.13 - Limite valor excedido por período: Foi atingido o valor limite permitido pelo usuário por um determinado período de tempo no consentimento do pagamento (LIMITE_PERIODO_VALOR_EXCEDIDO);
 6.1.14 - Limite quantidade excedida por período: A quantidade de cobranças atingiu o limite determinado pelo usuário na criação do consentimento (LIMITE_PERIODO_QUANTIDADE_EXCEDIDO);
 6.1.15 - Titularidade Inconsistente: Conta atualmente não associada ao CPF/CNPJ do consentimento de longa duração. Caso a liquidação seja negada pelo PSP Recebedor com erro BE01, cabe a detentora de conta mudar o status do pagamento para RJCT com essa reason (TITULARIDADE_INCONSISTENTE);
 6.1.16 - Consentimento revogado: O pagamento estava associado a um consentimento que foi revogado (CONSENTIMENTO_REVOGADO);
 6.1.17 - Limite global excedido: O consentimento encontrasse autorizado e o valor solicitado para cobrança ultrapassa a faixa de limite global parametrizado pelo usuário durante a criação do consentimento (LIMITE_VALOR_TOTAL_CONSENTIMENTO_EXCEDIDO);
 6.1.18 - Limite de transação excedido: O consentimento encontra-se autorizado e o valor solicitado para cobrança ultrapassa a faixa de limite de valor por transação parametrizado pelo usuário na criação do consentimento (LIMITE_VALOR_TRANSACAO_CONSENTIMENTO_EXCEDIDO);
 6.1.19 Limite de retentativas atingido: Valida se todas as tentativas de liquidação permitidas já foram realizadas (LIMITE_TENTATIVA_EXCEDIDO);
 6.1.20 Fora do prazo permitido: A tentativa de agendamento foi realizada fora do horário ou período permitido e não pode ser aceita pela instituição detentora (FORA_PRAZO_PERMITIDO);
 6.1.21 Detalhe tentativa inválida: Valida se os parâmetros informados condizem com a tentativa original de pagamento (DETALHE_TENTATIVA_INVALIDO);
 6.1.22 Detalhes do pagamento: Valida se determinado parâmetro informado obedece as regras de negócio (DETALHE_PAGAMENTO_INVALIDO).
## Validações antifraude da Transferências Inteligentes
- Afim de garantir a mesma titularidade e aumentar a segurança das transações do produto Transferências Inteligentes, as validações abaixo poderão ser realizadas pela detetora de conta e pela iniciadora, quando localinstrument for igual a DICT ou INIC. A detentora PODE usar a API Consultar Vinculo (DICT API) do arranjo Pix e validar no momento de transação ao menos os atributos abaixo mencionados:
- se o valor dos atributos de fraude abaixo são iguais a 0, de modo a evitar que contas criadas especificamente para uso indevido da Transferências Inteligentes impactem o ecossistema
- OwnerStatistics.Spi.FraudMarkers.ApplicationFrauds.d90
- OwnerStatistics.Spi.FraudMarkers.MuleAccounts.d90
- OwnerStatistics.Spi.FraudMarkers.ScammerAccounts.d90
- OwnerStatistics.Spi.FraudMarkers.OtherFrauds.d90
- OwnerStatistics.Spi.FraudMarkers.UnknownFrauds.d90
## Limites transacionais e crédito pré-aprovado para Transferências inteligentes
- Existem três tipos de limites para o produto Transferências inteligentes
- Crédito pré-aprovado (cheque especial): Caso o cliente possua o produto, poderá utilizá-lo durante as transações associadas ao produto Transferências inteligentes.
- Limite do Pix atrelado à conta do cliente: Limite de transações definido individualmente para cada conta do cliente, conforme regras de dias e horários do arranjo Pix.
- Limites do consentimento: Configurado ou não pelo cliente em momento de criação do consentimento, podendo ser dependente ou não de um período.
- O cálculo do limite periódico disponível ao cliente deve ocorrer da seguinte maneira, considerando os cenários, exemplos e o horário de Brasília:
- Limite Diário (Ex.: R$ 100,00): Este limite controla as transferências realizadas dentro de um único dia, considerando o período das 00:00h até as 23:59h. Por exemplo, se um usuário transferir R$ 50,00 às 10:00h, ele ainda terá R$ 50,00 disponíveis para transferências até a meia-noite do mesmo dia;
- Limite Semanal (Ex.: R$ 1.000,00): O limite semanal abrange o período de uma semana inteira, começando às 00:00h de domingo e terminando às 23:59h do sábado. Por exemplo, se um usuário transferir R$ 200,00 na terça-feira e R$ 500,00 na quinta-feira, ele ainda poderá transferir até R$ 300,00 até o final do sábado;
- Limite Mensal (Ex.: R$ 10.000,00): Este limite mensal é calculado do primeiro ao último dia de cada mês. Por exemplo, em um mês, se o usuário transferir R$ 2.000,00 na primeira semana e R$ 3.000,00 na segunda semana, ele ainda terá R$ 5.000,00 disponíveis para transferências pelo restante do mês;
- Limite Anual (Ex.: R$ 50.000,00): O limite anual conta do primeiro dia de janeiro ao último dia de dezembro. Por exemplo, se um usuário transferir R$ 10.000,00 até março, mais R$ 15.000,00 até junho e mais R$ 20.000,00 até setembro, ele só poderá transferir outros R$ 5.000,00 até o final do ano;
- Esses limites ajudam a gerenciar as transferências de fundos, garantindo que não excedam os montantes estabelecidos para cada período. Cada limite é independente e é recalculado conforme sua respectiva janela de tempo se reinicia. Todos os pagamentos com status diferente de RJCT ou CANC devem ser considerados para o cálculo dos limites do consentimento.
## Sobre a quantidade de consentimentos que podem ser criados
Não há limitações relacionadas a quantidade de consentimentos que podem ser criados entre uma mesma ITP, conta de débito e titularidade. Fica a cargo da instituição iniciadora solicitar, sempre que julgar necessário para atendimento do usuário, a criação de um novo consentimento.
## Sobre o cancelamento de novas tentativas de pagamento para o Pix Automático
Não é permitido ao usuário pagador o cancelamento de uma nova tentativa de pagamento, realizada pelo recebedor, quando autorizado no consentimento (campo “/data/recurringConfiguration/automatic/isRetryAccepted” como “True”) pelo usuário pagador ou quando o Iniciador precisar enviar um novo endToEndId.
Aplica-se tanto para a tentativa intradia quanto para a tentativa em dias subsequentes. É permitido ao recebedor o cancelamento das novas tentativas em dias subsequentes. Aplicam-se as regras de cancelamento da tentativa original, conforme previsto na descrição do endpoint PATCH /pix/recurringPayments Pagamentos que são novas tentativas, intradia ou em dias subsequentes, podem ser identificados pela presença do campo “/data/originalRecurringPaymentId” no recurso.
version: 2.0.0
license:
name: Apache 2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0'
contact:
name: Governança do Open Finance Brasil – Especificações
email: gt-interfaces@openbankingbr.org
url: 'https://openbanking-brasil.github.io/areadesenvolvedor/'
servers:
- url: 'https://api.banco.com.br/open-banking/automatic-payments/v2'
description: Servidor de Produção
- url: 'https://apih.banco.com.br/open-banking/automatic-payments/v2'
description: Servidor de Homologação
tags:
- name: Recurring Consents
description: Métodos para criação e gestão de consentimento
- name: Recurring Payments
description: Métodos para criação e gestão de pagamentos
paths:
/recurring-consents:
post:
tags:
- Recurring Consents
summary: Cria um consentimento para transações de pagamentos.
operationId: automaticPaymentsPostRecurringConsents
description: Método para criação de consentimento de longa duração. Retorna um `recurringConsentId` no status AWAITING_AUTHORISATION.
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/xCustomerUserAgent'
- $ref: '#/components/parameters/xFapiAuthDate'
- $ref: '#/components/parameters/xFapiCustomerIpAddress'
- $ref: '#/components/parameters/xFapiInteractionId'
- $ref: '#/components/parameters/XIdempotencyKey'
requestBody:
content:
application/jwt:
schema:
$ref: '#/components/schemas/CreateRecurringConsent'
description: Payload para criação do consentimento para iniciação do pagamento.
required: true
responses:
'201':
$ref: '#/components/responses/RecurringConsentsPost'
'400':
$ref: '#/components/responses/BadRequestPaymentsConsents'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'406':
$ref: '#/components/responses/NotAcceptable'
'422':
$ref: '#/components/responses/UnprocessableConsents'
'500':
$ref: '#/components/responses/InternalServerError'
'504':
$ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties'
'529':
$ref: '#/components/responses/SiteIsOverloaded'
default:
description: Erro inesperado.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseError'
security:
- OAuth2ClientCredentials:
- recurring-payments
'/recurring-consents/{recurringConsentId}':
get:
tags:
- Recurring Consents
summary: Busca informações de um consentimento.
operationId: automaticPaymentsGetRecurringConsentsConsentId
description: Método para buscar informações sobre um consentimento de longa duração.
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/xCustomerUserAgent'
- $ref: '#/components/parameters/xFapiAuthDate'
- $ref: '#/components/parameters/xFapiCustomerIpAddress'
- $ref: '#/components/parameters/xFapiInteractionId'
- $ref: '#/components/parameters/pathRecurringConsentId'
responses:
'200':
$ref: '#/components/responses/RecurringConsentsConsentId'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'406':
$ref: '#/components/responses/NotAcceptable'
'500':
$ref: '#/components/responses/InternalServerError'
'504':
$ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties'
'529':
$ref: '#/components/responses/SiteIsOverloaded'
default:
description: Erro inesperado.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseError'
security:
- OAuth2ClientCredentials:
- recurring-payments
patch:
tags:
- Recurring Consents
summary: Rejeita, revoga ou edita um consentimento.
operationId: automaticPaymentsPatchRecurringConsentsConsentId
description: |
Método para rejeitar, revogar ou editar um consentimento de longa duração:
1 - Informações sobre a revogação:
- Caso bem sucedido, o consentimento vai para o status “REVOKED”;
- Apenas consentimentos com status “AUTHORISED” podem ser revogados;
- Pagamentos automáticos associados ao consentimento e que estão agendados para ocorrer até as 23:59h do próximo dia (a partir do dia de
solicitação da revogação) deverão ser mantidos. Pagamentos agendados para ocorrer após esse período devem ser cancelados.
- Demais orientações referentes a revogação podem ser encontrados no header da API, tópico “Validações”, item 3.
2 - Informações sobre a edição:
- Os campos que são passíveis de edição e suas regras podem ser encontrados através do [link](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/628195665);
- A edição é possível apenas em casos de consentimento para Pix Automático (“automatic” escolhido no oneOf do objeto “recurringConfiguration”);
- O envio do item "/data/creditors/name" atualizará o nome do recebedor em todos os elementos do array.
- Caso consentimento seja de valor fixo (campo “/data/recurringConfiguration/automatic/fixedAmount” preenchido) não é permitida a edição do campo “/data/recurringConfiguration/automatic/maximumVariableAmount”.
- Caso o recebedor tenha definido um piso para o limite a ser estipulado pelo pagador (campo “/data/recurringConfiguration/automatic/minimumVariableAmount” preenchido), o valor máximo de limite por transação definido pelo usuário pagador (campo “/data/recurringConfiguration/automatic/maximumVariableAmount”) não pode ser menor que o valor estipulado pelo recebedor.
- Caso o seja editado o prazo de expiração do consentimento e já existam pagamentos agendados para dias posteriores a nova data definida, estes pagamentos devem ser cancelados.
3 - Informações sobre a rejeição:
- Caso haja necessidade de cancelamento de um consentimento ainda não autorizado, o iniciador poderá chamar o endpoint para mover o consentimento para REJECTED.
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/xCustomerUserAgent'
- $ref: '#/components/parameters/xFapiAuthDate'
- $ref: '#/components/parameters/xFapiCustomerIpAddress'
- $ref: '#/components/parameters/xFapiInteractionId'
- $ref: '#/components/parameters/pathRecurringConsentId'
- $ref: '#/components/parameters/XIdempotencyKey'
requestBody:
content:
application/jwt:
schema:
$ref: '#/components/schemas/PatchRecurringConsent'
description: Payload para criação do consentimento para iniciação do pagamento.
required: true
responses:
'200':
$ref: '#/components/responses/RecurringConsentsConsentIdPatch'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'406':
$ref: '#/components/responses/NotAcceptable'
'422':
$ref: '#/components/responses/UnprocessableEntityRecurringConsents'
'500':
$ref: '#/components/responses/InternalServerError'
'504':
$ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties'
'529':
$ref: '#/components/responses/SiteIsOverloaded'
default:
description: Erro inesperado.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseError'
security:
- OAuth2ClientCredentials:
- recurring-payments
/pix/recurring-payments:
post:
tags:
- Recurring Payments
summary: Cria uma transação de pagamento.
operationId: automaticPaymentsPostPixRecurringPayments
description: Método para criação de uma transação de pagamento. Retorna um recurringPaymentId.
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/xCustomerUserAgent'
- $ref: '#/components/parameters/xFapiAuthDate'
- $ref: '#/components/parameters/xFapiCustomerIpAddress'
- $ref: '#/components/parameters/xFapiInteractionId'
- $ref: '#/components/parameters/XIdempotencyKey'
requestBody:
content:
application/jwt:
schema:
$ref: '#/components/schemas/CreateRecurringPixPayment'
description: Payload para criação da iniciação do pagamento Pix.
required: true
responses:
'201':
$ref: '#/components/responses/201RecurringPaymentsIdPost'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'406':
$ref: '#/components/responses/NotAcceptable'
'422':
$ref: '#/components/responses/UnprocessableEntityPixRecurringPayment'
'500':
$ref: '#/components/responses/InternalServerError'
'504':
$ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties'
'529':
$ref: '#/components/responses/SiteIsOverloaded'
default:
description: Erro inesperado.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseError'
security:
- OAuth2AuthorizationCode:
- openid
- 'recurring-consent:recurringConsentId'
- recurring-payments
- NonRedirectAuthorizationCode:
- openid
- recurring-payments
- 'enrollment:enrollmentId'
- nrp-consents
get:
tags:
- Recurring Payments
summary: Busca informações de transações de pagamentos associadas a um consentimento.
operationId: automaticPaymentsGetPixRecurringPayments
description: |
Método para buscar informações sobre um conjunto de pagamentos associados ao mesmo recurringConsentId.
Também é possível enviar uma data de início (startDate) e final (endDate), caso a busca seja por transações em uma determinada janela de tempo.
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/xCustomerUserAgent'
- $ref: '#/components/parameters/xFapiAuthDate'
- $ref: '#/components/parameters/xFapiCustomerIpAddress'
- $ref: '#/components/parameters/xFapiInteractionId'
- $ref: '#/components/parameters/recurringConsentId'
- $ref: '#/components/parameters/startDate'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/originalRecurringPaymentId'
responses:
'200':
$ref: '#/components/responses/200RecurringPixPaymentRead'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'406':
$ref: '#/components/responses/NotAcceptable'
'500':
$ref: '#/components/responses/InternalServerError'
'504':
$ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties'
'529':
$ref: '#/components/responses/SiteIsOverloaded'
default:
description: Erro inesperado.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseError'
security:
- OAuth2ClientCredentials:
- recurring-payments
'/pix/recurring-payments/{recurringPaymentId}':
get:
tags:
- Recurring Payments
summary: Busca informações de uma transação de pagamento.
operationId: automaticPaymentsGetPixRecurringPaymentsPaymentId
description: Método para buscar informações sobre um pagamento.
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/xCustomerUserAgent'
- $ref: '#/components/parameters/xFapiAuthDate'
- $ref: '#/components/parameters/xFapiCustomerIpAddress'
- $ref: '#/components/parameters/xFapiInteractionId'
- $ref: '#/components/parameters/pathRecurringPaymentId'
responses:
'200':
$ref: '#/components/responses/200RecurringPaymentsIdRead'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'406':
$ref: '#/components/responses/NotAcceptable'
'500':
$ref: '#/components/responses/InternalServerError'
'504':
$ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties'
'529':
$ref: '#/components/responses/SiteIsOverloaded'
default:
description: Erro inesperado.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseError'
security:
- OAuth2ClientCredentials:
- recurring-payments
patch:
tags:
- Recurring Payments
summary: Cancelamento de solicitação de pagamento automático.
operationId: automaticPaymentsPatchPixRecurringPaymentsPaymentId
description: |
Esse endpoint deve ser usado para cancelar as transações que estejam em uma das seguintes situações:
Agendada com sucesso (SCHD), retida para análise (PDNG). Caso a requisição seja bem sucedida, a transação vai para a situação CANC.
Caso o status do pagamento seja diferente de SCHD/PDNG ou alguma outra regra de negócio impeça o cancelamento, a requisição PATCH retorna
HTTP Status 422 com o code PAGAMENTO_NAO_PERMITE_CANCELAMENTO.
Caso receba um 422, a iniciadora deve fazer uma requisição GET no pagamento para verificar a situação atual dele, bem como detalhes associados.
[Restrição] Para o Pix automático (“recurringConfiguration” igual a “automatic”) tanto o recebedor quanto o pagador poderão realizar o cancelamento,
sendo permitido ao recebedor a solicitação de cancelamento até as 22:00 (Horário de Brasília) e ao pagador até as 23:59 (Horário de Brasília) do dia anterior à data de efetivação do pagamento,
exceto para os casos de novas tentativas em dias subsequentes, onde apenas o recebedor pode cancelar, também até as 22:00h.
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/xCustomerUserAgent'
- $ref: '#/components/parameters/xFapiAuthDate'
- $ref: '#/components/parameters/xFapiCustomerIpAddress'
- $ref: '#/components/parameters/xFapiInteractionId'
- $ref: '#/components/parameters/pathRecurringPaymentId'
- $ref: '#/components/parameters/XIdempotencyKey'
requestBody:
content:
application/jwt:
schema:
$ref: '#/components/schemas/PatchPixPayment'
description: Atualização do Pagamento Recorrente.
required: true
responses:
'200':
$ref: '#/components/responses/200RecurringPaymentsIdPatch'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'406':
$ref: '#/components/responses/NotAcceptable'
'422':
$ref: '#/components/responses/UnprocessableEntityRecurringPaymentsPaymentId'
'500':
$ref: '#/components/responses/InternalServerError'
'504':
$ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties'
'529':
$ref: '#/components/responses/SiteIsOverloaded'
default:
description: Erro inesperado.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseError'
security:
- OAuth2ClientCredentials:
- recurring-payments
components:
headers:
XFapiInteractionId:
description: |
Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser “espelhado” pela detentora (server) no cabeçalho de resposta.
schema:
$ref: '#/components/schemas/XFapiInteractionId'
XFapiInteractionIdError:
description: |
Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client). Seu valor deve obrigatoriamente ser replicado pela detentora (server) no cabeçalho de resposta, exceto em casos de falhas estruturais que impeçam a replicação. Caso não seja possível ser replicado, não deve ser enviado.
schema:
$ref: '#/components/schemas/XFapiInteractionId'
XFapiInteractionIdBadRequest:
description: |
Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser “espelhado” pela detentora (server) no cabeçalho de resposta. Caso não seja enviado pela iniciadora, ou enviado inválido, a detentora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP status code 400. A iniciadora deve acatar o valor gerado pelo detentor e recebido na resposta.
schema:
$ref: '#/components/schemas/XFapiInteractionId'
X-V:
description: |
Cabeçalho que indica a versão implementada da API pela instituição financeira para atender à solicitação. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2.
required: true
schema:
$ref: '#/components/schemas/X-V'
schemas:
ResponseErrorCreateConsent:
type: object
required:
- errors
properties:
errors:
type: array
minItems: 1
maxItems: 3
items:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- DATA_PAGAMENTO_INVALIDA
- DETALHE_PAGAMENTO_INVALIDO
- PARAMETRO_NAO_INFORMADO
- PARAMETRO_INVALIDO
- ERRO_IDEMPOTENCIA
- NAO_INFORMADO
- FUNCIONALIDADE_NAO_HABILITADA
example: DATA_PAGAMENTO_INVALIDA
description: |
Códigos de erros previstos na criação de consentimento para a iniciação de pagamentos:
- DATA_PAGAMENTO_INVALIDA
- DETALHE_PAGAMENTO_INVALIDO
- PARAMETRO_NAO_INFORMADO
- PARAMETRO_INVALIDO
- ERRO_IDEMPOTENCIA
- NAO_INFORMADO
- FUNCIONALIDADE_NAO_HABILITADA
title:
type: string
maxLength: 255
pattern: '[\w\W\s]*'
example: Forma de pagamento inválida.
description: |
Título específico do erro reportado, de acordo com o código enviado:
- DATA_PAGAMENTO_INVALIDA: Data de pagamento inválida.
- DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido.
- PARAMETRO_NAO_INFORMADO: Parâmetro não informado.
- PARAMETRO_INVALIDO: Parâmetro inválido.
- ERRO_IDEMPOTENCIA: Erro idempotência.
- NAO_INFORMADO: Não informado.
- FUNCIONALIDADE_NAO_HABILITADA: A detentora de conta não oferece o serviço nessa modalidade.
detail:
type: string
maxLength: 2048
pattern: '[\w\W\s]*'
example: 'Forma de pagamento [Modalidade] não suportada.'
description: |
Descrição específica do erro de acordo com o código reportado:
- DATA_PAGAMENTO_INVALIDA: Data de pagamento inválida para a forma de pagamento selecionada.
- DETALHE_PAGAMENTO_INVALIDO: Parâmetro [nome_campo] não obedece às regras de negócio.
- PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado.
- PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas.
- ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key).
- NAO_INFORMADO: Não reportado/identificado pela instituição detentora de conta.
- FUNCIONALIDADE_NAO_HABILITADA: A detentora de conta não oferece o serviço nessa modalidade.
meta:
$ref: '#/components/schemas/Meta'
422ResponseErrorRecurringConsents:
type: object
required:
- errors
properties:
errors:
type: array
minItems: 1
maxItems: 3
items:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- CONSENTIMENTO_NAO_PERMITE_CANCELAMENTO
- CAMPO_NAO_PERMITIDO
- PERMISSAO_INSUFICIENTE
- DETALHE_EDICAO_INVALIDO
- FALTAM_SINAIS_OBRIGATORIOS_PLATAFORMA
example: CAMPO_NAO_PERMITIDO
title:
type: string
maxLength: 255
pattern: '[\w\W\s]*'
example: O pagamento está com status que não permite o cancelamento.
description: |
Título específico do erro reportado, de acordo com o código enviado:
- CONSENTIMENTO_NAO_PERMITE_CANCELAMENTO: O status do consentimento não permite a realização do cancelamento (em status "CONSUMED" ou "REJECTED")
- CAMPO_NAO_PERMITIDO: O(s) campo(s) solicitado(s) para edição não podem ser editados.
- Permissão insuficiente para edição.
- DETALHE_EDICAO_INVALIDO: A tentativa de edição do consentimento não respeitou as regras de negócio descritas nos campos.
- FALTAM_SINAIS_OBRIGATORIOS_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade.
detail:
type: string
maxLength: 2048
pattern: '[\w\W\s]*'
example: 'O pagamento está com status que não permite o cancelamento'
description: |
Descrição específica do erro de acordo com o código reportado:
- CONSENTIMENTO_NAO_PERMITE_CANCELAMENTO: O status do consentimento não permite a realização do cancelamento (em status "CONSUMED" ou "REJECTED")
- CAMPO_NAO_PERMITIDO: O(s) campo(s) solicitado(s) para edição não podem ser editados.
- PERMISSAO_INSUFICIENTE: Consentimento possui múltiplas alçadas aprovadoras e não permite a edição pelo usuário atual.
- DETALHE_EDICAO_INVALIDO: A tentativa de edição do consentimento não respeitou as regras de negócio descritas nos campos.
- FALTAM_SINAIS_OBRIGATORIOS_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade.
meta:
$ref: '#/components/schemas/Meta'
422ResponseErrorCreatePixRecurringPayment:
type: object
required:
- errors
properties:
errors:
type: array
minItems: 1
maxItems: 9
items:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- SALDO_INSUFICIENTE
- VALOR_ACIMA_LIMITE
- VALOR_INVALIDO
- LIMITE_PERIODO_VALOR_EXCEDIDO
- LIMITE_PERIODO_QUANTIDADE_EXCEDIDO
- CONSENTIMENTO_INVALIDO
- CONSENTIMENTO_PENDENTE_AUTORIZACAO
- PARAMETRO_NAO_INFORMADO
- PARAMETRO_INVALIDO
- NAO_INFORMADO
- PAGAMENTO_DIVERGENTE_CONSENTIMENTO
- DETALHE_PAGAMENTO_INVALIDO
- PAGAMENTO_RECUSADO_DETENTORA
- PAGAMENTO_RECUSADO_SPI
- ERRO_IDEMPOTENCIA
- LIMITE_VALOR_TOTAL_CONSENTIMENTO_EXCEDIDO
- LIMITE_VALOR_TRANSACAO_CONSENTIMENTO_EXCEDIDO
- LIMITE_TENTATIVAS_EXCEDIDO
- FORA_PRAZO_PERMITIDO
- DETALHE_TENTATIVA_INVALIDO
example: SALDO_INSUFICIENTE
description: |
Códigos de erros previstos na criação da iniciação de pagamento:
- SALDO_INSUFICIENTE: Esta conta não possui saldo suficiente para realizar o pagamento.
- VALOR_ACIMA_LIMITE: Valida se o valor ultrapassa o limite estabelecido [na instituição (conta ou canal)/no arranjo] para permitir a realização de transações pelo cliente.
- VALOR_INVALIDO: O valor enviado não é válido para o QR Code informado.
- LIMITE_PERIODO_VALOR_EXCEDIDO: A transação não pode ser realizada pois o valor parametrizado no consentimento foi excedido.
- LIMITE_PERIODO_QUANTIDADE_EXCEDIDO: A transação não pode ser realizada pois a quantidade parametrizada no consentimento foi excedida.
- CONSENTIMENTO_INVALIDO: Consentimento inválido (em status final).
- CONSENTIMENTO_PENDENTE_AUTORIZACAO: Consentimento pendente autorização de múltiplas alçadas (status “PARTIALLY_ACCEPTED”).
- PARAMETRO_NAO_INFORMADO: Parâmetro não informado.
- PARAMETRO_INVALIDO: Parâmetro inválido.
- NAO_INFORMADO: Não informada pela detentora de conta.
- PAGAMENTO_DIVERGENTE_CONSENTIMENTO: Dados do pagamento divergentes dos dados do consentimento.
- DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido.
- PAGAMENTO_RECUSADO_DETENTORA: Pagamento recusado pela detentora de conta.
- PAGAMENTO_RECUSADO_SPI: Pagamento recusado no Sistema de Pagamentos Instantâneos (SPI).
- ERRO_IDEMPOTENCIA: Erro idempotência.
- LIMITE_VALOR_TOTAL_CONSENTIMENTO_EXCEDIDO: Limite total excedido
- LIMITE_VALOR_TRANSACAO_CONSENTIMENTO_EXCEDIDO: O valor da transação ultrapassar o limite de valor por transação.
- LIMITE_TENTATIVAS_EXCEDIDO: O limite de tentativas para liquidação do pagamento permitidas pelo arranjo foi excedido.
- FORA_PRAZO_PERMITIDO: O horário ou período da requisição não permite o agendamento pelo detentor.
- DETALHE_TENTATIVA_INVALIDO: O parâmetro [nome_do(s)_campo(s)] inseridos para a nova tentativa de pagamento não condizem com o pagamento original que falhou e não são permitidos na nova tentativa de pagamento.
title:
type: string
maxLength: 255
pattern: '[\w\W\s]*'
example: Saldo insuficiente.
description: |
Título específico do erro reportado, de acordo com o código enviado:
- SALDO_INSUFICIENTE: Esta conta não possui saldo suficiente para realizar o pagamento.
- VALOR_ACIMA_LIMITE: Valida se o valor ultrapassa o limite estabelecido [na instituição (conta ou canal)/no arranjo] para permitir a realização de transações pelo cliente.
- VALOR_INVALIDO: O valor enviado não é válido para o QR Code informado.
- LIMITE_PERIODO_VALOR_EXCEDIDO: A transação não pode ser realizada pois o valor parametrizado no consentimento foi excedido.
- LIMITE_PERIODO_QUANTIDADE_EXCEDIDO: A transação não pode ser realizada pois a quantidade parametrizada no consentimento foi excedida.
- CONSENTIMENTO_INVALIDO: Consentimento inválido (em status final).
- CONSENTIMENTO_PENDENTE_AUTORIZACAO: Consentimento pendente autorização de múltiplas alçadas (status “PARTIALLY_ACCEPTED”).
- PARAMETRO_NAO_INFORMADO: Parâmetro não informado.
- PARAMETRO_INVALIDO: Parâmetro inválido.
- NAO_INFORMADO: Não informada pela detentora de conta.
- PAGAMENTO_DIVERGENTE_CONSENTIMENTO: Dados do pagamento divergentes dos dados do consentimento.
- DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido.
- PAGAMENTO_RECUSADO_DETENTORA: Pagamento recusado pela detentora de conta.
- PAGAMENTO_RECUSADO_SPI: Pagamento recusado no Sistema de Pagamentos Instantâneos (SPI).
- ERRO_IDEMPOTENCIA: Erro idempotência.
- LIMITE_VALOR_TOTAL_CONSENTIMENTO_EXCEDIDO: Limite total excedido
- LIMITE_VALOR_TRANSACAO_CONSENTIMENTO_EXCEDIDO: Limite de transação excedido.
- LIMITE_TENTATIVAS_EXCEDIDO: Limite de tentativas excedido.
- FORA_PRAZO_PERMITIDO: Tentativa fora do prazo.
- DETALHE_TENTATIVA_INVALIDO: Nova tentativa inválida
detail:
type: string
maxLength: 2048
pattern: '[\w\W\s]*'
example: A conta selecionada não possui saldo suficiente para realizar o pagamento.
description: |
Descrição específica do erro de acordo com o código reportado:
- SALDO_INSUFICIENTE: Esta conta não possui saldo suficiente para realizar o pagamento.
- VALOR_ACIMA_LIMITE: Valida se o valor ultrapassa o limite estabelecido [na instituição (conta ou canal)/no arranjo] para permitir a realização de transações pelo cliente.
- VALOR_INVALIDO: O valor enviado não é válido para o QR Code informado.
- LIMITE_PERIODO_VALOR_EXCEDIDO: A transação não pode ser realizada pois o valor parametrizado no consentimento foi excedido.
- LIMITE_PERIODO_QUANTIDADE_EXCEDIDO: A transação não pode ser realizada pois a quantidade parametrizada no consentimento foi excedida.
- CONSENTIMENTO_INVALIDO: Consentimento inválido (em status final).
- CONSENTIMENTO_PENDENTE_AUTORIZACAO: Consentimento pendente autorização de múltiplas alçadas (status “PARTIALLY_ACCEPTED”).
- PARAMETRO_NAO_INFORMADO: Parâmetro não informado.
- PARAMETRO_INVALIDO: Parâmetro inválido.
- NAO_INFORMADO: Não informada pela detentora de conta.
- PAGAMENTO_DIVERGENTE_CONSENTIMENTO: Dados do pagamento divergentes dos dados do consentimento.
- DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido.
- PAGAMENTO_RECUSADO_DETENTORA: Pagamento recusado pela detentora de conta.
- PAGAMENTO_RECUSADO_SPI: Pagamento recusado no Sistema de Pagamentos Instantâneos (SPI).
- ERRO_IDEMPOTENCIA: Erro idempotência.
- LIMITE_VALOR_TOTAL_CONSENTIMENTO_EXCEDIDO: O valor da transação excede o limite global do consentimento.
- LIMITE_VALOR_TRANSACAO_CONSENTIMENTO_EXCEDIDO: O valor da transação ultrapassar o limite de valor por transação.
- LIMITE_TENTATIVAS_EXCEDIDO: O limite de tentativas para liquidação do pagamento permitidas pelo arranjo foi excedido.
- FORA_PRAZO_PERMITIDO: O horário ou período da requisição não permite o agendamento pelo detentor.
- DETALHE_TENTATIVA_INVALIDO: O parâmetro [nome_do(s)_campo(s)] inseridos para a nova tentativa de pagamento não condizem com o pagamento original que falhou e não são permitidos na nova tentativa de pagamento.
meta:
$ref: '#/components/schemas/Meta'
422ResponseErrorCreateRecurringPaymentsPaymentId:
type: object
required:
- errors
properties:
errors:
type: array
minItems: 1
maxItems: 3
items:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- PAGAMENTO_NAO_PERMITE_CANCELAMENTO
- CANCELAMENTO_FORA_PERIODO_PERMITIDO
example: PAGAMENTO_NAO_PERMITE_CANCELAMENTO
description: |
- PAGAMENTO_NAO_PERMITE_CANCELAMENTO: Pagamento está com um status que não permite cancelamento
- CANCELAMENTO_FORA_PERIODO_PERMITIDO: O usuário solicitou o cancelamento fora da janela de tempo permitido.
title:
type: string
maxLength: 255
pattern: '[\w\W\s]*'
example: O pagamento está com um status que não permite o cancelamento.
description: |
- PAGAMENTO_NAO_PERMITE_CANCELAMENTO: Pagamento está com um status que não permite cancelamento
- CANCELAMENTO_FORA_PERIODO_PERMITIDO: O usuário solicitou o cancelamento fora da janela de tempo permitido.
detail:
type: string
maxLength: 2048
pattern: '[\w\W\s]*'
example: O pagamento está com um status que não permite o cancelamento.
description: |
- PAGAMENTO_NAO_PERMITE_CANCELAMENTO: Pagamento está com um status que não permite cancelamento
- CANCELAMENTO_FORA_PERIODO_PERMITIDO: O usuário solicitou o cancelamento fora da janela de tempo permitido.
meta:
$ref: '#/components/schemas/Meta'
BusinessEntity:
type: object
description: |
Usuário (pessoa jurídica) que encontra-se logado na instituição Iniciadora de Pagamento.
[Restrição] Preenchimento obrigatório se usuário logado na instituição Iniciadora de Pagamento for um CNPJ (pessoa jurídica).
required:
- document
properties:
document:
type: object
required:
- identification
- rel
properties:
identification:
type: string
maxLength: 14
description: Número do documento de identificação oficial do titular pessoa jurídica.
example: '11111111111111'
pattern: '^\d{14}$'
rel:
type: string
maxLength: 4
description: Tipo do documento de identificação oficial do titular pessoa jurídica.
example: CNPJ
pattern: '^[A-Z]{4}$'
CreateRecurringConsent:
type: object
required:
- data
properties:
data:
type: object
description: Objeto contendo as informações de consentimento para a iniciação de pagamento individual.
required:
- loggedUser
- creditors
- recurringConfiguration
properties:
loggedUser:
$ref: '#/components/schemas/LoggedUser'
businessEntity:
$ref: '#/components/schemas/BusinessEntity'
creditors:
$ref: '#/components/schemas/Creditors'
expirationDateTime:
description: Data e hora em que o consentimento deve deixar de ser válido. Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC(UTC time format).
type: string
format: date-time
example: '2021-05-21T08:30:00Z'
pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
maxLength: 20
additionalInformation:
description: Deve ser preenchido sempre que o usuário pagador inserir alguma informação adicional no consentimento
type: string
example: 'Minha recorrência'
pattern: '[\w\W\s]*'
maxLength: 140
debtorAccount:
type: object
description: |
Objeto que contém a identificação da conta de origem do pagador.
Caso a ITP tenha coletado as informações de conta do usuário pagador, essas poderão ser enviadas no consentimento para a detentora neste objeto, ou; Se não coletado pelo ITP, o usuário pagador precisará definir durante a autorização do consentimento.
Mesmo se enviado pela ITP, o usuário pagador pode alterar durante a autorização do consentimento
required:
- ispb
- number
- accountType
properties:
ispb:
type: string
minLength: 8
maxLength: 8
pattern: '^[0-9]{8}$'
example: '12345678'
description: |
Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números.
issuer:
type: string
minLength: 1
maxLength: 4
pattern: '^[0-9]{1,4}$'
example: '1774'
description: |
Código da Agência emissora da conta sem dígito.
(Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito,
no exercício de atividades da instituição, não podendo ser móvel ou transitória).
[Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA) e SVGS (CONTA_POUPANCA).
number:
type: string
minLength: 1
maxLength: 20
pattern: '^[0-9]{1,20}$'
example: '1234567890'
description: |
Deve ser preenchido com o número da conta transacional do usuário pagador, com dígito verificador (se este existir),
se houver valor alfanumérico, este deve ser convertido para 0.
accountType:
$ref: '#/components/schemas/EnumAccountTypeConsents'
recurringConfiguration:
type: object
description: Campo destinado a configuração dos diferentes produtos de pagamentos recorrentes.
oneOf:
- $ref: '#/components/schemas/AutomaticRequest'
- $ref: '#/components/schemas/SweepingRequest'
- $ref: '#/components/schemas/Vrp'
CreateRecurringPixPayment:
type: object