Rendben

Checkout não-custodial de USDC na Solana: agentes inspecionam um checkout e recebem transações não assinadas para assinar localmente, liquidando 99,5% diretamente na carteira do comerciante.

Documentação

USANDO CLAUDE CODE OU CHATGPT DESKTOP?

Dê ao seu assistente de codificação o contexto certo.

Crie uma chave de API com escopo, salve-a no ambiente da sua aplicação e forneça ao seu assistente este link de documentação para iniciar a integração.

  1. 1 Complete a verificação humana Entre com o Google e verifique a carteira de liquidação. A Rendben nunca pede ao seu IA uma frase-semente ou chave privada. Abrir guia de configuração
  2. 2 Armazene com segurança Salve-a como RENDBEN_API_KEY no ambiente do servidor da aplicação. Nunca cole uma chave de API em um chat.
  3. 3 Deixe seu IA continuar Com uma chave de leitura e escrita, ele pode inspecionar a configuração, reservar o URL da loja, criar produtos e preparar links de checkout. Criar chave de API

https://rendben.com/docs/api

Copia o URL público da documentação, não sua chave de API.

MCP

AÇÕES OFICIAIS DO MCP

Deixe um agente pagar sem compartilhar o segredo da carteira.

Conecte-se ao endpoint HTTP Streamable sem sessão da Rendben em https://rendben.com/mcp. Dê a um agente um link público de checkout, ou deixe um comerciante criar uma capacidade de pagamento com uma chave de API. A Rendben prepara bytes de transação não assinados. O agente revisa os termos exatos, assina localmente e envia através de sua própria carteira ou RPC Solana confiável.

{
  "mcpServers": {
    "rendben": {
      "type": "http",
      "url": "https://rendben.com/mcp",
      "headers": {
        "Authorization": "Bearer ${RENDBEN_API_KEY}"
      }
    }
  }
}
rendben_inspect_checkout
rendben_prepare_checkout_payment
rendben_create_payment_intent
rendben_prepare_usdc_payment
rendben_get_payment_status
rendben_get_subscription_status

Nunca passe uma frase-semente ou chave privada.

As ferramentas do MCP não aceitam segredos de carteira. Use uma carteira isolada, mantenha seu assinante local e aplique uma política por pagamento ou diária na camada da carteira.

INÍCIO RÁPIDO

Verifique o acesso em uma única solicitação.

Crie uma chave somente leitura no seu painel, mantenha-a no ambiente do seu backend e envie-a como um token Bearer. Este exemplo responde à pergunta que seu produto realmente precisa: este cliente deve ter acesso?

