Ir para o conteúdo
Sharkpay

Documentação da API

Integre pagamentos, saques e webhooks ao seu sistema com uma API HTTP/JSON aberta e documentada.

API 2026-10-14

Referência da API

Esta página é gerada a partir da especificação OpenAPI (30 operações), a mesma que o backend valida em testes automatizados. Versão da API: 2026-10-14.

Convenções

  • Base: https://sharkpay.com.br. Todas as rotas abaixo começam com esse endereço.
  • Autenticação: Authorization: Bearer <token>, exceto onde indicado.
  • Erros: veja Erros. Todas as rotas autenticadas podem responder 401, 429 e 500.
  • Campos marcados obrigatório são exigidos pelo servidor; deprecated indica nomes legados mantidos por compatibilidade.

Autenticação

POST

/api/auth

Obter token de acesso · authenticate Basic

Respostas

HTTPDescrição
200Token emitido.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
429Limite de requisições excedido. Aguarde `Retry-After` segundos.
Campos da resposta de sucesso
CampoTipoDescrição
successobject
success.tokenstring
success.token_typestring
success.expires_inintegerValidade em segundos (PASSPORT_TOKEN_DAYS, padrão 30 dias).
Exemplo · Obter token de acesso
#!/usr/bin/env bash
# Obter token de acesso (chave pública + chave secreta em HTTP Basic)
set -euo pipefail
: "${SHARKPAY_BASE_URL:?}" "${SHARKPAY_PUBLIC_KEY:?}" "${SHARKPAY_SECRET_KEY:?}"
curl -sS --fail-with-body -X POST "$SHARKPAY_BASE_URL/api/auth" \
  -u "$SHARKPAY_PUBLIC_KEY:$SHARKPAY_SECRET_KEY"
echo

Cobranças

GET

/api/invoices

Listar cobranças · listInvoices Bearer

Parâmetros

NomeEmTipoDescrição
pagequeryinteger (≥ 1)
limitqueryinteger (≥ 1, ≤ 50)
invoice_noquerystringBusca parcial pelo número informado na criação.
emailquerystringBusca parcial por e-mail.
start_datequerystring (date)Use junto com end_date.
end_datequerystring (date)

Respostas

HTTPDescrição
200Página de cobranças (somente as suas).
401Token ausente/inválido/expirado, ou credenciais incorretas.
422Campos inválidos.
Campos da resposta de sucesso
CampoTipoDescrição
invoicesarray<object>
invoices[].idinteger
invoices[].ref_idstring
invoices[].invoice_nostring
invoices[].emailstring
invoices[].due_datestring | null
invoices[].itemstring
invoices[].notesstring | null
invoices[].quantityinteger
invoices[].amountstring
invoices[].taxstringValor do imposto em moeda.
invoices[].discountstringValor do desconto em moeda.
invoices[].chargestring
invoices[].totalstring
invoices[].currencystring | null
invoices[].statusstring (PENDING, PAID, CANCELED, REFUNDED)
invoices[].created_atstring
invoices[].updated_atstring
invoices[].boletoobject
invoices[].pixobject
invoices[].customerobject
invoices[].customer.idinteger
invoices[].customer.namestring
invoices[].customer.documentstring
invoices[].customer.document_typestring
invoices[].customer.zipcodestring
invoices[].customer.countryobject
invoices[].customer.stateobject
invoices[].customer.citystring
invoices[].customer.districtstring
invoices[].customer.streetstring
invoices[].customer.numberstring
invoices[].customer.emailstring
invoices[].customer.phonestring
invoices[].customer.mobilephonestring
invoices[].transactionsarray<object>
paginationobject
pagination.pageinteger
pagination.limitinteger
Exemplo · Listar cobranças
#!/usr/bin/env bash
# Listar cobranças
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X GET "$SHARKPAY_BASE_URL/api/invoices?page=1&limit=10" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN"
echo
GET

/api/invoice/{invoice_id}

Consultar cobrança pelo id numérico · getInvoice Bearer

Parâmetros

NomeEmTipoDescrição
invoice_idobrigatóriopathinteger

Respostas

