Crypto Payouts

Send USDT payouts to any crypto wallet.

Open the interactive version or read this guide as markdown.

Tags: Payouts, Balance, Webhooks

Paste this prompt into Claude, ChatGPT, or any AI tool. It works best with the CoinCircuit MCP server connected: https://mcp.coincircuit.io


You are helping me add crypto payouts to my existing application using CoinCircuit. I have the CoinCircuit MCP server connected.

If you have access to the CoinCircuit MCP server, call these tools for the most accurate and detailed schema outputs:

Use the live MCP data as your source of truth. The details below are a guide, but if the MCP returns something different, trust the MCP.

API Basics

Project Context

I have an application that needs to pay users in crypto (USDT) from my CoinCircuit merchant balance to their wallet addresses. Use cases: vendor payments, creator payouts, rewards, or any disbursement to external wallets.

What I Need You to Implement

1. Save a payout recipient

Before you can send a payout, the recipient wallet address must be saved.

Endpoint: POST /api/v1/recipients (Call get_endpoint with method post, path /api/v1/recipients in the CoinCircuit MCP for the full request/response schema.)

Required fields:

Optional fields:

Example request body:

{
  "type": "crypto_address",
  "label": "Alice's BSC wallet",
  "details": { "chain": "bsc", "address": "0xRecipientAddress" }
}

Response (201): Returns the saved recipient with an id (UUID). You'll use this id as the recipientId when creating payouts. If a matching recipient already exists, the existing one is returned instead of a duplicate.

Errors: 400 if the details are invalid or the type is unsupported.

2. Create crypto payout

Endpoint: POST /api/v1/payouts (Call get_endpoint with method post, path /api/v1/payouts, section request in the CoinCircuit MCP for the exact request body with all field validations.)

Required fields:

Optional fields:

Example request body:

{
  "method": "crypto",
  "currency": "USDT",
  "amount": "100.00",
  "recipientId": "addr_123456789_abcdef",
  "narration": "Creator payout - March 2026",
  "reference": "PAYOUT-MARCH-ALICE-001"
}

Response (201): Returns the payout object:

(Call get_endpoint with method post, path /api/v1/payouts, section success in the CoinCircuit MCP for the complete response schema.)

Errors: 400 (validation error, insufficient balance, daily limit exceeded), 404 (recipient address not found)

3. Track payout status via webhooks

Payouts are async. The API returns immediately with "pending" status. Wait for webhooks:

(Call get_schema with name PayoutSuccessWebhookDto in the CoinCircuit MCP for the full payout.success webhook payload. Call get_schema with name PayoutFailedWebhookDto for the failure payload.)

Payout events (envelope: { event: string, data: { payout: PayoutObject } }):

Constraints