const response = await fetch(
  "https://rendben.com/api/v1/subscriptions?" +
    new URLSearchParams({
      customer_reference: "google-user-48391",
      product_id: "prod_ciocu_basic_2026",
    }),
  {
    headers: {
      Authorization: \`Bearer ${process.env.RENDBEN_API_KEY}\`,
    },
  },
);

if (!response.ok) throw new Error("Rendben verification failed");

const result = await response.json();
const hasAccess = result.hasActiveSubscription;

Mantenha as chaves de API no servidor.

Nunca coloque uma chave da Rendben em código de navegador, pacote de aplicativo móvel ou repositório público.

AUTENTICAÇÃO

Um espaço de trabalho. Dois níveis de permissão.

Envie sua chave em cada solicitação usando o cabeçalho Authorization padrão.

Authorization: Bearer rdb_live_your_key

ESCRITAS SEGURAS

Repita sem criar duplicatas.

Cada solicitação de escrita pública exige um cabeçalho Idempotency-Key contendo 8 a 128 caracteres seguros. Repetir a mesma chave e corpo retorna a resposta original por 24 horas. Reutilizar uma chave com JSON diferente retorna HTTP 409.

Idempotency-Key: order_8f2b7f46

GET /setup

Ler o status da configuração do espaço de trabalho

Permite que um IA identifique se a etapa da carteira controlada por humanos está completa e se a preparação da loja, produtos e checkout pode continuar.

curl https://rendben.com/api/v1/setup \
  -H "Authorization: Bearer $RENDBEN_API_KEY"

O limite da carteira permanece humano.

A API relata a prontidão da carteira, mas não pode acessar, substituir ou recuperar a frase-semente ou chave privada da carteira.

GET /storefront

Ler as configurações da loja

Retorna o URL da loja reservado, moeda, detalhes públicos do comerciante e logotipo opcional. Um novo espaço de trabalho retorna storefront: null.

PUT /storefront

Configurar a loja

Reserva ou atualiza o URL exclusivo da loja Rendben do espaço de trabalho. O proprietário humano deve verificar a carteira de liquidação primeiro. Este endpoint requer uma chave de leitura e escrita e um Idempotency-Key.

ParâmetroTipoDescrição
slug ObrigatóriostringSubdomínio exclusivo da Rendben com 3 a 32 caracteres.
logoImageUrlURLLogotipo quadrado HTTPS opcional da loja.
websiteUrlURLSite público opcional do comerciante.
supportEmailemailEndereço público opcional de suporte ao cliente.
refundPolicyUrlURLPágina pública opcional de política de reembolso.
curl https://rendben.com/api/v1/storefront \
  -X PUT \
  -H "Authorization: Bearer $RENDBEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: storefront_ciocu_v1" \
  -d '{
    "slug": "ciocu",
    "websiteUrl": "https://ciocu.app",
    "supportEmail": "support@ciocu.app"
  }'

GET /products

Listar produtos

Retorna todos os produtos no espaço de trabalho da chave de API, incluindo preços e detalhes de cobrança recorrente.

curl https://rendben.com/api/v1/products \
  -H "Authorization: Bearer $RENDBEN_API_KEY"

POST /products

Criar um produto

Cria um produto USDC único ou recorrente. Este endpoint requer uma chave de leitura e escrita.

Envie um Idempotency-Key exclusivo para cada criação de produto pretendida.

ParâmetroTipoDescrição
name ObrigatóriostringNome do produto visível ao cliente.
description ObrigatóriostringBreve explicação do que o cliente recebe.
priceUsdc ObrigatóriostringPreço em USDC. Mínimo de 1 USDC.
pricingModel Obrigatórioenumone_time ou recurring.
billingIntervalobjetoObrigatório para produtos recorrentes. Use day, week, month ou year. Um plano trimestral usa month com count 3.
returnUrlURLPágina opcional mostrada após um pagamento concluído.
coverImageUrlURLImagem HTTPS opcional do produto.
{
  "name": "Ciocu Pro",
  "description": "Voice, sync and monthly allowance",
  "returnUrl": "https://ciocu.app/billing/complete",
  "coverImageUrl": "https://cdn.example.com/ciocu-pro.webp",
  "priceUsdc": "20",
  "pricingModel": "recurring",
  "billingInterval": {
    "unit": "month",
    "count": 1
  }
}

POST /payment-intents

Criar uma intenção de pagamento

Cria um checkout retomável para um produto único ativo. Sua referência de cliente e metadados são retornados em eventos de webhook.

ParâmetroTipoDescrição
productId ObrigatóriostringID do produto único ativo.
customer.email ObrigatórioemailIdentidade de recibo e direito de acesso.
customer.referencestringSeu ID estável de cliente ou conta. Máximo de 255 caracteres.
metadataobjetoSeus dados de reconciliação. Máximo de 2 KB.
curl https://rendben.com/api/v1/payment-intents \
  -X POST \
  -H "Authorization: Bearer $RENDBEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order_8f2b7f46" \
  -d '{
  "productId": "prod_ciocu_basic_2026",
    "customer": { "email": "buyer@example.com", "reference": "customer_48391" },
    "metadata": { "orderId": "order_8f2b7f46" }
  }'
{
  "paymentIntent": {
    "id": "pi_example",
    "status": "pending",
    "productId": "prod_ciocu_basic_2026",
    "customerReference": "customer_48391",
    "amountUsdc": "5",
    "merchantAmountUsdc": "4.795",
    "feeAmountUsdc": "0.205",
    "checkoutUrl": "https://yourstore.rendben.com/checkout/prod_ciocu_basic_2026?payment=pi_example",
    "agentPayment": {
      "intentId": "pi_example",
      "payerAccessToken": "rpa_v1_short_lived_capability",
      "mcpUrl": "https://rendben.com/mcp"
    }
  }
}

GET /payment-intents/:id

Recuperar uma intenção de pagamento

Retorna o status atual, carteira do comprador, assinatura Solana e carimbos de tempo de confirmação. A chave de API deve pertencer ao mesmo espaço de trabalho.

POST /refunds

Criar um reembolso total ou parcial

Cria um reembolso vinculado a um pagamento confirmado. A carteira de liquidação do comerciante deve aprovar a transação Solana Pay retornada. A taxa original da Rendben não é revertida e a Rendben não adiciona taxa de reembolso.

ParâmetroTipoDescrição
paymentId ObrigatóriostringID da intenção de pagamento confirmada do mesmo espaço de trabalho.
amountUsdcstringValor exato do reembolso. Use este ou a porcentagem.
percentagestringPorcentagem do pagamento bruto original, de 0,01 a 100. Use este ou amountUsdc.

Envie um Idempotency-Key exclusivo. Vários reembolsos parciais são permitidos, mas seu total confirmado e pendente nunca pode exceder o pagamento original.

curl https://rendben.com/api/v1/refunds \
  -X POST \
  -H "Authorization: Bearer $RENDBEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: refund_order_8f2b7f46" \
  -d '{
    "paymentId": "pi_example",
    "percentage": "50"
  }'

GET /refunds/:id

Recuperar um reembolso

Retorna o status pendente, processando, confirmado, expirado, falhou ou cancelado, além da carteira de destino, assinatura Solana e carimbos de tempo de confirmação.

POST /subscription-checkouts

Criar um checkout de assinatura vinculada

Cria um checkout opaco e retomável para um produto recorrente ativo. A Rendben vincula o email de recibo e sua referência estável de cliente no servidor, para que o cliente não possa alterar a identidade de direito de acesso no checkout.

ParâmetroTipoDescrição
productId ObrigatóriostringID do produto recorrente ativo.
customer.email ObrigatórioemailEmail de recibo e cobrança. Armazenado no servidor e não editável no checkout.
customer.reference ObrigatóriostringSeu ID estável de usuário ou conta. Use para verificação de direito de acesso. Máximo de 255 caracteres.
curl https://rendben.com/api/v1/subscription-checkouts \
  -X POST \
  -H "Authorization: Bearer $RENDBEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: subscription_google-user-48391" \
  -d '{
    "productId": "prod_ciocu_basic_2026",
    "customer": {
      "email": "buyer@example.com",
      "reference": "google-user-48391"
    }
  }'
{
  "subscriptionCheckout": {
    "id": "sub_example",
    "status": "authorization_pending",
    "productId": "prod_ciocu_basic_2026",
    "customerReference": "google-user-48391",
    "amountUsdc": "20",
    "periodHours": 720,
    "expiresAt": "2026-08-13T13:00:00.000Z",
    "checkoutUrl": "https://yourstore.rendben.com/checkout/prod_ciocu_basic_2026?subscription=sub_example"
  }
}

Crie este URL no seu backend.

Não coloque a chave de API da Rendben no código do navegador da Ciocu. Redirecione o cliente conectado para o checkoutUrl retornado e não anexe ?email=. O URL opaco já carrega a identidade vinculada ao servidor.

GET /subscriptions

Listar e verificar assinaturas

Omita filtros de cliente para listar as assinaturas do espaço de trabalho e ler totais, ciclo de vida e figuras resumidas de MRR. Para direitos de acesso de aplicação, filtre por sua referência estável de cliente e ID de produto.

ParâmetroTipoDescrição
customer_referencestringID opcional exato de cliente do comerciante. Recomendado para verificações de direito de acesso.
customer_emailemailFiltro opcional exato de email de recibo. Prefira customer_reference para identidade de aplicação.
product_idstringFiltro opcional de produto. Recomendado para verificações de direito de acesso.
statusenumFiltra registros retornados por status de ciclo de vida. Padrão é all.
pageinteiroNúmero da página. Padrão é 1.
limitinteiroRegistros por página, de 1 a 100. Padrão é 50.
{
  "customerEmail": "buyer@example.com",
  "customerReference": "google-user-48391",
  "productId": "prod_ciocu_basic_2026",
  "status": "all",
  "hasActiveSubscription": true,
  "summary": {
    "total": 12,
    "active": 8,
    "pastDue": 1,
    "cancelPending": 1,
    "cancelled": 2,
    "entitled": 9,
    "mrrUsdc": "160"
  },
  "hasMore": false,
  "page": 1,
  "pageSize": 50,
  "subscriptions": [
    {
      "id": "sub_example",
      "productId": "prod_ciocu_basic_2026",
      "productName": "Ciocu Pro",
      "status": "active",
      "entitled": true,
      "amountUsdc": "20",
      "periodHours": 720,
      "currentPeriodEnd": "2026-08-31T12:00:00.000Z",
      "nextChargeAt": "2026-08-31T12:00:00.000Z"
    }
  ]
}

Use a resposta certa para o trabalho certo.

Use summary.active e summary.mrrUsdc para relatórios do comerciante. Use hasActiveSubscription para controlar o acesso do cliente.

GET /orders

Verificar um pedido único

Retorna intenções de pagamento para um cliente. O filtro padrão status=paid inclui apenas pagamentos confirmados.

ParâmetroTipoDescrição
customer_referencestringID exato de cliente do comerciante. Este ou customer_email é obrigatório.
customer_emailemailEmail exato de recibo. Este ou customer_reference é obrigatório.
product_idstringFiltro opcional de produto para recarga ou compra.
statusenumpaid, pending, processing, expired, failed ou all. Padrão é paid.
pageinteiroNúmero da página. Padrão é 1.
limitinteiroRegistros por página, de 1 a 100. Padrão é 50.
{
  "customerEmail": "buyer@example.com",
  "productId": "prod_topup",
  "status": "paid",
  "hasPaidOrder": true,
  "hasMore": false,
  "orders": [
    {
      "id": "pi_example",
      "productId": "prod_topup",
      "productName": "Five voice credits",
      "status": "paid",
      "amountUsdc": "5",
      "merchantAmountUsdc": "4.795",
      "feeAmountUsdc": "0.205",
      "transactionSignature": "solana_signature",
      "confirmedAt": "2026-08-10T10:00:02.000Z"
    }
  ]
}

05

REGRAS DE DIREITO DE ACESSO

Conceda acesso com base em fatos pagos.

  1. 1 Acesso recorrente Conceda acesso apenas quando hasActiveSubscription for verdadeiro para o produto necessário.
  2. 2 Créditos e recargas Consulte pedidos com status=paid e armazene cada ID de pedido consumido para que não possa ser creditado duas vezes.
  3. 3 Assinaturas canceladas Respeite entitled até currentPeriodEnd. O cliente mantém o que já pagou.
  4. 4 Mudanças de plano Upgrades tornam-se elegíveis após a confirmação do pagamento proporcional atômico. Downgrades permanecem no nível atual durante o período pago e mudam na renovação.
  5. 5 Comportamento de falha Não conceda novo acesso quando a API não puder ser alcançada. Mantenha seu último estado verificado por um curto e deliberado período de carência se seu produto exigir continuidade.
  6. 6 Vinculação de identidade Use seu ID de usuário imutável como customer.reference. O email é para recibos e pode mudar; não deve ser a chave primária de direito de acesso.

EVENTOS ASSINADOS

Reaja quando o livro-razão mudar.

Adicione um endpoint HTTPS em Painel → Webhooks. A Rendben assina o corpo JSON exato com o segredo mostrado uma vez na criação. Verifique Rendben-Signature antes de analisar o evento, rejeite carimbos de tempo mais antigos que cinco minutos e deduplique com o id de evento de nível superior. Cada envelope inclui schemaVersion: 1; rejeite versões não suportadas e ignore campos desconhecidos dentro de uma versão suportada.

import { createHmac, timingSafeEqual } from "node:crypto";

const [timestampPart, signaturePart] = signatureHeader.split(",");
const timestamp = timestampPart.replace("t=", "");
const received = signaturePart.replace("v1=", "");
const expected = createHmac("sha256", process.env.RENDBEN_WEBHOOK_SECRET)
  .update(timestamp + "." + rawRequestBody)
  .digest("hex");

const valid = received.length === expected.length &&
  timingSafeEqual(Buffer.from(received), Buffer.from(expected));

Retorne qualquer resposta 2xx dentro de 8 segundos. Entregas com falha são repetidas com atrasos crescentes por até 48 horas. O painel preserva cada tentativa e permite que um proprietário ou administrador reproduza uma entrega manualmente.

07

PAGINAÇÃO

Leia históricos completos com segurança.

Respostas de assinatura e pedido incluem page, pageSize e hasMore. Aumente page até que hasMore seja falso. Respostas de cliente são sempre privadas e nunca são armazenadas em cache.

08

ERROS

Uma forma de erro previsível.

{ "error": "customer_email or customer_reference is required." }

Os limites de leitura são compartilhados entre todos os endpoints de leitura V1 para a mesma credencial. Escritas usam um teto separado e mais baixo de 30 solicitações por minuto. Tetos adicionais por IP impedem que a rotação de credenciais inválidas contorne a proteção. Uma resposta limitada inclui cabeçalhos RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset e Retry-After.

As cotas do espaço de trabalho protegem recursos retidos: 100 produtos ativos, 10 chaves de API ativas e 10 endpoints de webhook ativos. Uma cota cheia retorna 409; desative ou revogue um recurso não utilizado antes de tentar novamente.

400 Entrada ausente ou inválida

401 Chave ausente, inválida ou revogada

413 Corpo da solicitação muito grande

415 Solicitação de escrita não é JSON

429 Limite de taxa excedido

409 Conflito de idempotência, solicitação em andamento ou cota do espaço de trabalho atingida

500 A Rendben não pôde concluir a solicitação

PRONTO PARA CONECTAR?

Crie uma chave com escopo para seu backend.

Comece com permissão somente leitura. Use leitura e escrita quando seu aplicativo criar produtos, intenções de pagamento ou checkouts de assinatura.

Open API keys