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

USANDO CLAUDE CODE O CHATGPT DESKTOP?

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

Crea una clave de API con permisos específicos, 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 de 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 pago. Crear clave de API

https://rendben.com/docs/api

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

MCP

ACCIONES OFICIALES DE MCP

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

Conéctate al endpoint HTTP Streamable sin sesión de Rendben en https://rendben.com/mcp. Dale a un agente un enlace de pago público, o permite que un comerciante cree una capacidad de pago con una clave de 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 el entorno de tu 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 de 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 la wallet controlada por humanos está completo y si la preparación de la tienda, los productos y el pago pueden continuar.

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

El límite de la wallet sigue siendo humano.

La API informa la preparación 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 nuevo espacio de trabajo devuelve storefront: null.

PUT /storefront

Configura la tienda

Reserva o actualiza la URL única de tienda de Rendben del espacio de trabajo. El propietario humano debe verificar la wallet de liquidación primero. 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 de productos

Devuelve todos los productos en el espacio de trabajo de la clave de API, incluidos precios y 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 RequeridostringBreve explicación 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 pago 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 de API debe pertenecer al mismo espacio de trabajo.

POST /refunds

Crea un reembolso total o parcial

Crea un reembolso vinculado a un pago confirmado. La wallet de liquidación del comerciante debe aprobar la transacción de Solana Pay devuelta. La tarifa original de Rendben no se revierte y Rendben no agrega tarifa de reembolso.

ParámetroTipoDescripción
paymentId RequeridostringID de intención de pago confirmado del mismo espacio de trabajo.
amountUsdcstringMonto exacto del reembolso. Usa esto o el porcentaje.
percentagestringPorcentaje del pago bruto original, de 0.01 a 100. Usa esto o amountUsdc.

Envía un Idempotency-Key único. Se permiten múltiples reembolsos parciales, pero su total confirmado y pendiente nunca puede exceder el pago 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

Recupera un reembolso

Devuelve el estado pendiente, en proceso, confirmado, expirado, fallido o cancelado, más la wallet de destino, la firma de Solana y las marcas de tiempo de confirmación.

POST /subscription-checkouts

Crea un pago de suscripción vinculado

Crea un pago opaco y reanudable para un producto recurrente activo. Rendben vincula el correo de recibo y tu referencia estable de cliente en el servidor, por lo que el cliente no puede cambiar la identidad de derecho de acceso al pagar.

ParámetroTipoDescripción
productId RequeridostringID de producto recurrente activo.
customer.email RequeridoemailCorreo de recibo y facturación. Almacenado en el servidor y no editable al pagar.
customer.reference RequeridostringTu ID estable de usuario o cuenta. Úsalo para verificación de derecho 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 pongas la clave de API de Rendben en el código del navegador de Ciocu. Redirige al cliente autenticado 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 total, ciclo de vida y MRR. Para derechos de acceso de aplicaciones, 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 derecho de acceso.
customer_emailemailFiltro de correo de recibo exacto opcional. Prefiere customer_reference para identidad de aplicación.
product_idstringFiltro de producto opcional. Recomendado para verificaciones de derecho 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.

POST /subscriptions/:id/cancel

Cancela renovaciones futuras

Permite que tu backend ofrezca cancelación dentro de tu propia página de cuenta SaaS. Detiene la recaudación futura de inmediato mientras preserva el derecho de acceso del cliente a través del currentPeriodEnd ya pagado.

ParámetroTipoDescripción
customer_referencestringID de cliente estable recomendado. Se requiere esto o customer_email y debe coincidir exactamente.
customer_emailemailCorreo de facturación normalizado exacto. Se requiere esto o customer_reference y debe coincidir exactamente.
curl https://rendben.com/api/v1/subscriptions/sub_example/cancel \
  -X POST \
  -H "Authorization: Bearer $RENDBEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: cancel_sub_example_1" \
  -d '{
    "customer_reference": "google-user-48391"
  }'
{
  "subscription": {
    "id": "sub_example",
    "productId": "prod_ciocu_basic_2026",
    "customerEmail": "buyer@example.com",
    "status": "cancelled",
    "currentPeriodEnd": "2026-08-31T12:00:00.000Z",
    "nextChargeAt": null
  }
}

Llama a esto solo desde tu backend.

Usa una clave de lectura y escritura y deriva la identidad del cliente de tu sesión autenticada. Nunca aceptes un correo o referencia de cliente sin verificar desde la entrada del navegador, y nunca expongas la clave de API al navegador.

La operación emite subscription.cancelled, envía el correo de cancelación al cliente y se puede reproducir de forma segura durante 24 horas con el mismo Idempotency-Key. No revoca la aprobación de token en cadena del cliente; el suscriptor puede hacerlo por separado desde el enlace de gestión de Rendben.

GET /orders

Verifica un pedido de pago único

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

ParámetroTipoDescripción
customer_referencestringID de cliente de comerciante exacto. Se requiere esto o customer_email.
customer_emailemailCorreo de recibo exacto. Se requiere esto 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 DERECHO DE ACCESO

Otorga acceso basado en hechos pagados.

  1. 1 Acceso recurrente Otorga acceso solo cuando hasActiveSubscription es verdadero para el producto requerido.
  2. 2 Créditos y recargas Consulta pedidos con status=paid, 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 se vuelven elegibles 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 la API no se pueda alcanzar. Mantén tu último estado verificado por un período de gracia corto 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 derecho 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 por 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 suscripción y pedido incluyen page, pageSize y hasMore. Aumente page hasta que hasMore sea falso. Las respuestas de clientes son siempre 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 entre 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 eluda 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; desactive o revoque un recurso no utilizado antes de reintentar.

400 Entrada faltante o inválida

401 Clave faltante, inválida o revocada

404 La identidad de suscripción o cliente no coincide

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?

Cree una clave con alcance para su backend.

Comience con permiso de solo lectura. Use lectura y escritura cuando su aplicación cree productos, intenciones de pago o checkouts de suscripción.

Abrir claves API