HTTPDescrição
200Cobrança.
401Token ausente/inválido/expirado, ou credenciais incorretas.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
invoiceobject
invoice.idinteger
invoice.ref_idstring
invoice.invoice_nostring
invoice.emailstring
invoice.due_datestring | null
invoice.itemstring
invoice.notesstring | null
invoice.quantityinteger
invoice.amountstring
invoice.taxstringValor do imposto em moeda.
invoice.discountstringValor do desconto em moeda.
invoice.chargestring
invoice.totalstring
invoice.currencystring | null
invoice.statusstring (PENDING, PAID, CANCELED, REFUNDED)
invoice.created_atstring
invoice.updated_atstring
invoice.boletoobject
invoice.pixobject
invoice.customerobject
invoice.customer.idinteger
invoice.customer.namestring
invoice.customer.documentstring
invoice.customer.document_typestring
invoice.customer.zipcodestring
invoice.customer.countryobject
invoice.customer.stateobject
invoice.customer.citystring
invoice.customer.districtstring
invoice.customer.streetstring
invoice.customer.numberstring
invoice.customer.emailstring
invoice.customer.phonestring
invoice.customer.mobilephonestring
invoice.transactionsarray<object>
GET

/api/invoice/ref/{ref_id}

Consultar cobrança pela referência (INV-xxxxxx) · getInvoiceByRef Bearer

Parâmetros

NomeEmTipoDescrição
ref_idobrigatóriopathstring

Respostas

HTTPDescrição
200Cobrança.
401Token ausente/inválido/expirado, ou credenciais incorretas.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
invoiceobject
invoice.idinteger
invoice.ref_idstring
invoice.invoice_nostring
invoice.emailstring
invoice.due_datestring | null
invoice.itemstring
invoice.notesstring | null
invoice.quantityinteger
invoice.amountstring
invoice.taxstringValor do imposto em moeda.
invoice.discountstringValor do desconto em moeda.
invoice.chargestring
invoice.totalstring
invoice.currencystring | null
invoice.statusstring (PENDING, PAID, CANCELED, REFUNDED)
invoice.created_atstring
invoice.updated_atstring
invoice.boletoobject
invoice.pixobject
invoice.customerobject
invoice.customer.idinteger
invoice.customer.namestring
invoice.customer.documentstring
invoice.customer.document_typestring
invoice.customer.zipcodestring
invoice.customer.countryobject
invoice.customer.stateobject
invoice.customer.citystring
invoice.customer.districtstring
invoice.customer.streetstring
invoice.customer.numberstring
invoice.customer.emailstring
invoice.customer.phonestring
invoice.customer.mobilephonestring
invoice.transactionsarray<object>
Exemplo · Consultar cobrança pela referência (INV-xxxxxx)
#!/usr/bin/env bash
# Consultar cobrança pela referência
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X GET "$SHARKPAY_BASE_URL/api/invoice/ref/$SHARKPAY_REF" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN"
echo
POST

/api/creditcard/create

Cobrar cartão de crédito · createCreditcardCharge Bearer

Cria a cobrança e tenta autorizar na hora. Os dados do cartão passam pelo seu servidor e pelo SharkPay:
isso traz obrigações PCI DSS para quem os coleta.
Nunca registre número/CVV em logs.
Requer o método "cartão" habilitado para a conta. total = amount × quantity + imposto% − desconto%.

Parâmetros

NomeEmTipoDescrição
Idempotency-Keyheaderstring (mín. 8, máx. 100)Recomendado. 8–100 caracteres A-Za-z0-9_.:-.

Corpo (JSON)

CampoTipoDescrição
amountobrigatório number (≤ 999999999, > 0)Valor unitário.
quantityobrigatório integer (≥ 1, ≤ 100000)
discountobrigatório number (≥ 0, ≤ 100)Desconto em %.
taxobrigatório number (≥ 0, ≤ 100)Imposto em %.
invoice_noobrigatório string (máx. 100)
due_dateobrigatório string (date)
item_nameobrigatório string (máx. 255)
notesopcional string (máx. 500)
emailobrigatório string (email)
installmentsobrigatório integer (≥ 1, ≤ 24)
creditcard_holderobrigatório string
creditcard_numberobrigatório string
creditcard_cvvobrigatório string
creditcard_monthobrigatório integer (≥ 1, ≤ 12)
creditcard_yearobrigatório integer4 dígitos.
creditcard_brandobrigatório string

Respostas

