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 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
Armazene com segurança
Salve-a como
RENDBEN_API_KEYno ambiente do servidor da aplicação. Nunca cole uma chave de API em um chat. - 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âmetro | Tipo | Descrição |
|---|---|---|
slug Obrigatório | string | Subdomínio exclusivo da Rendben com 3 a 32 caracteres. |
logoImageUrl | URL | Logotipo quadrado HTTPS opcional da loja. |
websiteUrl | URL | Site público opcional do comerciante. |
supportEmail | Endereço público opcional de suporte ao cliente. | |
refundPolicyUrl | URL | Pá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âmetro | Tipo | Descrição |
|---|---|---|
name Obrigatório | string | Nome do produto visível ao cliente. |
description Obrigatório | string | Breve explicação do que o cliente recebe. |
priceUsdc Obrigatório | string | Preço em USDC. Mínimo de 1 USDC. |
pricingModel Obrigatório | enum | one_time ou recurring. |
billingInterval | objeto | Obrigatório para produtos recorrentes. Use day, week, month ou year. Um plano trimestral usa month com count 3. |
returnUrl | URL | Página opcional mostrada após um pagamento concluído. |
coverImageUrl | URL | Imagem 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âmetro | Tipo | Descrição |
|---|---|---|
productId Obrigatório | string | ID do produto único ativo. |
customer.email Obrigatório | Identidade de recibo e direito de acesso. | |
customer.reference | string | Seu ID estável de cliente ou conta. Máximo de 255 caracteres. |
metadata | objeto | Seus 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âmetro | Tipo | Descrição |
|---|---|---|
paymentId Obrigatório | string | ID da intenção de pagamento confirmada do mesmo espaço de trabalho. |
amountUsdc | string | Valor exato do reembolso. Use este ou a porcentagem. |
percentage | string | Porcentagem 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âmetro | Tipo | Descrição |
|---|---|---|
productId Obrigatório | string | ID do produto recorrente ativo. |
customer.email Obrigatório | Email de recibo e cobrança. Armazenado no servidor e não editável no checkout. | |
customer.reference Obrigatório | string | Seu 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âmetro | Tipo | Descrição |
|---|---|---|
customer_reference | string | ID opcional exato de cliente do comerciante. Recomendado para verificações de direito de acesso. |
customer_email | Filtro opcional exato de email de recibo. Prefira customer_reference para identidade de aplicação. | |
product_id | string | Filtro opcional de produto. Recomendado para verificações de direito de acesso. |
status | enum | Filtra registros retornados por status de ciclo de vida. Padrão é all. |
page | inteiro | Número da página. Padrão é 1. |
limit | inteiro | Registros 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âmetro | Tipo | Descrição |
|---|---|---|
customer_reference | string | ID exato de cliente do comerciante. Este ou customer_email é obrigatório. |
customer_email | Email exato de recibo. Este ou customer_reference é obrigatório. | |
product_id | string | Filtro opcional de produto para recarga ou compra. |
status | enum | paid, pending, processing, expired, failed ou all. Padrão é paid. |
page | inteiro | Número da página. Padrão é 1. |
limit | inteiro | Registros 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
Acesso recorrente
Conceda acesso apenas quando
hasActiveSubscriptionfor verdadeiro para o produto necessário. - 2
Créditos e recargas
Consulte pedidos com
status=paide armazene cada ID de pedido consumido para que não possa ser creditado duas vezes. - 3
Assinaturas canceladas
Respeite
entitledatécurrentPeriodEnd. O cliente mantém o que já pagou. - 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 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
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.