Introdução
Requisições e respostas
Nossa API utiliza o padrão REST, todas as requisições e respostas são no formato JSON e os endpoints utilizam como base os seguintes endereços:
- Sandbox:
https://api.sandbox.credoro.com.br
- Produção:
https://api2.credoro.com.br
Para indiciar sucesso na operação utilizaremos um código HTTP >= 200 e <400. Além disso, JSON retornado contém um campo booleano chamado success que pode ser utilizado no lugar dos códigos para verificar o sucesso da operação.
A segurança no envio e recebimento dos dados é realizada através de autenticação via token.
Alem do bearer token, deve ser enviado o parterHashId
e userHashId
quando necessários.
Os parâmetros parterHashId
e userHashId
serão diferentes entre os ambientes produção e sandbox.
Você deve solicitar esses parâmetros ao responsável da Credoro.
Observações quanto aos tipos de campos
Tipo | Formato |
---|---|
Date | Utiliza o formato DD/MM/YYYY , exemplo 29/10/2021 |
Date | Utiliza o formato DD-MM-YYYY HH:MM:SS , exemplo 29-10-2021 00:00:00 |
Observações quanto a obrigatoriedade de campos
A coluna Obrigatório presente na secção URL Parameters e Body Parameters de cada endpoint, pode assumir um dos seguintes valores:
- Sim
- Não
Expressão booleana
Utilizaremos expressões no campo Obrigatório
para determinar sua obrigatoriedade com base em outro campo submetido.
Parceiro
TODO: Explicar sobre o hash id do parceiro.
Autenticação
A autenticação é feita através do envio de um token no header das requisições, exemplo:
Authorization: Bearer token_here
Cliente
Criar
Criar cliente para utilização na criação de operações.
Criação de clientes
{
"partner_id":"hash",
"person_type":"1",
"tax_id":"83680274971",
"name":"Maya Márcia da Paz",
"company_name":"",
"address_zipcode":"88904278",
"address_street":"Rua Madre Tereza de Calcutá",
"address_number":"556",
"address_complement":"",
"address_district":"Lagoão",
"address_city_id":"4330",
"address_city_name":"Araranguá - SC",
"address_state_id":null,
"address_state_code":null,
"address_state_name":null,
"name_contact":"Maya Márcia da Paz",
"email_contact":"[email protected]",
"phone_1":"4837604183",
"phone_2":"48993397760",
"notes":"",
"cpf_contact":"83680274971",
"mother_name":"Laura Flávia",
"birthday":"03/08/1992",
"open_date":"",
"main_activity":"",
"revenue":[
"001",
"001",
"001",
"001",
"001",
"001",
"001",
"001",
"001",
"001",
"001",
"001"
],
"revenue_avg":",00",
"partner_user_id":"nzkevq3g35",
"bank_id":"1",
"bank_agency":"0737",
"bank_agency_digit":"0",
"bank_number":"62902",
"bank_digit":"2",
"bank_account_type":"1",
"bank_name":"Maya Márcia da Paz",
"bank_document":"83680274971"
}
HTTP Request
POST /partner-customer/insert
Body Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
partner_id | Texto | Sim | Hash Id do parceiro relacionado |
person_type | Texto | Sim | Informe 1 para "PF" ou 2 para "PJ" |
tax_id | Texto | Sim | "CPF" ou "CNPJ", apenas números |
name | Texto | Sim | Nome do cliente quando for "PF" e nome da empresa quando for "PJ" |
company_name | Texto | Quando for PJ | Razão Social da empresa |
address_zipcode | Texto | Sim | CEP |
address_street | Texto | Sim | Nome da rua |
address_number | Número | Sim | Número |
address_complement | Texto | Não | Complemento do endereço |
address_district | Texto | Sim | Bairro |
address_city_id | Número | Sim | Id da Cidade, buscar o id na lista de cidades |
address_state_id | Número | Sim | Id do Estado, buscar junto a lista de cidades |
name_contact | Texto | Sim | Nome para contato |
email_contact | Texto | Sim | E-mail para contato |
phone_1 | Texto | Não | Telefone |
phone_2 | Texto | Sim | Celular |
notes | Texto | Não | Observações |
cpf_contact | Texto | Sim | CPF do responsável |
mother_name | Texto | Sim | Nome da mãe do responsável |
birthday | Data | Sim | Data de nascimento. Formato DD/MM/YYYY |
open_date | Data | Quando for PF | Data de nascimento. Formato DD/MM/YYYY |
main_activity | Texto | Quando for PF | Atividade Principal |
revenue | Lista | Quando for PF | Informar faturamento de cada mês |
Os campos abaixo, devem ser informados quando a configuração do parceiro exigir conta bancária.
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
bank_id | Número | Sim | Id do banco, buscar o id na lista de bancos |
bank_agency | Texto | Sim | Número da Agência |
bank_agency_digit | Texto | Sim | Digito verificador da agênvia. Quando não exisitr, informe "0" |
bank_number | Texto | Sim | Número da conta |
bank_digit | Texto | Sim | Digito verificado da conta |
bank_account_type | Texto | Sim | Informe 1 para Conta Corrente e 2 para Conta Poupança |
bank_name | Texto | Sim | Nome do titular da conta |
bank_document | Texto | Sim | CPF ou CNPJ da conta |
Exemplo de response com sucesso:
{
"data": {
"id": "hash"
},
"success": true
}
Atualizar
HTTP Request
PUT /partner-customer/update/{customerHashId}
Utilize os mesmos campos e regras da criação de clientes.
Obter
Obter os dados de um único cliente.
HTTP Request
PUT /partner-customer/get/{customerHashId}
Exemplo de response com sucesso:
{
"data": {
"id": "hash",
"name": "HEITOR MORAES",
"notes": "",
"tax_id": "CPF ou CNPJ",
"bank_id": null,
"phone_1": "",
"phone_2": "48999999999",
"revenue": ["001","001","001","001","001","001","001","001","001","001","001","001"],
"birthday": "26/06/1997",
"bank_name": null,
"open_date": null,
"bank_digit": null,
"partner_id": "hash",
"bank_agency": null,
"bank_number": null,
"cpf_contact": "CPF ou CNPJ",
"mother_name": "",
"person_type": 1,
"company_name": "",
"name_contact": "HEITOR MORAES DO PRADO",
"bank_document": null,
"email_contact": "[email protected]",
"main_activity": "",
"address_number": "100",
"address_street": "Rua 20 de Abril",
"bank_code_name": "",
"address_city_id": 4330,
"address_zipcode": "88900047",
"address_district": "Centro",
"address_state_id": 22,
"address_city_name": "Araranguá",
"bank_account_type": null,
"bank_agency_digit": null,
"address_complement": "",
"address_state_code": "SC",
"address_state_name": "Santa Catarina"
},
"success": true
}
Obter todos
HTTP Request
GET /partner-customer/all/{partnerHashId}
Exemplo de filtro e paginação
{
"limit": 50,
"filter": {
"filter": "Fabiel"
},
"offset": 0
}
Exemplo de response
{
"data": {
"total": "2",
"values": [
{
"id": "hash",
"name": "Credoro",
"tax_id": "XXX.XXX.XXX-XX",
"created_at": 1652708353,
"term_accept": false,
"email_contact": "[email protected]",
"partner_term_accept_config": false
},
//...
]
},
"success": true
}
Body Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
limit | Inteiro | Não | Determina o limite de dados retornados |
offset | Inteiro | Não | Determina a quantidade registros a serem "ignorados" |
filter | Objeto | Não | Informe o paramêtro "filter" para pesquisar pelo nome do cliente. |
Reenviar termos de aceite
HTTP Request
GET /partner-customer/resend-access-terms-email?customerHashId=hash
Exemplo de response sucesso
{
"data": [],
"success": true
}
Operação
Permite criar e consultar operações de emprestimo.
Criar
Criar uma operação em consjuto a criação do cliente.
Exemplo de request pessoa física (PF)
{
"name": "Joaquim Giovanni Murilo Moura",
"person_type": "PF",
"tax_id": "00011122244",
"birthdate": "27/06/1952",
"phone1": "1122223333",
"phone2": "11922223333",
"phone3": "1122223333",
"email_contact": "[email protected]",
"postal_code": "01234567",
"address_street": "Rua Raimundo Ferreira",
"address_complement": "",
"address_number": "521",
"address_district": "Conjunto Universitário",
"city": "Rio Branco",
"state": "AC",
"amount": 1200,
"installment": 12
}
Exemplo de request pessoa jurídica (PJ)
{
"name": "Erick Locações de Automóveis",
"company_name": "Luzia e Erick Locações de Automóveis Ltda",
"person_type": "PJ",
"tax_id": "94872972000110",
"phone1": "1122223333",
"phone2": "11922223333",
"phone3": "1122223333",
"postal_code": "01234567",
"address_street": "Praça Vidal Antônio de Castro",
"address_complement": "casa",
"address_number": "682",
"address_district": "Lapa",
"city": "São Paulo",
"state": "SP",
"name_contact": "Alexandre Vieira",
"cpf_contact": "66978847380",
"email_contact": "[email protected]",
"opendate": "10/12/2010",
"main_activity": "Atividade principal",
"amount": 1000.00,
"installment": 4,
"revenue": {
"1": "2522",
"2": "5454",
"3": "5454",
"4": "5454",
"5": "5454",
"6": "5454",
"7": "5454",
"8": "5454",
"9": "5454",
"10": "5454",
"11": "5454",
"12": "5454"
}
}
Exemplo de request pessoa jurídica (PJ)
{
"name": "Erick Locações de Automóveis",
"company_name": "Luzia e Erick Locações de Automóveis Ltda",
"person_type": "PJ",
"tax_id": "94872972000110",
"phone1": "1122223333",
"phone2": "11922223333",
"phone3": "1122223333",
"postal_code": "01234567",
"address_street": "Praça Vidal Antônio de Castro",
"address_complement": "casa",
"address_number": "682",
"address_district": "Lapa",
"city": "São Paulo",
"state": "SP",
"name_contact": "Alexandre Vieira",
"cpf_contact": "66978847380",
"email_contact": "[email protected]",
"opendate": "10/12/2010",
"main_activity": "Atividade principal",
"amount": 1000.00,
"installment": 4,
"revenue": {
"1": "2522",
"2": "5454",
"3": "5454",
"4": "5454",
"5": "5454",
"6": "5454",
"7": "5454",
"8": "5454",
"9": "5454",
"10": "5454",
"11": "5454",
"12": "5454"
}
}
Exemplo de ciração informando apenas o hash id do cliente
{
"amount": 2390,
"quantity": "1",
"partner_id": 20,
"description": "Descrição do Produto",
"installment": "15",
"seller_email": "[email protected]",
"customer_hashid": "hash"
}
Exemplo de response com sucesso:
{
"success" : true,
"data": {
"operation": "yzjd47d5kn",
"customer": "0pkgr4d6o3"
}
}
Exemplo de response com erros de validação:
{
"success": false,
"message": {
"tax_id": [
"\"Tax Id\" não pode ficar em branco."
],
"person_type": [
"\"Person Type\" não pode ficar em branco."
]
},
"data": []
}
Permite criar uma operação para pessoa física ou jurídica.
HTTP Request
POST /operation/create
Body Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
tax_id | String | Sim | Número do "CPF" ou "CNPJ" |
person_type | String | Sim | "PF" ou "PJ" |
cpf_contact | String | Sim | Número do CPF de quem assina o contato |
name_contact | String | person_type="PJ" |
Nome de quem assina o contrato |
email_contact | String | Sim | Email de utilizado na assinatura do contrato |
name | String | Sim | person_type="PF" |
phone1 | String | Não | Número de tefone fixo ou móvel com código de área |
phone2 | String | Sim | Aceita somente número móvel com código de área. Ex: xx9xxxxxxxx |
phone3 | String | Não | Número de tefone fixo ou móvel com código de área |
amount | Integer ou Float | Sim | Valor solicitado. Ex: 1000.00 |
installment | Integer | Sim | Quantidade de parcelas |
city | String | Sim | Cidade. Consulte /city/search para verificar os valores permitidos |
state | String | Sim | UF |
opendate | Date | person_type="PJ" |
Data de fundação da empresa |
main_activity | String | person_type="PJ" |
Atividade principal |
revenue | [Integer: Float] | person_type="PJ" |
Faturamento dos últimos 12 meses |
birthdate | Date | Não | Data de nascimento |
postal_code | String | Não | CEP |
address_street | String | Não | Endereço |
address_complement | String | Não | Complemento do endereço |
address_number | String | Não | Número ou identificador da casa/apartamento... |
address_district | String | Não | Bairro do endereço |
Response Body:
Propriedade | Tipo | Descrição |
---|---|---|
success | String | Indica se a operação foi criada (true) ou não (false) |
data.operation | String | ID da operação |
data.customer | String | ID do cliente |
Todas operações
HTTP Request
POST /partner-operation/all/{partnerHashId}/{userHashId}
Exemplo de filtro e paginação
{
"limit": 50,
"filter": {
"customer": "Nome do Cliente"
},
"offset": 0
}
Body Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
limit | Inteiro | Não | Determina o limite de dados retornados |
offset | Inteiro | Não | Determina a quantidade registros a serem "ignorados" |
filter | Objeto | Não | Informe o paramêtro "customer" para pesquisar pelo nome do cliente. |
Exemplo de response sucesso
{
"data": [
{
"id": "hash da operação",
"ccb": null,
"total": "R$ 5.788,80",
"amount": "3290.0000",
"quantity": 1,
"cet_anual": "153,67%",
"status_id": 5,
"valor_iof": "R$ 89,59",
"created_at": 1660238117,
"signatures": null,
"customer_id": "hash do cliente",
"description": "iPhone 11 64gb seminovo",
"installment": 15,
"person_type": 1,
"status_name": "Cancelado",
"status_slug": "cancelado",
"uploaded_nfe": false,
"customer_name": "Fulano de Tal",
"valor_liquido": "R$ 3.290,00",
"valor_nominal": "R$ 0,00",
"taxa_juros_mes": "0,07%",
"can_be_canceled": false,
"canceled_message": "Bloqueio automático",
"shopProofUploaded": false,
"have_all_documents": true
},
//...
],
"success": true
}
Verificar status
Exemplo de response:
{
"success": true,
"data": {
"status": "Autorizado",
"slug": "autorizado"
}
}
Permite consultar o status de uma operação.
HTTP Request
GET /operation/status/[hashId]
URL Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
hashId | String | Sim | ID da operação |
Response Body:
Propriedade | Tipo | Descrição |
---|---|---|
success | String | Indica se a operação foi criada (true) ou não (false) |
data.status | String | Nome do status |
data.slug | String | Slug do status |
Consultar
Exemplo de response:
{
"success": true,
"data": {
"status_operacao": "em-analise",
"data_criacao": "2021-10-21 19:16:23",
"cliente": {
"nome": "Silvana Letícia Isabelle Moraes",
"email": "[email protected]",
"cpf_cnpj": "52147032956",
"endereco": ", SN casa Conjunto Universitário - 69917750 - Rio Branco/AC",
"fone": "6825486352",
"celular": "68996743591",
"data_nascimento": "13/11/1988",
"nome_mae": "Dona Tera",
"data_abertura": null,
"atividade_principal": null,
"cpf_contato": "52147032956",
"nome_contato": "Silvana Letícia Isabelle Moraes",
"razao_social": "João Vicente Albuquerque"
},
"dados_operacao": {
"valor_solicitado": 1797,
"valor_nominal": 1797,
"valor_total": 2559.48,
"taxa_juros_mensal": 5.4,
"parcelas": 12,
"valor_parcela": 213.29
},
"assinaturas_coletadas": [],
"url_assinar_contrato": [],
"documentos_enviados": {
"carteira_de_habilitacao_cnh": false,
"nota_fiscal": false,
"verso_rg": false,
"boletos_operations": false,
"frente_rg": false,
"comprovante_de_compra": false,
"boleto_da_compra": false,
"comprovante_residencia": false,
"contrato_social": false
},
"status_antifraude": null,
"boletos_gerados": null
}
}
Lista as informações mais relevantes associadas a operação.
HTTP Request
GET /operation/details/[hashId]
URL Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
hashId | String | Sim | ID da operação |
Upload de documentos
Exemplo de request:
{
"operation_id" : "9w5g51p111",
"type" : "cnh",
"path" : "https://www.example-url.com/images/img-xpto.png",
"mimetype" : "image/png"
}
Exemplo de response:
{
"success": true,
"data": true
}
Lista as informações mais relevantes associadas a operação.
HTTP Request
POST /operation-document/upload/link
Body Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
operation_id | String | Sim | ID da operação |
type | proof-residence, social-contract, rg-front, rg-back ou cnh | Sim | Tipo de documento |
link | Url | Sim | Endereço (URL) publico do arquivo a ser carregado |
mimetype | String | Não | Mime type do arquivo a ser carregado |
Descrição dos tipos
Propriedade | Descrição |
---|---|
proof-residence | Comprovante de endereço |
social-contract | Contrato social |
rg-front | Frente do RG |
rg-back | Verso do RG |
cnh | CNH (documento aberto) |
Cidade
Permite consultar o nome da cidade e o estado ao qual a mesma faz parte.
Consultar
Exemplo de response para name=salvad
{
"success": true,
"data": [
{
"id": 435,
"name": "São Salvador do Tocantins - TO",
"remote_id": 1720259
},
{
"id": 2163,
"name": "Salvador - BA",
"remote_id": 2927408
},
{
"id": 4964,
"name": "Salvador das Missões - RS",
"remote_id": 4316477
},
{
"id": 4965,
"name": "Salvador do Sul - RS",
"remote_id": 4316501
}
]
}
A propriedade city
preenchida ao tentar criar uma operação precisa ser uma correspondência valida, do contrario o processo de criação da operação irá falhar avisando que a cidade informada não é valida.
Caso esteja tendo dificuldade para preencher o campo city
ao criar uma operação, utilize este endpoint para aferir o nome correto da cidade.
HTTP Request
POST /city/search?name=[city]
URL Parameters
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
name | String | Sim | Informe o nome de uma cidade ou parte dele |
Response Body
Propriedade | Tipo | Descrição |
---|---|---|
success | String | Indica se a operação foi criada (true) ou não (false) |
data.id | Integer | ID da cidade |
data.name | String | Nome da cidade o estado ao qual ela está associada |
Banco
Todos
HTTP Request
GET bank/search?search={nome, abreviação ou código}
Exemplo de response
{
"data": [
{
"id": 7,
"name": "237 - BRADESCO"
},
{
"id": 32,
"name": "036 - BANCO DO ESTADO DO MARANHAO S.A"
},
{
"id": 134,
"name": "394 - BANCO B.M.C. S.A"
},
{
"id": 401,
"name": "122 - BCO BRADESCO BERJ S.A."
}
],
"success": true
}
Simulação
Obter campos da simulação
Retorna os campos utilizados na simulação.
HTTP Request
POST /simulator/fields-partner/{partnerHashId}
Exemplo de response
{
"success": true,
"data": {
"personType": {
"required": true,
"type": "string",
"label": "Tipo de pessoa",
"options": [
{
"label": "Física",
"value": "PF"
},
{
"label": "Jurídica",
"value": "PJ"
}
],
"typeView": "radioGroup"
},
"amount": {
"required": true,
"type": "double",
"label": "Valor"
},
"installments": {
"required": true,
"type": "integer",
"label": "Parcelas",
"options": {
"pj": [
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
],
"pf": [
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
]
},
"dependency": "personType",
"typeView": "dropDownList"
}
}
}
Realizar uma simulação
HTTP Request
POST /simulator/partner
Body Parameters
Ver: "Obter campos da simulação" Além dos campos obtidos no enpoint acima, deve ser enviado tambem o "partner_id" no body.
Exemplo de response
{
"success": true,
"data": {
"data_simulacao": "2022-11-29",
"valor_principal": 3150,
"valor_simulado": 3150,
"valor_liquido": 3000,
"valor_total": 3680.4000000000001,
"taxa_juros_mes": 5,
"valor_financiado": 3000,
"taxa_anual_equivalente": 79.585599999999999,
"taxa_juros_dia": 5.04,
"qtde_parcelas": 5,
"iof_adicional": "0.000082",
"iof_prazo": 24.773686074068173,
"iof_financiado": 36.883750921376098,
"percentual_tac": 0.050000000000000003,
"tac": 150,
"percentual_iof": 0.0082000000000000007,
"percentual_iof_adicional": 0.0082000000000000007,
"parcelas": [
{
"data": "2022-12-29",
"parcela": 1,
"dias_juros": 30,
"saldo_devedor_a_amortizar": 3186.8591703441912,
"valor_parcela": 736.08000000000004,
"valor_parcela_sem_iof": 734.66122687795234,
"pagto_valor_juros": 159.34295851720981,
"pagto_principal": 576.73704148279023,
"saldo_devedor_amortizado": 2610.1221288614011,
"iof_prazo": 1.418773122047664
},
{
"data": "2023-01-29",
"parcela": 2,
"dias_juros": 61,
"saldo_devedor_a_amortizar": 2004.5482353044711,
"valor_parcela": 736.08000000000004,
"valor_parcela_sem_iof": 733.05091938442831,
"pagto_valor_juros": 130.50610644307005,
"pagto_principal": 605.57389355692999,
"saldo_devedor_amortizado": 1398.9743417475411,
"iof_prazo": 3.0290806155717642
},
{
"data": "2023-03-01",
"parcela": 3,
"dias_juros": 92,
"saldo_devedor_a_amortizar": 1368.6956470696946,
"valor_parcela": 736.08000000000004,
"valor_parcela_sem_iof": 731.28312807435691,
"pagto_valor_juros": 100.22741176522355,
"pagto_principal": 635.85258823477648,
"saldo_devedor_amortizado": 732.84305883491811,
"iof_prazo": 4.7968719256431536
},
{
"data": "2023-04-01",
"parcela": 4,
"dias_juros": 123,
"saldo_devedor_a_amortizar": 701.05042942317925,
"valor_parcela": 736.08000000000004,
"valor_parcela_sem_iof": 729.3461303348173,
"pagto_valor_juros": 68.434782353484735,
"pagto_principal": 667.64521764651533,
"saldo_devedor_amortizado": 33.405211776663918,
"iof_prazo": 6.7338696651827536
},
{
"data": "2023-05-01",
"parcela": 5,
"dias_juros": 153,
"saldo_devedor_a_amortizar": 0.022950894338123362,
"valor_parcela": 736.08000000000004,
"valor_parcela_sem_iof": 727.28490925437723,
"pagto_valor_juros": 35.052521471158961,
"pagto_principal": 701.02747852884113,
"saldo_devedor_amortizado": -701.00452763450301,
"iof_prazo": 8.79509074562284
}
],
"valor_liberado": 3000,
"valor_iof": 36.883750921376098,
"valor_custo_bancario": 30,
"total_operacao": 3066.8837509213763,
"cet_mensal": 7.2247199999999996,
"cet_anual": 130.96133,
"cet_mensal_sem_iof": 7.3420199999999998,
"cet_anual_sem_iof": 134.01159999999999
}
}
Errors
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The kitten requested is hidden for administrators only. |
404 | Not Found -- The specified kitten could not be found. |
405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The kitten requested has been removed from our servers. |
418 | I'm a teapot. |
429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |