Rendben

Checkout de USDC no custodial en Solana: los agentes inspeccionan un checkout y obtienen transacciones sin firmar para firmarlas localmente, liquidando el 99,5% directamente a la billetera del comerciante.

Documentación

¿USAS CLAUDE CODE O CHATGPT DESKTOP?

Dale a tu asistente de codificación el contexto adecuado.

Crea una clave API con alcance, guárdala en el entorno de tu aplicación y luego dale a tu asistente este enlace de documentación para iniciar la integración.

  1. 1 Completa la verificación humana Inicia sesión con Google y verifica la wallet de liquidación. Rendben nunca le pide a tu IA una frase semilla o clave privada. Abrir guía de configuración
  2. 2 Guárdala de forma segura Guárdala como RENDBEN_API_KEY en el entorno del servidor de la aplicación. Nunca pegues una clave API en un chat.
  3. 3 Deja que tu IA continúe Con una clave de lectura y escritura, puede inspeccionar la configuración, reservar la URL de la tienda, crear productos y preparar enlaces de checkout. Crear clave API

https://rendben.com/docs/api

Copia la URL de documentación pública, no tu clave API.

MCP

ACCIONES OFICIALES DE MCP

Permite que un agente pague sin compartir su secreto de wallet.

Conéctate al endpoint HTTP Streamable sin sesión de Rendben en https://rendben.com/mcp. Dale a un agente un enlace de checkout público, o permite que un comerciante cree una capacidad de pago con una clave API. Rendben prepara bytes de transacción sin firmar. El agente revisa los términos exactos, firma localmente y envía a través de su propia wallet o un RPC de Solana de confianza.

{
  "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 pases una frase semilla o clave privada.

Las herramientas MCP no aceptan secretos de wallet. Usa una wallet aislada, mantén su firmante local y aplica una política por pago o diaria en la capa de wallet.

INICIO RÁPIDO

Verifica el acceso en una sola solicitud.

Crea una clave de solo lectura en tu panel, mantenla en tu entorno de backend y envíala como token Bearer. Este ejemplo responde la pregunta que tu producto realmente necesita: ¿debería este cliente tener acceso?

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;

Mantén las claves API en el servidor.

Nunca coloques una clave de Rendben en código de navegador, un paquete de aplicación móvil o un repositorio público.

AUTENTICACIÓN

Un espacio de trabajo. Dos niveles de permiso.

Envía tu clave en cada solicitud usando el encabezado Authorization estándar.

Authorization: Bearer rdb_live_your_key

ESCRITURAS SEGURAS

Reintenta sin crear duplicados.

Cada solicitud de escritura pública requiere un encabezado Idempotency-Key que contenga de 8 a 128 caracteres seguros. Repetir la misma clave y cuerpo devuelve la respuesta original durante 24 horas. Reutilizar una clave con JSON diferente devuelve HTTP 409.

Idempotency-Key: order_8f2b7f46

GET /setup

Lee el estado de configuración del espacio de trabajo

Permite que una IA identifique si el paso de wallet controlado por humanos está completo y si la preparación de tienda, productos y checkout puede continuar.

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

El límite de la wallet permanece humano.

La API informa la disponibilidad de la wallet pero no puede acceder, reemplazar o recuperar la frase semilla o clave privada de la wallet.

GET /storefront

Lee la configuración de la tienda

Devuelve la URL de tienda reservada, la moneda, los detalles públicos del comerciante y el logotipo opcional. Un espacio de trabajo nuevo devuelve storefront: null.

PUT /storefront

Configura la tienda

Reserva o actualiza la URL de tienda única de Rendben del espacio de trabajo. El propietario humano debe verificar primero la wallet de liquidación. Este endpoint requiere una clave de lectura y escritura y un Idempotency-Key.

ParámetroTipoDescripción
slug RequeridostringSubdominio único de Rendben de 3 a 32 caracteres.
logoImageUrlURLLogotipo cuadrado HTTPS opcional de la tienda.
websiteUrlURLSitio web público opcional del comerciante.
supportEmailemailDirección pública opcional de atención al 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

Lista productos

Devuelve todos los productos en el espacio de trabajo de la clave API, incluidos los precios y los detalles de facturación recurrente.

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

POST /products

Crea un producto

Crea un producto USDC de pago único o recurrente. Este endpoint requiere una clave de lectura y escritura.

Envía un Idempotency-Key único para cada creación de producto prevista.

ParámetroTipoDescripción
name RequeridostringNombre del producto visible para el cliente.
description RequeridostringExplicación breve de lo que recibe el cliente.
priceUsdc RequeridostringPrecio en USDC. Mínimo 1 USDC.
pricingModel Requeridoenumone_time o recurring.
billingIntervalobjectRequerido para productos recurrentes. Usa day, week, month o year. Un plan trimestral usa month con count 3.
returnUrlURLPágina opcional mostrada después de un pago completado.
coverImageUrlURLImagen HTTPS opcional del producto.
{
  "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

Crea una intención de pago

Crea un checkout reanudable para un producto de pago único activo. Tu referencia de cliente y metadatos se devuelven en eventos de webhook.

ParámetroTipoDescripción
productId RequeridostringID de producto de pago único activo.
customer.email RequeridoemailIdentidad de recibo y derecho de acceso.
customer.referencestringTu ID estable de cliente o cuenta. Máximo 255 caracteres.
metadataobjectTus datos de conciliación. Máximo 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

Recupera una intención de pago

Devuelve el estado actual, la wallet del comprador, la firma de Solana y las marcas de tiempo de confirmación. La clave API debe pertenecer al mismo espacio de trabajo.

POST /subscription-checkouts

Crea un checkout de suscripción vinculado

Crea un checkout opaco y reanudable para un producto recurrente activo. Rendben vincula el correo de recibo y tu referencia estable de cliente en el servidor, para que el cliente no pueda cambiar la identidad de derecho de acceso en el checkout.

ParámetroTipoDescripción
productId RequeridostringID de producto recurrente activo.
customer.email RequeridoemailCorreo de recibo y facturación. Almacenado en el servidor y no editable en el checkout.
customer.reference RequeridostringTu ID estable de usuario o cuenta. Úsalo para la verificación de derechos de acceso. Máximo 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"
  }
}

Crea esta URL en tu backend.

No coloques la clave API de Rendben en el código de navegador de Ciocu. Redirige al cliente con sesión iniciada al checkoutUrl devuelto y no agregues ?email=. La URL opaca ya lleva la identidad vinculada al servidor.

GET /subscriptions

Lista y verifica suscripciones

Omite los filtros de cliente para listar las suscripciones del espacio de trabajo y leer las cifras de resumen total, ciclo de vida y MRR. Para derechos de acceso de aplicación, filtra por tu referencia estable de cliente e ID de producto.

ParámetroTipoDescripción
customer_referencestringID de cliente de comerciante exacto opcional. Recomendado para verificaciones de derechos de acceso.
customer_emailemailFiltro opcional de correo de recibo exacto. Prefiere customer_reference para identidad de aplicación.
product_idstringFiltro de producto opcional. Recomendado para verificaciones de derechos de acceso.
statusenumFiltra los registros devueltos por estado del ciclo de vida. El valor predeterminado es all.
pageintegerNúmero de página. El valor predeterminado es 1.
limitintegerRegistros por página, de 1 a 100. El valor predeterminado es 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"
    }
  ]
}

Usa la respuesta correcta para cada tarea.

Usa summary.active y summary.mrrUsdc para informes de comerciante. Usa hasActiveSubscription para controlar el acceso del cliente.

GET /orders

Verifica un pedido de pago único

Devuelve intenciones de pago para un cliente. El filtro status=paid predeterminado incluye solo pagos confirmados.

ParámetroTipoDescripción
customer_referencestringID de cliente de comerciante exacto. Se requiere este o customer_email.
customer_emailemailCorreo de recibo exacto. Se requiere este o customer_reference.
product_idstringFiltro de producto opcional para una recarga o compra.
statusenumpaid, pending, processing, expired, failed o all. El valor predeterminado es paid.
pageintegerNúmero de página. El valor predeterminado es 1.
limitintegerRegistros por página, de 1 a 100. El valor predeterminado es 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

REGLAS DE DERECHOS DE ACCESO

Otorga acceso a partir de hechos pagados.

  1. 1 Acceso recurrente Otorga acceso solo cuando hasActiveSubscription sea true para el producto requerido.
  2. 2 Créditos y recargas Consulta pedidos con status=paid y luego almacena cada ID de pedido consumido para que no pueda acreditarse dos veces.
  3. 3 Suscripciones canceladas Respeta entitled hasta currentPeriodEnd. El cliente conserva lo que ya pagó.
  4. 4 Cambios de plan Las mejoras obtienen derecho de acceso después de que se confirme el pago prorrateado atómico. Las degradaciones permanecen en el nivel actual durante el período pagado y cambian en la renovación.
  5. 5 Comportamiento ante fallos No otorgues nuevo acceso cuando no se pueda alcanzar la API. Mantén tu último estado verificado durante un período de gracia breve y deliberado si tu producto requiere continuidad.
  6. 6 Vinculación de identidad Usa tu ID de usuario inmutable como customer.reference. El correo es para recibos y puede cambiar; no debe ser la clave principal de derechos de acceso.

EVENTOS FIRMADOS

Reacciona cuando cambia el libro mayor.

Agrega un endpoint HTTPS en Panel → Webhooks. Rendben firma el cuerpo JSON exacto con el secreto mostrado una vez en la creación. Verifica Rendben-Signature antes de analizar el evento, rechaza marcas de tiempo de más de cinco minutos y deduplica con el evento de nivel superior id. Cada sobre incluye schemaVersion: 1; rechaza versiones no compatibles e ignora campos desconocidos dentro de una versión compatible.

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));

Devuelve cualquier respuesta 2xx dentro de 8 segundos. Las entregas fallidas se reintentan con demoras crecientes hasta 48 horas. El panel conserva cada intento y permite que un propietario o administrador reproduzca una entrega manualmente.

07

PAGINACIÓN

Lee historiales completos de forma segura.

Las respuestas de suscripciones y pedidos incluyen page, pageSize y hasMore. Aumenta page hasta que hasMore sea false. Las respuestas de clientes siempre son privadas y nunca se almacenan en caché.

08

ERRORES

Una forma de error predecible.

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

Los límites de lectura se comparten en todos los endpoints de lectura V1 para la misma credencial. Las escrituras usan un límite separado y más bajo de 30 solicitudes por minuto. Los límites adicionales por IP evitan que la rotación de credenciales inválidas evite la protección. Una respuesta limitada incluye los encabezados RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset y Retry-After.

Las cuotas del espacio de trabajo protegen los recursos retenidos: 100 productos activos, 10 claves API activas y 10 endpoints de webhook activos. Una cuota completa devuelve 409; desactiva o revoca un recurso no utilizado antes de reintentar.

400 Entrada faltante o inválida

401 Clave faltante, inválida o revocada

413 El cuerpo de la solicitud es demasiado grande

415 La solicitud de escritura no es JSON

429 Límite de velocidad excedido

409 Conflicto de idempotencia, solicitud en curso o cuota del espacio de trabajo alcanzada

500 Rendben no pudo completar la solicitud

¿LISTO PARA CONECTARSE?

Crea una clave con alcance para tu backend.

Comienza con permiso de solo lectura. Usa lectura y escritura cuando tu aplicación cree productos, intenciones de pago o checkouts de suscripción.

Abrir claves API