HTTPDescrição
200Pagamento aprovado.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
409A mesma Idempotency-Key ainda está em processamento.
422Campos inválidos.
500Falha inesperada. Seguro repetir com a mesma Idempotency-Key.
Campos da resposta de sucesso
CampoTipoDescrição
invoiceobject
invoice.referencestring
invoice.totalstring
invoice.due_datestring
invoice.statusstring (PENDING, PAID, CANCELED, REFUNDED)
invoice.transactionobject
invoice.transaction.idstring
invoice.transaction.amountstring
invoice.transaction.statusinteger
invoice.transaction.descriptionstring
invoice.transaction.methodstring
Exemplo · Cobrar cartão de crédito
#!/usr/bin/env bash
# Cobrar cartão de crédito
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
DUE=$(date -d "+7 days" +%F 2>/dev/null || date -v+7d +%F)  # vencimento daqui a 7 dias
curl -sS --fail-with-body -X POST "$SHARKPAY_BASE_URL/api/creditcard/create" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN" \
  -H "Idempotency-Key: ${IDEMPOTENCY_KEY:-$(uuidgen)}" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 100,
  "quantity": 1,
  "discount": 0,
  "tax": 0,
  "installments": 3,
  "invoice_no": "PED-1003",
  "due_date": "'"$DUE"'",
  "item_name": "Assinatura",
  "email": "maria@example.com",
  "creditcard_holder": "MARIA SOUZA",
  "creditcard_number": "4111111111111111",
  "creditcard_cvv": "123",
  "creditcard_month": 12,
  "creditcard_year": 2030,
  "creditcard_brand": "Visa"
}'
echo
POST

/api/boleto/create

Emitir boleto · createBoleto Bearer

Requer o método "boleto" habilitado e um cliente já cadastrado (POST /api/customer).

Parâmetros

NomeEmTipoDescrição
Idempotency-Keyheaderstring (mín. 8, máx. 100)Recomendado. 8–100 caracteres A-Za-z0-9_.:-.

Corpo (JSON)

CampoTipoDescrição
amountobrigatório number (≤ 999999999, > 0)Valor unitário.
quantityobrigatório integer (≥ 1, ≤ 100000)
discountobrigatório number (≥ 0, ≤ 100)Desconto em %.
taxopcional number (≥ 0, ≤ 100)Imposto em %.
invoice_noobrigatório string (máx. 100)
due_dateobrigatório string (date)
item_nameobrigatório string (máx. 255)
notesopcional string (máx. 500)
customerobrigatório integerId de um cliente seu (POST /api/customer).
instructionsopcional string (máx. 255)

Respostas

HTTPDescrição
200Boleto emitido.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
409A mesma Idempotency-Key ainda está em processamento.
422Campos inválidos.
500Falha inesperada. Seguro repetir com a mesma Idempotency-Key.
Campos da resposta de sucesso
CampoTipoDescrição
invoiceobject
invoice.referencestring
invoice.totalstring | number
invoice.due_datestring (date)
invoice.statusstring (PENDING, PAID, CANCELED, REFUNDED)
invoice.boletostringURL do boleto.
invoice.barcodestring
invoice.digitablestring
Exemplo · Emitir boleto
#!/usr/bin/env bash
# Emitir boleto
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
DUE=$(date -d "+7 days" +%F 2>/dev/null || date -v+7d +%F)  # vencimento daqui a 7 dias
curl -sS --fail-with-body -X POST "$SHARKPAY_BASE_URL/api/boleto/create" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN" \
  -H "Idempotency-Key: ${IDEMPOTENCY_KEY:-$(uuidgen)}" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 150,
  "quantity": 1,
  "discount": 0,
  "tax": 0,
  "invoice_no": "PED-1002",
  "due_date": "'"$DUE"'",
  "item_name": "Plano anual",
  "customer": '"$SHARKPAY_CUSTOMER_ID"',
  "instructions": "Não receber após o vencimento"
}'
echo

Pix

POST

/api/pix/create

Criar cobrança Pix (QR Code e copia-e-cola) · createPixCharge Bearer

Requer o método Pix habilitado. A confirmação chega por webhook (invoice.paid) ou consulta.

Parâmetros

NomeEmTipoDescrição
Idempotency-Keyheaderstring (mín. 8, máx. 100)Recomendado. 8–100 caracteres A-Za-z0-9_.:-.

