API documentation
Non-custodial PIX ⇄ DePix gateway on the Liquid Network. Base URL: https://flipdepix.net
Authentication
Use an API Key as Bearer token. create an account and generate a key with the required scopes. The token is shown only once.
Authorization: Bearer fdpx_xxxxxxxxxxxxxxxxxxxxxxxx| Scope | Permits |
|---|---|
deposit:create | Create PIX charges (deposits) |
withdrawal:create | Create withdrawals (DePix → PIX) |
read:transactions | Read deposit/withdrawal status |
read:balance | Read balances |
wallets:read / wallets:write | Read / manage Liquid wallets |
links:manage | Manage payment links |
webhook:manage | Manage webhook endpoints |
Missing scope returns 403 insufficient_scope. POST endpoints that move money require an Idempotency-Key header (unique string per request).
Create deposit (PIX → DePix)
/v1/api/depositEscopo deposit:create. Não-custodial: o DePix vai direto para o seu endereço Liquid; a taxa da plataforma é recolhida via split da Eulen.
// request (Idempotency-Key: <único>)
{
"amountCents": 5000, // R$50,00 que o recebedor quer
"taxId": "12345678900", // CPF/CNPJ do pagador (obrigatório)
"walletId": "…", // opcional; usa a carteira padrão
"passFeesToPayer": true // padrão: pagador cobre a taxa
}
// 201 response
{
"id": "ckv…",
"status": "PENDING",
"amountCents": 5000,
"feeCents": 199, // sua taxa configurada (ex.)
"totalCents": 5199, // o que o pagador paga
"pixQrCode": "0002…", // copia e cola (EMV)
"pixQrImage": "https://…png"
}/v1/api/deposit/{id}/statusEscopo read:transactions. Status: PENDING → CONFIRMED. Falha: FAILED. REFUNDED = MED (estorno PIX), pode ocorrer mesmo após confirmado.
Create withdrawal (DePix → PIX)
/v1/api/withdrawEscopo withdrawal:create.
// request (Idempotency-Key: <único>)
{
"amountCents": 10000, // R$100,00 recebidos via PIX
"pixKey": "[email protected]",
"pixKeyType": "EMAIL", // CPF | CNPJ | EMAIL | PHONE | EVP
"taxId": "12345678900"
}
// response — envie DePix para depositAddress
{
"id": "ckv…",
"status": "PENDING",
"amountCents": 10000,
"feeCents": 100,
"depositAddress": "lq1…", // envie DePix aqui
"depositAmountCents": 10123 // este tanto de DePix (inclui taxa do provedor)
}/v1/api/withdraw/{id}/statusStatus: PENDING → PROCESSING → COMPLETED. Falha: FAILED / EXPIRED.
Webhooks (outbound)
Assine endpoints em sign up. Em cada evento terminal enviamos um POST assinado:
// body
{ "event": "deposit.confirmed", "data": { "id": "ckv…", … } }
// headers
X-Webhook-Event: deposit.confirmed
X-Webhook-Signature: sha256=<HMAC-SHA256 do corpo, com o secret do endpoint>Eventos: deposit.confirmed, deposit.refunded, deposit.failed, withdrawal.completed, withdrawal.failed. Verifique recomputando o HMAC sobre o corpo cru. Entregas são registradas em Webhook logs; trate os eventos de forma idempotente (dedupe por data.id + evento).
Register webhook (API)
Escopo webhook:manage. Registre a URL que receberá os eventos — o secret retornado assina cada entrega (guarde-o).
/v1/api/webhook-endpoints// request
{ "url": "https://seu-servidor.com/webhooks/flipdepix" }
// 201 response
{ "id": "ckv…", "url": "https://…", "secret": "whsec_…" } // secret exibido só aqui/v1/api/webhook-endpoints/v1/api/webhook-endpoints/{id}/v1/api/webhook-endpoints/{id}/v1/api/webhook-deliveriesWallets + balance
O DePix cai na sua carteira Liquid — cadastre ao menos uma (padrão) antes de criar depósitos.
/v1/api/wallets/v1/api/wallets/v1/api/wallets/{id}/v1/api/balance/v1/api/transactions/v1/api/fees// POST /v1/api/wallets (wallets:write)
{ "liquidAddress": "lq1…", "label": "Principal", "makeDefault": true }MEDs / Chargebacks
Lista os estornos (depósitos revertidos) da sua conta. Cada item traz tipo: estorno (pago por CPF/CNPJ diferente do informado — titularidade divergente) ou med (pago com o CPF informado e ainda revertido — possível contestação, o caso de risco). Cruze pelo depositId com a sua ordem.
/v1/api/meds// GET /v1/api/meds (read:transactions)
{ "alerts": [
{ "id": "…", "depositId": "cmr…", "providerRef": "019f…", "blockchainTxId": "…",
"tipo": "estorno" | "med", "cpfDivergente": true,
"amountCents": 2599, "payerName": "FULANO",
"cpfReal": "12345678900", "cpfRequisitado": "99999999999",
"status": "PENDING", "deadline": "…", "createdAt": "…" } ] }Checkout — Payment links
Crie links de cobrança PIX por API. A página pública de pagamento fica em https://flipdepix.net/pay/{slug}. A taxa é absorvida por você (recebedor) — o pagador paga o valor cheio. amountCents entre R$ 2,00 e R$ 6.000,00; omita para valor aberto (o pagador escolhe). Requer o escopo links:manage.
/v1/api/payment-links/v1/api/payment-links/v1/api/payment-links/{id}/v1/api/payment-links/{id}// POST /v1/api/payment-links (links:manage)
{ "title": "Mensal", "description": "Plano mensal", "amountCents": 2599 }
// → 201 { "id", "slug": "ab12cd34", "amountCents": 2599, "active": true, ... }
// Link público: https://flipdepix.net/pay/ab12cd34
// PATCH /v1/api/payment-links/{id} → ativar / desativar
{ "active": false }Fees
Default platform fees (your account may have custom values — query GET /v1/api/fees):
| Deposit | 2% + R$ 0,99 |
| Withdrawal | Grátis |
The feeCents returned in each response reflects this fee schedule.
Per-transaction limits (deposit and withdrawal): R$ 2,00 – R$ 6.000,00. Out-of-range amounts return 400 invalid_amount.
Errors
| HTTP | Códigos |
|---|---|
400 | invalid_amount · invalid_tax_id · invalid_pix_key · invalid_pix_key_type · missing_idempotency_key · no_liquid_address |
401 | unauthorized |
403 | insufficient_scope · deposits_disabled · withdrawals_disabled |
409 | previous_error · idempotency_mismatch · in_progress |
422 | payer_declined |
429 | rate_limited |
502 | provider_error |
503 | not_configured |
Toda resposta de erro tem o formato { "error": "<código>", "message": "<texto>" }. Trate por error (estável); o message pode ser exibido ao usuário.
invalid_pix_keyHTTP 400A chave PIX do saque é inválida (não bate com o pixKeyType: CPF=11 díg., CNPJ=14, EMAIL, PHONE=+55…, EVP=aleatória). Corrija a chave e reenvie com uma Idempotency-Key NOVA.
previous_errorHTTP 409Você reenviou uma requisição com uma Idempotency-Key que JÁ falhou antes. A idempotência não reprocessa a mesma key — gere uma Idempotency-Key nova para cada nova tentativa (após corrigir a causa do erro anterior).
payer_declinedHTTP 422O pagador foi recusado pela análise de conformidade do provedor. NÃO adianta repetir com o mesmo CPF/CNPJ — solicite o pagamento com outro pagador ou contate o suporte. A mensagem em `message` pode ser exibida ao usuário.
provider_errorHTTP 502Falha temporária no provedor (ex.: indisponibilidade). Pode tentar novamente em alguns instantes com a mesma Idempotency-Key.
invalid_amountHTTP 400Valor fora dos limites permitidos por transação. Ajuste o valor e reenvie.
invalid_tax_idHTTP 400CPF/CNPJ do pagador em formato inválido (11 ou 14 dígitos, só números). Corrija antes de reenviar.