@usdctofiat/offramp añade un off-ramp de USDC en una sola llamada de función.
El SDK es la vía rápida para vender USDC desde tu propia app. Una sola llamada valida la entrada, aprueba el USDC, registra al vendedor, crea el depósito en Base y delega el precio. Apunta a Base mainnet y es permissionless para la creación de depósitos.
Instalar y crear un depósito
- 1Instala el paquete: bun add @usdctofiat/offramp (npm y pnpm también funcionan).
- 2Pasa un WalletClient de viem: la wallet del usuario, una server wallet o una wallet de bot.
- 3Llama a offramp(walletClient, { amount, platform, currency, identifier }).
- 4Lee el depositId y el txHash devueltos, o genera un proyecto con npx create-offramp-app@latest.
La superficie del SDK
| Export | Qué hace |
|---|---|
| offramp(walletClient, params) | Flujo de venta de USDC en una llamada que devuelve { depositId, txHash, resumed, otcLink? } |
| deposits(address) | Lista los depósitos de una dirección sin indexar el estado del protocolo |
| close(walletClient, depositId) | Retira el USDC no rellenado de un depósito existente |
| enableOtc / disableOtc / getOtcLink | Gestiona la restricción privada a un único comprador en un depósito |
| useOfframp() / usePeerExtensionRegistration() | Hooks de React desde @usdctofiat/offramp/react |
| PLATFORMS, CURRENCIES | Mapas const tipados con identificadores, validación y listas de divisas |
Reanudable por diseño
Crear un depósito abarca varios pasos onchain. Si una llamada anterior dejó un depósito a medias, volver a llamar a offramp() retoma donde se quedó en lugar de crear un duplicado. El flag resumed del resultado es true cuando se adoptó un depósito sin delegar existente en lugar de crear uno nuevo.
Eso hace que el SDK sea seguro de reintentar desde un servidor o un bot: un punto de entrada compatible con idempotencia que se reconcilia contra el estado onchain en lugar de asumir un punto de partida limpio.
Gestión de errores
| Aspecto | Cómo lo señala el SDK |
|---|---|
| Errores tipados | OfframpError lleva un code de OFFRAMP_ERROR_CODES |
| Configuración de PayPal o Wise | EXTENSION_REGISTRATION_REQUIRED cuando el identificador aún no está registrado |
| Validación | PLATFORMS y CURRENCIES exponen validación de identificador y de divisa |
| Sin custodia de claves | El SDK firma con tu WalletClient y nunca almacena claves privadas |
Adónde ir después
Plantillas starter
Starters de Next.js, Vite y bots de Telegram, además de scripts ejecutables y receptores HMAC.
Webhooks
Suscríbete a los eventos del ciclo de vida de depósitos y OTC con callbacks firmados por HMAC.
OTC privado en código
Restringe un depósito a una única wallet de comprador aprobada y comparte un enlace.
Keep exploring
Common questions
¿Es gratuito @usdctofiat/offramp?
Sí. El SDK es gratuito de instalar e integrar, y crear depósitos no requiere API key porque tu wallet firma. Las analíticas de Peerlytics, los créditos de API y la gestión de webhooks firmados se ofrecen aparte a través de Peerlytics.
¿El SDK custodia claves o mueve fiat?
No a ambas. Firma con el WalletClient de viem que tú proporcionas y nunca custodia claves privadas. El fiat se mueve directamente entre comprador y vendedor en la app de pago elegida; el SDK solo gestiona el USDC onchain y el ciclo de vida del depósito.
¿Cómo pruebo una integración?
No hay sandbox público; el SDK apunta a Base mainnet, así que un depósito de prueba es real y visible en el orderbook abierto. Usa el mínimo de 1 USDC y o bien restríngelo como depósito OTC (pasa otcTaker para que solo tu wallet pueda rellenarlo) o ciérralo con close() rápidamente. Confírmalo onchain y mediante deposits().