Corpo (JSON)

CampoTipoDescrição
amountobrigatório number (≤ 999999999, > 0)Valor unitário.
quantityobrigatório integer (≥ 1, ≤ 100000)
discountobrigatório number (≥ 0, ≤ 100)Desconto em %.
taxobrigatório number (≥ 0, ≤ 100)Imposto em %.
invoice_noobrigatório string (máx. 100)
due_dateobrigatório string (date)
item_nameobrigatório string (máx. 255)
notesopcional string (máx. 500)
emailobrigatório string (email)
documentobrigatório stringCPF/CNPJ do pagador.
clientobrigatório stringNome do pagador.

Respostas

HTTPDescrição
200Cobrança criada.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
409A mesma Idempotency-Key ainda está em processamento.
422Campos inválidos.
500Falha inesperada. Seguro repetir com a mesma Idempotency-Key.
Campos da resposta de sucesso
CampoTipoDescrição
invoiceobject
invoice.referencestring
invoice.totalstring
invoice.txidstring
invoice.due_datestring
invoice.copystringCódigo Pix copia-e-cola.
invoice.qrcodestringImagem do QR Code (conteúdo para exibição).
Exemplo · Criar cobrança Pix (QR Code e copia-e-cola)
#!/usr/bin/env bash
# Criar cobrança Pix
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
DUE=$(date -d "+7 days" +%F 2>/dev/null || date -v+7d +%F)  # vencimento daqui a 7 dias
curl -sS --fail-with-body -X POST "$SHARKPAY_BASE_URL/api/pix/create" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN" \
  -H "Idempotency-Key: ${IDEMPOTENCY_KEY:-$(uuidgen)}" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 100,
  "quantity": 2,
  "discount": 10,
  "tax": 5,
  "invoice_no": "PED-1001",
  "due_date": "'"$DUE"'",
  "item_name": "Camiseta",
  "email": "maria@example.com",
  "document": "12345678909",
  "client": "Maria Souza",
  "notes": "Pedido 1001"
}'
echo
GET

/api/pix/invoice/{ref}

Consultar cobrança (registro bruto) pela referência · getPixInvoice Bearer

Parâmetros

NomeEmTipoDescrição
refobrigatóriopathstring

Respostas

HTTPDescrição
200Registro da cobrança.
401Token ausente/inválido/expirado, ou credenciais incorretas.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
invoiceobject
GET

/api/pix/txid/{txid}

Consultar cobrança (registro bruto) pelo txid do Pix · getPixByTxid Bearer

Parâmetros

NomeEmTipoDescrição
txidobrigatóriopathstring

Respostas

HTTPDescrição
200Registro da cobrança.
401Token ausente/inválido/expirado, ou credenciais incorretas.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
invoiceobject

Saques Pix

POST

/api/pixout/create

Solicitar saque Pix · createPixout Bearer

Reserva o saldo (valor + tarifa) de forma atômica e envia ao banco. Idempotency-Key é obrigatório.
Se o banco recusar, o valor é estornado e o saque fica CANCELED.

Parâmetros

NomeEmTipoDescrição
Idempotency-Keyobrigatórioheaderstring (mín. 8, máx. 100)

Corpo (JSON)

CampoTipoDescrição
amountobrigatório number (> 0)
pixkeyobrigatório string (máx. 140)
keytypeobrigatório string (CPF, CNPJ, EMAIL, PHONE, EVP)
clientopcional string
documentopcional string
emailopcional string (email)
descriptionopcional string (máx. 140)

Respostas

