Trilha — Partner
Quickstart de integração
Para software houses, sistemas de PDV, fintechs e integradores certificados que conectam a Bumcash em nome de múltiplos lojistas. Você opera com chaves Partner (bmc_live_ptr_…), age sobre locations identificadas por CNPJ e ganha 10% da taxa de cada transação que passa por você.
Se você é o próprio lojista integrando direto, veja a trilha do seu modelo: Recorrência, Varejo ou Híbrido.
Modelo mental — leia antes dos curls
Uma chave Partner é multi-cliente por design. Diferente das chaves Merchant (acopladas a um único CNPJ), chaves Partner identificam o lojista alvo em cada requisição via cnpj ou location_id. Um único integrador atende dezenas de lojistas com uma única chave.
┌────────────────────────────────────────────────────────┐
│ Sua organização (Partner) │
│ org_xxx_partner • status=approved │
└───────────────────────┬────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Loja A │ │ Loja B │ │ Loja C │
│ CNPJ Y │ │ CNPJ Z │ │ CNPJ W │
│ retail │ │ recurr. │ │ hybrid │
└─────────┘ └─────────┘ └─────────┘
cada location vinculada à sua org (e, se quiser, a outros integradores)Por que este desenho: quando a Bumcash vincula uma location à sua org com a taxa de integração ativa, cada venda que o seu sistema faz ali te credita automaticamente 10% da taxa (sem reconciliação manual). Uma loja pode ter outras camadas — o caixa da Bumcash, o QR do cliente, outro integrador — e as vendas delas não são suas: você vê, recebe em webhook e é remunerado só pelo que passou pelas suas chaves. O lojista mantém a relação comercial direta com a Bumcash; você é um canal técnico.
Pré-requisitos
- CNPJ da sua empresa aprovado pela Bumcash com organization_profile.type = partner e status = approved. Registro inicial via POST /v1/register/partner; aprovação manual pela equipe Bumcash.
- Termos de Uso aceitos no portal do integrador.
- Chave Partner de teste emitida (bmc_test_ptr_…) no portal, em Desenvolvedor → Chaves de API. Sua loja sandbox (CNPJ 33333333000191) já existe desde a aprovação e aparece em Desenvolvedor → Sandbox — não é preciso ter nenhum lojista cliente para testar.
- Só para produção: pelo menos um lojista cliente com location vinculada à sua org. Vínculo criado pela Bumcash quando o lojista assina sua integração; aparece em Clientes no portal do integrador.
Sua chave deve carregar as permissões: customers:register, customers:activate, payments:create, recurring:bill_payment, credits:mint, credits:burn, customers:query, transactions:list, earnings:read. Extratos de faturamento são do lojista; a sua parte está em /v1/earnings. Webhooks não exigem permissão — qualquer chave Partner válida pode gerenciar.
URL base
https://api-v2.bumcash.com.br/v1Como você identifica o lojista em cada chamada
Toda escrita aceita um dos dois identificadores do lojista:
| Identificador | Formato | Quando usar |
|---|---|---|
| cnpj | 14 dígitos | Você rastreia o lojista pelo CNPJ no seu próprio banco (caso mais comum). |
| location_id | loc_… | Multi-loja por CNPJ — você integra com a unidade específica e tem o id Bumcash. |
Passo 1
Pré-cadastrar o cliente do lojista
Mesmo endpoint usado pelos merchants diretos, com o lojista alvo identificado pelo CNPJ:
/v1/customers/registerperm: customers:registercurl -X POST https://api-v2.bumcash.com.br/v1/customers/register \
-H "Authorization: Bearer bmc_test_ptr_xxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"cnpj": "33333333000191",
"customer_cpf": "11144477735",
"customer_phone": "+5511987654321",
"external_reference_id": "loja_a_subscription_42",
"idempotency_key": "register_john_at_loja_a_2026-05-02"
}'{
"id": "cust_a1b2c3d4e5f6",
"cpf": "11144477735",
"phone": "+5511987654321",
"status": "pending",
"registered_by_location_id": "loc_sandbox_org_3f9a2c1e",
"external_reference_id": "loja_a_subscription_42",
"registered_at": "2026-05-02T18:30:00.000Z"
}Passo 2
Notificar uma transação (varia por trilha do lojista)
2.A — Pagamento de fatura (lojistas recurrency ou hybrid)
/v1/recurring/bill-paymentperm: recurring:bill_payment (+ customers:activate)curl -X POST https://api-v2.bumcash.com.br/v1/recurring/bill-payment \
-H "Authorization: Bearer bmc_test_ptr_xxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"cnpj": "33333333000191",
"customer_cpf": "11144477735",
"bill_amount": 8990,
"reference_external_id": "fatura_loja_a_2026_05",
"activate": {
"cpf": "11144477735",
"phone": "+5511987654321"
},
"idempotency_key": "bill_loja_a_john_2026-05_v1"
}'2.B — Cashback em venda no PDV (lojistas retail ou hybrid)
/v1/payments/pos-cashbackperm: payments:create (+ customers:activate)curl -X POST https://api-v2.bumcash.com.br/v1/payments/pos-cashback \
-H "Authorization: Bearer bmc_test_ptr_xxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"cnpj": "33333333000191",
"customer_cpf": "11144477735",
"sale_amount": 5000,
"operator_external_id": "operador_caixa_3",
"activate": {
"cpf": "11144477735",
"phone": "+5511987654321"
},
"idempotency_key": "sale_loja_a_2026-05-02_v1"
}'Em ambos os casos a resposta inclui customer_activation indicando se a transação efetivou a ativação ("activated") ou se o cliente já estava ativo ("already_active"). Sua taxa Partner (10%) é calculada automaticamente e contabilizada no feeSplit — consulta o acumulado no Passo 4.
Passo 3
Receber eventos em tempo real (webhooks)
Webhooks são partner-exclusive hoje. Você é o canal técnico, e a Bumcash quer que você saiba imediatamente quando uma transação confirma, um cliente ativa ou uma fatura é estornada.
/v1/webhooksperm: —curl -X POST https://api-v2.bumcash.com.br/v1/webhooks \
-H "Authorization: Bearer bmc_test_ptr_xxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://api.suaempresa.com.br/bumcash/webhooks",
"events": [
"customer.activated",
"recurring.bill_payment.succeeded",
"recurring.bill_payment.refunded",
"payments.pos_cashback.granted"
]
}'{
"id": "wh_a1b2c3d4",
"url": "https://api.suaempresa.com.br/bumcash/webhooks",
"events": [
"customer.activated",
"recurring.bill_payment.succeeded",
"..."
],
"signing_secret": "whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"created_at": "2026-05-02T18:30:00.000Z"
}Cada evento entregue tem a forma:
{
"id": "evt_a1b2c3",
"type": "recurring.bill_payment.succeeded",
"occurred_at": "2026-05-02T18:30:42.123Z",
"location_id": "loc_sandbox_org_3f9a2c1e",
"data": { /* … */ }
}Retry policy: 5 tentativas com backoff exponencial (1m, 5m, 25m, 2h, 12h). Depois o evento entra em failed e fica disponível pra replay manual via POST /v1/webhooks/events/:id/replay. Histórico em GET /v1/webhooks/:id/attempts.
Passo 4
Consultar seus ganhos (10% integration fee)
A cada transação em uma location integrationMode = "partner" vinculada a você, 10% da taxa do comerciante é destinada à sua org. Você consulta o acumulado por período:
/v1/earningsperm: earnings:readcurl 'https://api-v2.bumcash.com.br/v1/earnings?period_start=2026-05-01&period_end=2026-05-31' \
-H "Authorization: Bearer bmc_test_ptr_xxxxxxxxxxxxxxxxxx"{
"period_start": "2026-05-01",
"period_end": "2026-05-31",
"integration_total": 12345,
"recurrency_activator_total": 0,
"retail_activator_total": 0,
"grand_total": 12345,
"line_items": [
{
"transaction_id": "rbp_xxxxxxxxxx",
"location_id": "loc_sandbox_org_3f9a2c1e",
"source": "integration",
"amount": 899,
"occurred_at": "2026-05-02T18:30:42.123Z"
}
]
}Valores em centavos. integration é a parcela da taxa Partner; recurrency_activator / retail_activator aparecem só se sua org também figurar como ativadora do customer (cenário raro).
Bot WhatsApp para os clientes dos seus lojistas
Sua chave ptr_ também dá acesso à superfície de consulta usada por bots WhatsApp — GET /customers/lookup (por CPF ou telefone, com anti-enumeration), GET /customers/:phone/balance, POST /customers/:cpf/confirm-phone e o register do Passo 1. O vínculo segue a mesma regra desta página: sua chave enxerga os clientes registrados, ativados ou com transação (últimos 12 meses) nas locations que você integra. Para a configuração de cada lojista (taxas, expiração), use GET /v1/locations/lookup?cnpj=… — o /locations/me é exclusivo de chaves Merchant.
O passo a passo completo (estados do lookup, atestado de telefone, descoberta da rede) está no guia Bot WhatsApp via API, incluindo a seção Chaves Partner com as diferenças para integradores.
Erros que você vai encontrar
| HTTP | error.code | Causa | O que fazer |
|---|---|---|---|
| 400 | missing_identifier | Nenhum cnpj nem location_id informado. | Envie um dos dois. |
| 400 | conflicting_identifier | Você enviou ambos cnpj e location_id. | Envie apenas um. |
| 400 | customer_pending | Cliente está pending e a chamada não traz activate. | Re-enviar com bloco activate. |
| 400 | customer_blocked | Cliente está blocked. | Não retentar. Notificar internamente. |
| 403 | location_not_integrated | A location existe mas não está vinculada a você. | Confirme com a Bumcash que o vínculo foi criado. |
| 403 | wrong_scope | Tentando usar endpoint partner-only sem chave Partner. | Use uma chave bmc_*_ptr_*. |
| 403 | insufficient_permissions | Sua chave não tem o verbo necessário. | Conferir no portal, em Desenvolvedor → Chaves de API. |
| 404 | customer_not_found | CPF não tem registro vinculado à location informada. | Chamar /customers/register antes — endpoints de transação não auto-cadastram sem activate. |
| 404 | location_not_found | cnpj ou location_id não existe. | Confirme o identificador com o lojista. |
Sandbox — sua loja de teste
Ao aprovar sua organização, a Bumcash cria três lojas de teste vinculadas só à sua org — sua chave bmc_test_ptr_… as enxerga e nenhuma outra chave de integrador. Elas também aparecem no portal, em Desenvolvedor → Sandbox, com o location_id de cada uma.
| CNPJ | Loja | Para testar |
|---|---|---|
| 33333333000191 | Sandbox (integração) | Fluxo completo: cadastro, cashback (10%) e resgate (até 10%). |
| 44444444000191 | Loja sem configuração | Cashback e resgate recusados — location_not_operational. |
| 55555555000191 | Loja inativa | Qualquer operação recusada — location inativa. |
| CPF | Nascimento (fator do resgate) | Comportamento |
|---|---|---|
| 11144477735 | 15/03/1985 | Regular |
| 22255588846 | 22/07/1990 | Regular |
| 33366699957 | 03/11/1978 | Regular |
| 44477711107 | 30/09/1995 | Regular |
| 52998224725 | 10/01/1988 | Regular |
| 20000000027 | 01/01/1980 | Ativação recusada — CPF suspenso |
| 30000000035 | 01/01/1960 | Ativação recusada — titular falecido |
Checklist para produção
- POST /v1/register/partner executado e organização aprovada pela Bumcash.
- Pelo menos um lojista com location vinculada à sua org em produção.
- Termos de Uso aceitos no portal do integrador.
- Chave de produção emitida e armazenada com segurança no vault (nunca em código-fonte).
- signing_secret do webhook em vault; receptor verifica HMAC-SHA256 + deduplica por event.id.
- idempotency_key derivada de algo estável da sua base (ex: bill_<lojista>_<contract>_<periodo>), não UUID aleatório por retentativa.
- Tratamento por error.code específico (não retentar 4xx exceto idempotency_conflict com nova chave).
- Conciliação contábil bate GET /v1/earnings contra sua base interna mensal.
- Validado em sandbox (sua loja 33333333000191 e as de recusa), depois trocada a chave para bmc_live_ptr_…