Skip to content

Conceitos

Conceitos fundamentais para integrar com a API da Owem Pay.

Arquitetura de Seguranca

A API utiliza tres camadas de protecao independentes. Todas sao obrigatorias.

Camada 1 -- API Key + Secret

Cada integrador recebe um par de credenciais (client_id e client_secret). O secret nunca e armazenado em texto puro -- guardamos apenas o hash. Quando uma requisicao chega, o secret enviado e comparado com o hash armazenado. Se nao corresponder, a requisicao e rejeitada imediatamente, antes de chegar a logica de negocio.

Camada 2 -- Assinatura HMAC-SHA512 por Requisicao

Alem da API Key, cada requisicao transacional (POST) precisa enviar uma assinatura HMAC-SHA512 no header hmac.

O processo funciona assim:

  1. O integrador serializa o body da requisicao como JSON
  2. Gera o hash HMAC-SHA512 usando o client_secret como chave
  3. Envia o hash em hexadecimal no header hmac

Do nosso lado, recalculamos o hash com o mesmo metodo e comparamos com o valor recebido. Se qualquer byte do conteudo for alterado no caminho (por exemplo, em um ataque man-in-the-middle), a assinatura nao vai bater e a requisicao e rejeitada com erro 401. Essa comparacao e feita em tempo constante (constant-time comparison), o que evita ataques de timing que tentam descobrir a assinatura byte a byte.

Camada 3 -- Whitelist de IP Obrigatoria

Cada API Key so pode ser usada a partir de IPs previamente autorizados. Mesmo que alguem tenha acesso as credenciais, nao conseguira usar a API a partir de outro IP. Requisicoes de IPs nao autorizados recebem 403 Forbidden.

Protecoes Adicionais

ProtecaoDescricao
Rate Limiting60.000 requisicoes/minuto por IP. Endpoints sem autenticacao: 5 req/min
Cloud Armor (WAF)Firewall de aplicacao protegendo o cluster GKE
HTTPS obrigatorioTLS 1.2 ou superior em todas as conexoes
HSTSHTTP Strict Transport Security habilitado

Detalhes completos: Autenticacao | HMAC-SHA512

Por que HMAC e nao mTLS?

O mTLS (mutual TLS) adiciona autenticacao via certificado X.509 no nivel da conexao. E uma camada valida, mas no nosso cenario o HMAC por requisicao oferece protecao equivalente ou mais adequada:

AspectomTLSHMAC-SHA512
O que validaA conexao (canal TLS)Cada requisicao individualmente
Integridade do payloadNao -- se a conexao e confiavel, requisicoes passamSim -- qualquer alteracao no body rejeita a requisicao
Gestao operacionalComplexa: emissao, rotacao, revogacao, CRL/OCSPSimples: gera novo par, atualiza, invalida anterior
Incidentes comunsCertificados expirados ou mal gerenciadosRaros -- chave e string, sem ciclo de vida complexo

O TLS ja garante criptografia do transporte. O HMAC entra como camada adicional, garantindo integridade e autenticidade do payload -- algo que o mTLS por si so nao cobre.

Valores Monetarios

A API Owem Pay usa duas unidades diferentes dependendo da direcao:

DirecaoUnidadeEscalaExemplo R$ 30,00
Requisicao enviada (request body)centavosBRL x 1003000
Resposta recebida (response body)unidades baseBRL x 10.000300000

Conversao rapida

  • Para enviar: multiplique o valor em reais por 100. R$ 30,00 = 3000
  • Para ler respostas: divida por 10.000. 300000 / 10.000 = R$ 30,00
  • Nunca use ponto flutuante -- sempre inteiros

Tabela de referencia

Valor BRLRequest (centavos)Response (unidades base)
R$ 1,0010010000
R$ 30,003000300000
R$ 150,50150501505000
R$ 1.000,0010000010000000

Atencao

O valor 3000 na requisicao (R$ 30,00) vira 300000 na resposta. Sao o mesmo valor em BRL, representado em unidades diferentes. Se voce dividir a resposta por 100 em vez de 10.000, obtera R$ 3.000,00 em vez de R$ 30,00.

External ID

O campo external_id e um identificador opcional que voce define no seu sistema para rastrear transacoes. Ele e aceito nos endpoints de cash-in e cash-out e devolvido em todas as respostas e webhooks associados.

AtributoValor
ObrigatorioNao
Tamanho maximo128 caracteres
Caracteres permitidosAlfanumericos, ., _, :, -
Regex^[a-zA-Z0-9._:\-]+$
Exemplo"order-9876", "invoice-4521", "ref:2026-03-07:001"

Alem de ser retornado nas respostas, voce pode consultar uma transacao pelo external_id:

GET /api/external/transactions/ref/{external_id}

Rastreamento

Use o external_id para correlacionar transacoes da Owem Pay com pedidos, faturas ou registros do seu sistema. Valores duplicados nao sao rejeitados, mas recomendamos unicidade para facilitar a conciliacao.

Idempotencia

Requisicoes de escrita (POST) aceitam o header Idempotency-Key para evitar processamento duplicado. Se a mesma chave for enviada em uma segunda requisicao identica dentro de 24 horas, a API retorna a resposta original cacheada em vez de processar novamente.

Idempotency-Key: unique-request-id-123
AtributoValor
HeaderIdempotency-Key
Tamanho maximo256 caracteres
TTL do cache24 horas
Aplica-se aApenas POST (cash-in, cash-out, refund, webhooks, CPF)
Resposta replayHeader X-Idempotent-Replay: true

Importante

A chave de idempotencia considera metodo + path + chave. Duas requisicoes para endpoints diferentes com a mesma chave sao tratadas como operacoes distintas.

Status de Transacao

Cash In (Recebimentos)

StatusDescricao
activeQR Code gerado, aguardando pagamento
pendingPagamento detectado, em processamento
completedPagamento confirmado e creditado na conta
failedPagamento falhou
cancelledQR Code expirado (24h) ou cancelado

Cash Out (Envios)

StatusDescricao
pending_approvalAguardando aprovacao (fluxo criar + aprovar)
processingEnviado ao SPI, aguardando liquidacao
completedLiquidado com sucesso
failedRejeitado pelo SPI ou erro no processamento
refundedDevolvido (total ou parcialmente)

End-to-End ID (E2E ID)

Identificador unico de uma transacao PIX no ecossistema do Banco Central. Formato padrao:

E{ISPB}{YYYYMMDDHHMM}{sequencial}

Exemplo: E37839059202603071530000001

ComponenteValorDescricao
EPrefixo fixoIdentifica como E2E ID
37839059ISPB da Owem Pay8 digitos
202603071530Data e hora UTCAAAAMMDDHHMM (12 digitos)
000001Sequencial6 digitos

O E2E ID e gerado automaticamente pela Owem Pay e retornado na resposta de cada operacao PIX. Use-o para rastrear transacoes entre instituicoes.

Tipos de Chave PIX

TipoFormatoExemploLimite PFLimite PJ
cpf11 digitos123456789011--
cnpj14 digitos12345678000190--1
emailE-mail validocontato@empresa.com.br520
phone+55 + DDD + numero+5511999998888520
evpUUID v4 (chave aleatoria)a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d520

Padrao de Resposta

Todas as respostas da API seguem o padrao:

Sucesso

json
{
  "worked": true,
  ...
}

Erro

json
{
  "worked": false,
  "detail": "Descricao do erro"
}

O campo worked indica se a operacao foi bem-sucedida (true) ou falhou (false). Em caso de erro, o campo detail descreve o motivo.

Owem Pay Instituição de Pagamento — ISPB 37839059