HTTPDescrição
200Saque registrado.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
409A mesma Idempotency-Key ainda está em processamento.
422Campos inválidos.
500Falha inesperada. Seguro repetir com a mesma Idempotency-Key.
Campos da resposta de sucesso
CampoTipoDescrição
successboolean
messagestring
withdrawobject
withdraw.referencestring
withdraw.totalstringvalor + tarifa
withdraw.chargestring
withdraw.loquidAmount deprecatedstringNome legado (grafia original). Use netAmount.
withdraw.netAmountstring
withdraw.statusstring (PENDING, PAID, CANCELED)
withdraw.pixkeystring
withdraw.keytypestring
withdraw.destinataryNamestring | null
withdraw.destinataryDocumentstring | null
withdraw.destinataryEmailstring | null
withdraw.paidAtstring | null
withdraw.entoend deprecatedstring | nullNome legado. Use endToEndId.
withdraw.endToEndIdstring | null
withdraw.errorMsgstring | null
withdraw.created_atstring
withdraw.updated_atstring
Exemplo · Solicitar saque Pix
#!/usr/bin/env bash
# Solicitar saque Pix
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X POST "$SHARKPAY_BASE_URL/api/pixout/create" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN" \
  -H "Idempotency-Key: ${IDEMPOTENCY_KEY:-$(uuidgen)}" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 50,
  "pixkey": "maria@example.com",
  "keytype": "EMAIL",
  "client": "Maria Souza",
  "document": "12345678909",
  "description": "Repasse"
}'
echo
GET

/api/pixout/withdraw/{txid}

Consultar saque pela referência · getPixout Bearer

Parâmetros

NomeEmTipoDescrição
txidobrigatóriopathstringValor de reference do saque.

Respostas

HTTPDescrição
200Saque.
401Token ausente/inválido/expirado, ou credenciais incorretas.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
successboolean
withdrawobject
withdraw.referencestring
withdraw.totalstringvalor + tarifa
withdraw.chargestring
withdraw.loquidAmount deprecatedstringNome legado (grafia original). Use netAmount.
withdraw.netAmountstring
withdraw.statusstring (PENDING, PAID, CANCELED)
withdraw.pixkeystring
withdraw.keytypestring
withdraw.destinataryNamestring | null
withdraw.destinataryDocumentstring | null
withdraw.destinataryEmailstring | null
withdraw.paidAtstring | null
withdraw.entoend deprecatedstring | nullNome legado. Use endToEndId.
withdraw.endToEndIdstring | null
withdraw.errorMsgstring | null
withdraw.created_atstring
withdraw.updated_atstring
Exemplo · Consultar saque pela referência
#!/usr/bin/env bash
# Consultar saque
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X GET "$SHARKPAY_BASE_URL/api/pixout/withdraw/$SHARKPAY_WITHDRAW_REF" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN"
echo
GET

/api/pixout/list

Listar saques (25 por página) · listPixouts Bearer

Parâmetros

NomeEmTipoDescrição
pagequeryinteger (≥ 1)
startquerystring (date)YYYY-MM-DD
endquerystring (date)YYYY-MM-DD
statusquerystring (PENDING, PAID, CANCELED)

Respostas

HTTPDescrição
200Saques.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
Campos da resposta de sucesso
CampoTipoDescrição
successboolean
withdrawalsarray<object>
withdrawals[].referencestring
withdrawals[].totalstringvalor + tarifa
withdrawals[].chargestring
withdrawals[].loquidAmount deprecatedstringNome legado (grafia original). Use netAmount.
withdrawals[].netAmountstring
withdrawals[].statusstring (PENDING, PAID, CANCELED)
withdrawals[].pixkeystring
withdrawals[].keytypestring
withdrawals[].destinataryNamestring | null
withdrawals[].destinataryDocumentstring | null
withdrawals[].destinataryEmailstring | null
withdrawals[].paidAtstring | null
withdrawals[].entoend deprecatedstring | nullNome legado. Use endToEndId.
withdrawals[].endToEndIdstring | null
withdrawals[].errorMsgstring | null
withdrawals[].created_atstring
withdrawals[].updated_atstring

Clientes

POST

/api/customer

Cadastrar cliente · createCustomer Bearer

Parâmetros

NomeEmTipoDescrição
Idempotency-Keyheaderstring (mín. 8, máx. 100)Recomendado. 8–100 caracteres A-Za-z0-9_.:-.

Corpo (JSON)

CampoTipoDescrição
nameobrigatório string
documentobrigatório string
document_typeobrigatório string (CPF, CNPJ)
zipcodeobrigatório string
country_idobrigatório integerId de GET /api/country/all.
stateobrigatório string (mín. 2, máx. 2)UF.
cityobrigatório string
districtobrigatório string
streetobrigatório string
numberobrigatório string
emailobrigatório string (email)
phoneobrigatório string
mobilephoneobrigatório string

Respostas

