Referência da API
Todas as rotas, corpos e respostas.
Nesta página
Endereço base: https://moedanobre.com/api/v1 · Autenticação: Authorization: Bearer <chave> · OpenAPI 3.1 (JSON)
GET /ping
A chave funciona?
| HTTP | Resposta |
|---|---|
| 200 | Ping: OK |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
POST /pontos-de-venda/ativar
Ligar um caixa com o código de ativação
Produção: código XXXX-XXXX gerado pelo gerente da loja. Testes: código T-XXXX-XXXX gerado no portal. Uso único; 5 códigos errados por chave em 1 hora bloqueiam por 1 hora.
Corpo:
{
"type": "object",
"properties": {
"codigoAtivacao": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"identificadorExterno": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$"
},
"nome": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"codigoAtivacao",
"identificadorExterno"
],
"additionalProperties": false
}
| HTTP | Resposta |
|---|---|
| 201 | PontoDeVenda: Caixa ativo |
| 400 | Erro: VALIDACAO · CAMPO_DESCONHECIDO |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 409 | Erro: PDV_JA_ATIVO |
| 410 | Erro: CODIGO_ATIVACAO_EXPIRADO |
| 422 | Erro: CODIGO_ATIVACAO_INVALIDO · LOJA_INATIVA |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
GET /pontos-de-venda
Listar os caixas
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
status |
query | não | |
cursor |
query | não | |
limite |
query | não |
| HTTP | Resposta |
|---|---|
| 200 | PaginaPontosDeVenda: Página |
| 400 | Erro: VALIDACAO |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
GET /pontos-de-venda/{id}
Um caixa
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id |
caminho | sim | Id do caixa |
| HTTP | Resposta |
|---|---|
| 200 | PontoDeVenda: OK |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 404 | Erro: PDV_NAO_ENCONTRADO |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
POST /pontos-de-venda/{id}/desativar
Desligar um caixa (cancela a pendente dele)
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id |
caminho | sim | Id do caixa |
| HTTP | Resposta |
|---|---|
| 200 | PontoDeVenda: Caixa desligado |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 404 | Erro: PDV_NAO_ENCONTRADO |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
POST /cobrancas
Criar uma cobrança
Uma cobrança pendente por caixa. Com cancelarPendenteAnterior=true a anterior é cancelada (se o cliente não tiver acabado de pagá-la).
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Key |
cabeçalho | sim | Único por cobrança que você quer criar (ex.: o id do cupom). Repetir com o mesmo corpo devolve a mesma cobrança. |
Moeda-Nobre-Teste-Cenario |
cabeçalho | não | Só com chave de teste. |
Corpo:
{
"type": "object",
"properties": {
"pontoDeVendaId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"valorCentavos": {
"type": "integer",
"minimum": 1,
"maximum": 9999999
},
"referenciaExterna": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"expiraEmSegundos": {
"default": 300,
"type": "integer",
"minimum": 60,
"maximum": 900
},
"metadados": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"additionalProperties": {
"type": "string",
"maxLength": 100
}
},
"cancelarPendenteAnterior": {
"default": false,
"type": "boolean"
}
},
"required": [
"pontoDeVendaId",
"valorCentavos"
],
"additionalProperties": false
}
| HTTP | Resposta |
|---|---|
| 200 | Cobranca: Repetição com a mesma Idempotency-Key (cabeçalho Idempotent-Replayed: true) |
| 201 | Cobranca: Cobrança criada (com o QR) |
| 400 | Erro: VALIDACAO · CAMPO_DESCONHECIDO · IDEMPOTENCY_KEY_OBRIGATORIA · CENARIO_SO_EM_TESTE · CENARIO_INVALIDO |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 404 | Erro: PDV_NAO_ENCONTRADO |
| 409 | Erro: COBRANCA_PENDENTE_EXISTE · COBRANCA_NAO_PENDENTE · REQUISICAO_EM_ANDAMENTO |
| 422 | Erro: IDEMPOTENCY_CONFLITO · PDV_INATIVO · LOJA_INATIVA · VINCULO_REVOGADO |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
GET /cobrancas
Listar cobranças
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
pontoDeVendaId |
query | não | |
status |
query | não | |
criadoDe |
query | não | |
criadoAte |
query | não | |
referenciaExterna |
query | não | |
cursor |
query | não | |
limite |
query | não |
| HTTP | Resposta |
|---|---|
| 200 | PaginaCobrancas: Página |
| 400 | Erro: VALIDACAO |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
GET /cobrancas/{id}
Uma cobrança, com ?aguardar=N espera até N segundos por uma mudança (long-poll)
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id |
caminho | sim | Id da cobrança |
aguardar |
query | não | |
semImagem |
query | não |
| HTTP | Resposta |
|---|---|
| 200 | Cobranca: OK |
| 400 | Erro: VALIDACAO |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 404 | Erro: COBRANCA_NAO_ENCONTRADA |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
POST /cobrancas/{id}/cancelar
Cancelar uma cobrança pendente
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id |
caminho | sim | Id da cobrança |
| HTTP | Resposta |
|---|---|
| 200 | Cobranca: Cancelada |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 404 | Erro: COBRANCA_NAO_ENCONTRADA |
| 409 | Erro: COBRANCA_NAO_PENDENTE |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
GET /eventos
Eventos dos últimos 30 dias, em ordem (conciliação / quem não recebe webhook)
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
apos |
query | não | |
limite |
query | não |
| HTTP | Resposta |
|---|---|
| 200 | PaginaEventos: Página |
| 400 | Erro: VALIDACAO |
| 401 | Erro: CHAVE_INVALIDA · CHAVE_REVOGADA · PARCEIRO_SUSPENSO · PRODUCAO_NAO_LIBERADA · APLICATIVO_DESATIVADO |
| 403 | Erro: CHAVE_EM_NAVEGADOR |
| 404 | Erro: RECURSO_NAO_ENCONTRADO |
| 429 | Erro: LIMITE_EXCEDIDO |
| 500 | Erro: ERRO_INTERNO |
Objetos
Cobranca
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Id da cobrança (é o `tid` do QR)"
},
"status": {
"type": "string",
"enum": [
"PENDENTE",
"PAGA",
"CANCELADA",
"EXPIRADA",
"ESTORNADA"
]
},
"valorCentavos": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"pontoDeVendaId": {
"type": "string"
},
"lojaId": {
"type": "string"
},
"referenciaExterna": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadados": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"qrCode": {
"description": "Só enquanto PENDENTE",
"type": "object",
"properties": {
"conteudo": {
"type": "string",
"description": "Texto do QR: desenhe com qualquer biblioteca de QR"
},
"imagemPng": {
"description": "data:image/png;base64,… (omitida com ?semImagem=true)",
"type": "string"
}
},
"required": [
"conteudo"
],
"additionalProperties": false
},
"criadoEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"expiraEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"pagaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"canceladaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"expiradaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"estornadaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"ambiente": {
"type": "string",
"enum": [
"TESTE",
"PRODUCAO"
]
}
},
"required": [
"id",
"status",
"valorCentavos",
"pontoDeVendaId",
"lojaId",
"referenciaExterna",
"metadados",
"criadoEm",
"expiraEm",
"pagaEm",
"canceladaEm",
"expiradaEm",
"estornadaEm",
"ambiente"
],
"additionalProperties": false
}
PontoDeVenda
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"identificadorExterno": {
"type": "string"
},
"nome": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ATIVO",
"DESATIVADO"
]
},
"loja": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"nomeFantasia": {
"type": "string"
},
"cidade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"nomeFantasia",
"cidade",
"estado"
],
"additionalProperties": false
},
"ativadoEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"desativadoEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"ambiente": {
"type": "string",
"enum": [
"TESTE",
"PRODUCAO"
]
}
},
"required": [
"id",
"identificadorExterno",
"nome",
"status",
"loja",
"ativadoEm",
"desativadoEm",
"ambiente"
],
"additionalProperties": false
}
Evento
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "evt_…: use para não processar o mesmo evento duas vezes"
},
"tipo": {
"type": "string",
"enum": [
"cobranca.paga",
"cobranca.cancelada",
"cobranca.expirada",
"cobranca.estornada",
"ponto_de_venda.desativado",
"ponto_de_venda.reativado",
"ping"
]
},
"criadoEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"ambiente": {
"type": "string",
"enum": [
"TESTE",
"PRODUCAO"
]
},
"dados": {
"type": "object",
"properties": {
"cobranca": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Id da cobrança (é o `tid` do QR)"
},
"status": {
"type": "string",
"enum": [
"PENDENTE",
"PAGA",
"CANCELADA",
"EXPIRADA",
"ESTORNADA"
]
},
"valorCentavos": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"pontoDeVendaId": {
"type": "string"
},
"lojaId": {
"type": "string"
},
"referenciaExterna": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadados": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"qrCode": {
"description": "Só enquanto PENDENTE",
"type": "object",
"properties": {
"conteudo": {
"type": "string",
"description": "Texto do QR: desenhe com qualquer biblioteca de QR"
},
"imagemPng": {
"description": "data:image/png;base64,… (omitida com ?semImagem=true)",
"type": "string"
}
},
"required": [
"conteudo"
],
"additionalProperties": false
},
"criadoEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"expiraEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"pagaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"canceladaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"expiradaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"estornadaEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"ambiente": {
"type": "string",
"enum": [
"TESTE",
"PRODUCAO"
]
}
},
"required": [
"id",
"status",
"valorCentavos",
"pontoDeVendaId",
"lojaId",
"referenciaExterna",
"metadados",
"criadoEm",
"expiraEm",
"pagaEm",
"canceladaEm",
"expiradaEm",
"estornadaEm",
"ambiente"
],
"additionalProperties": false
},
"pontoDeVenda": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"identificadorExterno": {
"type": "string"
},
"nome": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ATIVO",
"DESATIVADO"
]
},
"loja": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"nomeFantasia": {
"type": "string"
},
"cidade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"nomeFantasia",
"cidade",
"estado"
],
"additionalProperties": false
},
"ativadoEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"desativadoEm": {
"anyOf": [
{
"type": "string",
"description": "Data ISO-8601 com fuso de Brasília, ex. 2026-09-25T14:03:11-03:00"
},
{
"type": "null"
}
]
},
"ambiente": {
"type": "string",
"enum": [
"TESTE",
"PRODUCAO"
]
}
},
"required": [
"id",
"identificadorExterno",
"nome",
"status",
"loja",
"ativadoEm",
"desativadoEm",
"ambiente"
],
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"required": [
"id",
"tipo",
"criadoEm",
"ambiente",
"dados"
],
"additionalProperties": false
}
Erro
{
"type": "object",
"properties": {
"erro": {
"type": "object",
"properties": {
"codigo": {
"type": "string",
"enum": [
"VALIDACAO",
"CAMPO_DESCONHECIDO",
"IDEMPOTENCY_KEY_OBRIGATORIA",
"CENARIO_SO_EM_TESTE",
"CENARIO_INVALIDO",
"CHAVE_INVALIDA",
"CHAVE_REVOGADA",
"PARCEIRO_SUSPENSO",
"PRODUCAO_NAO_LIBERADA",
"APLICATIVO_DESATIVADO",
"CHAVE_EM_NAVEGADOR",
"PDV_NAO_ENCONTRADO",
"COBRANCA_NAO_ENCONTRADA",
"RECURSO_NAO_ENCONTRADO",
"METODO_NAO_PERMITIDO",
"COBRANCA_PENDENTE_EXISTE",
"COBRANCA_NAO_PENDENTE",
"REQUISICAO_EM_ANDAMENTO",
"PDV_JA_ATIVO",
"CODIGO_ATIVACAO_EXPIRADO",
"CORPO_GRANDE",
"CONTENT_TYPE",
"IDEMPOTENCY_CONFLITO",
"PDV_INATIVO",
"LOJA_INATIVA",
"VINCULO_REVOGADO",
"CODIGO_ATIVACAO_INVALIDO",
"LIMITE_EXCEDIDO",
"ERRO_INTERNO",
"INDISPONIVEL"
]
},
"mensagem": {
"type": "string"
},
"detalhes": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"requestId": {
"type": "string",
"description": "Mande este id ao suporte"
}
},
"required": [
"codigo",
"mensagem",
"requestId"
],
"additionalProperties": false
}
},
"required": [
"erro"
],
"additionalProperties": false
}
