Collect
One-time-code debits, direct debits, or wait for the mobile payment or transfer your customer sends. See pay-ins →

curl -X POST https://api.tucapi.app/v2/payouts \ -H "Authorization: Bearer $API_KEY" \ -H "Idempotency-Key: order-4821" \ -H "Content-Type: application/json" \ -d '{ "country": "VE", "currency": "VES", "method": "mobile_payment", "amount": "1500.50", "beneficiary": { "name": "Jane Doe", "document": { "type": "V", "number": "12345678" }, "bank_code": "0102", "account_number": "04121234567" } }'The outcome reaches you through a signed webhook (payout.confirmed or payout.failed), or you can look it up any time with GET /v2/transactions/{id}.
Collect
One-time-code debits, direct debits, or wait for the mobile payment or transfer your customer sends. See pay-ins →
Pay out
Mobile payment or bank transfer to any bank, with your balance in sight and cancellation while it is pending. See payouts →
Know right away
Webhooks signed with HMAC-SHA256, automatic retries and an event list to reconcile against. See webhooks →
Retry without fear
An Idempotency-Key on every create: the same request returns the same operation, never a double payment. See idempotency →
A full sandbox
A tuc_test_ key and https://api.tucapi.app/sandbox: the same contract, no money moves, with test documents that always produce the same outcome.
One contract, every piece
OpenAPI 3.1 as the single source of truth: these docs, the SDKs and the MCP server are all generated from it.
Errors you can program against
One error envelope and closed codes you can switch on, for API errors and for every operation failure.
Ready for AI assistants
llms.txt, every page in Markdown, and a read-only MCP server for Claude, ChatGPT, Gemini or Codex.