HTTPDescrição
200Cliente criado.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
409Requisição inválida ou regra de negócio violada.
422Campos inválidos.
Campos da resposta de sucesso
CampoTipoDescrição
customerobject
customer.idinteger
customer.namestring
customer.documentstring
customer.document_typestring
customer.zipcodestring
customer.countryobject
customer.country.idinteger
customer.country.isostring
customer.country.namestring
customer.country.nicenamestring
customer.country.iso3string | null
customer.country.numcodeinteger | null
customer.country.phonecodeinteger | null
customer.stateobject
customer.state.namestring
customer.state.ufstring
customer.state.ibgestring | integer | null
customer.state.dddstring | integer | null
customer.citystring
customer.districtstring
customer.streetstring
customer.numberstring
customer.emailstring
customer.phonestring
customer.mobilephonestring
Exemplo · Cadastrar cliente
#!/usr/bin/env bash
# Cadastrar cliente
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X POST "$SHARKPAY_BASE_URL/api/customer" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN" \
  -H "Idempotency-Key: ${IDEMPOTENCY_KEY:-$(uuidgen)}" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Maria Souza",
  "document": "12345678909",
  "document_type": "CPF",
  "zipcode": "01001000",
  "country_id": 30,
  "state": "SP",
  "city": "São Paulo",
  "district": "Sé",
  "street": "Praça da Sé",
  "number": "100",
  "email": "maria@example.com",
  "phone": "1133334444",
  "mobilephone": "11999998888"
}'
echo
GET

/api/customer/{custome_id}

Consultar cliente · getCustomer Bearer

Parâmetros

NomeEmTipoDescrição
custome_idobrigatóriopathintegerId numérico do cliente (o nome do parâmetro mantém a grafia original da rota).

Respostas

HTTPDescrição
200Cliente.
400Requisição inválida ou regra de negócio violada.
401Token ausente/inválido/expirado, ou credenciais incorretas.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
customerobject
customer.idinteger
customer.namestring
customer.documentstring
customer.document_typestring
customer.zipcodestring
customer.countryobject
customer.country.idinteger
customer.country.isostring
customer.country.namestring
customer.country.nicenamestring
customer.country.iso3string | null
customer.country.numcodeinteger | null
customer.country.phonecodeinteger | null
customer.stateobject
customer.state.namestring
customer.state.ufstring
customer.state.ibgestring | integer | null
customer.state.dddstring | integer | null
customer.citystring
customer.districtstring
customer.streetstring
customer.numberstring
customer.emailstring
customer.phonestring
customer.mobilephonestring
GET

/api/customers

Listar/buscar clientes · listCustomers Bearer

Parâmetros

NomeEmTipoDescrição
pagequeryinteger (≥ 1)
limitqueryinteger (≥ 1, ≤ 50)
documentquerystring
namequerystring
emailquerystring
phonequerystring
mobilephonequerystring

Respostas

HTTPDescrição
200Clientes.
401Token ausente/inválido/expirado, ou credenciais incorretas.
Campos da resposta de sucesso
CampoTipoDescrição
customersarray<object>
customers[].idinteger
customers[].namestring
customers[].documentstring
customers[].document_typestring
customers[].zipcodestring
customers[].countryobject
customers[].country.idinteger
customers[].country.isostring
customers[].country.namestring
customers[].country.nicenamestring
customers[].country.iso3string | null
customers[].country.numcodeinteger | null
customers[].country.phonecodeinteger | null
customers[].stateobject
customers[].state.namestring
customers[].state.ufstring
customers[].state.ibgestring | integer | null
customers[].state.dddstring | integer | null
customers[].citystring
customers[].districtstring
customers[].streetstring
customers[].numberstring
customers[].emailstring
customers[].phonestring
customers[].mobilephonestring
paginationobject
pagination.pageinteger
pagination.limitinteger

Checkout hospedado

GET

/api/checkout/{tx_ref}

Consultar o resultado de um checkout hospedado · getCheckout Bearer

Use o tx_ref que você enviou no formulário POST /ext_transfer. Sempre confirme o pagamento por esta
consulta no seu servidor antes de liberar o pedido — o redirecionamento do cliente a callback_url não prova pagamento.

Parâmetros

NomeEmTipoDescrição
tx_refobrigatóriopathstring

Respostas

HTTPDescrição
200Transação.
401Token ausente/inválido/expirado, ou credenciais incorretas.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
checkoutobject
checkout.tx_refstring
checkout.referencestring
checkout.statusstring (PENDING, PAID, ABANDONED, UNKNOWN)
checkout.titlestring
checkout.quantityinteger
checkout.amountstring
checkout.totalstring
checkout.emailstring
checkout.first_namestring
checkout.last_namestring
checkout.payment_typestring | null
checkout.created_atstring
Exemplo · Consultar o resultado de um checkout hospedado
#!/usr/bin/env bash
# Confirmar pagamento do checkout hospedado
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X GET "$SHARKPAY_BASE_URL/api/checkout/$SHARKPAY_TX_REF" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN"
echo

Webhooks

GET

/api/webhook

Ver configuração do webhook · getWebhook Bearer

Respostas

HTTPDescrição
200Configuração (o segredo nunca é devolvido aqui).
401Token ausente/inválido/expirado, ou credenciais incorretas.
Campos da resposta de sucesso
CampoTipoDescrição
webhookobject
webhook.urlstring | null
webhook.secret_configuredboolean
webhook.eventsarray<string>
PUT

/api/webhook

Definir a URL do webhook · setWebhook Bearer

A URL deve ser https, sem credenciais, porta 443/8443 e não pode resolver para IP privado/reservado.
Na primeira configuração é gerado o segredo de assinatura (whsec_...), mostrado uma única vez.

Corpo (JSON)

CampoTipoDescrição
urlobrigatório string (máx. 255, uri)

Respostas

HTTPDescrição
200URL salva.
401Token ausente/inválido/expirado, ou credenciais incorretas.
422Requisição inválida ou regra de negócio violada.
Campos da resposta de sucesso
CampoTipoDescrição
webhookobject
webhook.urlstring
webhook.secretstringSomente na primeira configuração.
webhook.secret_noticestring
Exemplo · Definir a URL do webhook
#!/usr/bin/env bash
# Configurar a URL do webhook
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X PUT "$SHARKPAY_BASE_URL/api/webhook" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "'"$WEBHOOK_URL"'"
}'
echo
POST

/api/webhook/secret/rotate

Gerar novo segredo de assinatura · rotateWebhookSecret Bearer

O segredo anterior deixa de valer imediatamente. O novo é mostrado uma única vez.

Respostas

HTTPDescrição
200Novo segredo.
401Token ausente/inválido/expirado, ou credenciais incorretas.
Campos da resposta de sucesso
CampoTipoDescrição
webhookobject
webhook.secretstring
webhook.secret_noticestring
POST

/api/webhook/test

Enfileirar um evento `ping` · testWebhook Bearer

Respostas

HTTPDescrição
202Evento na fila.
401Token ausente/inválido/expirado, ou credenciais incorretas.
409Requisição inválida ou regra de negócio violada.
Campos da resposta de sucesso
CampoTipoDescrição
event_idstring
statusstring
Exemplo · Enfileirar um evento `ping`
#!/usr/bin/env bash
# Enviar evento de teste
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X POST "$SHARKPAY_BASE_URL/api/webhook/test" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN"
echo
GET

/api/webhook/deliveries

Últimas 25 entregas (diagnóstico) · listWebhookDeliveries Bearer

Respostas

HTTPDescrição
200Entregas.
401Token ausente/inválido/expirado, ou credenciais incorretas.
Campos da resposta de sucesso
CampoTipoDescrição
deliveriesarray<object>
deliveries[].event_idstring
deliveries[].typestring
deliveries[].attemptsinteger
deliveries[].last_statusinteger | null
deliveries[].last_errorstring | null
deliveries[].delivered_atstring | null
deliveries[].failed_atstring | null
deliveries[].next_attempt_atstring | null
deliveries[].created_atstring
Exemplo · Últimas 25 entregas (diagnóstico)
#!/usr/bin/env bash
# Ver entregas recentes
set -euo pipefail
: "${SHARKPAY_BASE_URL:?defina a URL base, ex.: https://pay.exemplo.com}"
: "${SHARKPAY_TOKEN:?obtenha o token com o exemplo "auth"}"
curl -sS --fail-with-body -X GET "$SHARKPAY_BASE_URL/api/webhook/deliveries" \
  -H "Authorization: Bearer $SHARKPAY_TOKEN"
echo

Referência

GET

/api/country/all

Listar países · listCountries Bearer

Respostas

HTTPDescrição
200Países.
401Token ausente/inválido/expirado, ou credenciais incorretas.
Campos da resposta de sucesso
CampoTipoDescrição
countriesarray<object>
countries[].idinteger
countries[].isostring
countries[].namestring
countries[].nicenamestring
countries[].iso3string | null
countries[].numcodeinteger | null
countries[].phonecodeinteger | null
GET

/api/country/{country_id}

Consultar país pelo id · getCountry Bearer

Parâmetros

NomeEmTipoDescrição
country_idobrigatóriopathinteger

Respostas

HTTPDescrição
200País.
400Requisição inválida ou regra de negócio violada.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
countryobject
country.idinteger
country.isostring
country.namestring
country.nicenamestring
country.iso3string | null
country.numcodeinteger | null
country.phonecodeinteger | null
GET

/api/country/iso/{iso}

Consultar país pelo código ISO (2 letras) · getCountryByIso Bearer

Parâmetros

NomeEmTipoDescrição
isoobrigatóriopathstring (mín. 2, máx. 2)

Respostas

HTTPDescrição
200País.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
countryobject
country.idinteger
country.isostring
country.namestring
country.nicenamestring
country.iso3string | null
country.numcodeinteger | null
country.phonecodeinteger | null
GET

/api/country/iso3/{iso3}

Consultar país pelo código ISO3 · getCountryByIso3 Bearer

Parâmetros

NomeEmTipoDescrição
iso3obrigatóriopathstring (mín. 3, máx. 3)

Respostas

HTTPDescrição
200País.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
countryobject
country.idinteger
country.isostring
country.namestring
country.nicenamestring
country.iso3string | null
country.numcodeinteger | null
country.phonecodeinteger | null
GET

/api/state/all

Listar estados · listStates Bearer

Respostas

HTTPDescrição
200Estados.
401Token ausente/inválido/expirado, ou credenciais incorretas.
Campos da resposta de sucesso
CampoTipoDescrição
statesarray<object>
states[].idinteger
states[].namestring
states[].ufstring
states[].ibgestring | integer | null
states[].dddstring | integer | null
GET

/api/state/{state_id}

Consultar estado pelo id · getState Bearer

Parâmetros

NomeEmTipoDescrição
state_idobrigatóriopathinteger

Respostas

HTTPDescrição
200Estado.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
stateobject
state.idinteger
state.namestring
state.ufstring
state.ibgestring | integer | null
state.dddstring | integer | null
GET

/api/state/uf/{uf}

Consultar estado pela UF (2 letras) · getStateByUf Bearer

Parâmetros

NomeEmTipoDescrição
ufobrigatóriopathstring (mín. 2, máx. 2)

Respostas

HTTPDescrição
200Estado.
404Não encontrado (ou pertence a outra conta).
Campos da resposta de sucesso
CampoTipoDescrição
stateobject
state.idinteger
state.namestring
state.ufstring
state.ibgestring | integer | null
state.dddstring | integer | null
GET

/api/cep/search/{cep}

Buscar endereço por CEP (sem autenticação) · searchCep sem autenticação

Parâmetros

NomeEmTipoDescrição
cepobrigatóriopathstring8 dígitos (hífen opcional).

Respostas

HTTPDescrição
200Endereço.
422Requisição inválida ou regra de negócio violada.
429Limite de requisições excedido. Aguarde `Retry-After` segundos.
Campos da resposta de sucesso
CampoTipoDescrição
successboolean
addressobject
address.cepstring
address.logradourostring
address.complementostring
address.bairrostring
address.localidadestring
address.ufstring
address.ibgestring

Interno

POST

/api/originalbank/account/register

Abrir conta no Banco Original (uso interno/parceiro) · registerOriginalBankAccount Bearer

Fluxo de integração com o banco parceiro, fora do contrato público estável. Pode mudar sem aviso.

Respostas

HTTPDescrição
200Resultado do banco.
401Token ausente/inválido/expirado, ou credenciais incorretas.
500Falha inesperada. Seguro repetir com a mesma Idempotency-Key.
Campos da resposta de sucesso
CampoTipoDescrição
successboolean
resultobject