<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>USDT Pay</title><link>https://usdt-pay-docs.t-0.network/</link><description>Recent content on USDT Pay</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 16 Jun 2025 12:09:09 +0200</lastBuildDate><atom:link href="https://usdt-pay-docs.t-0.network/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction</title><link>https://usdt-pay-docs.t-0.network/docs/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/introduction/</guid><description>&lt;p&gt;USDT Pay lets Acquirers accept customer USDT payments without taking custody of customer funds. The customer pays on-chain from their own wallet to a one-time deposit address. t-0 verifies the payment and tracks the payment intent through authorization and settlement.&lt;/p&gt;
&lt;p&gt;Four roles take part:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Acquirer&lt;/strong&gt; — owns the merchant relationship, creates the payment intent, and receives settlement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Issuer&lt;/strong&gt; — creates payment instructions, allocates one-time deposit addresses, watches the blockchain, and settles USDT.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liquidity Provider (LP)&lt;/strong&gt; — in fiat settlement mode, receives USDT from the Issuer and pays local fiat to the Acquirer over bank rails.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;t-0&lt;/strong&gt; — routes messages, owns payment-intent state, maintains the LP standing quotes, and verifies on-chain settlement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each Acquirer has one settlement mode, fixed at onboarding. In &lt;strong&gt;USDT settlement&lt;/strong&gt;, the Issuer settles USDT on-chain to the Acquirer&amp;rsquo;s wallet. In &lt;strong&gt;fiat settlement&lt;/strong&gt;, the Issuer settles USDT to the LP, and the LP settles local fiat to the Acquirer.&lt;/p&gt;</description></item><item><title>How It Works</title><link>https://usdt-pay-docs.t-0.network/docs/payments/how-it-works/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/payments/how-it-works/</guid><description>&lt;p&gt;USDT Pay lets an Acquirer accept a customer&amp;rsquo;s on-chain USDT payment and receive verified settlement in the mode configured at onboarding. The customer pays from their own wallet to a one-time deposit address. The Acquirer does not take custody of customer funds, and the QR only carries the chain-native payment URI into the wallet.&lt;/p&gt;
&lt;p&gt;The flow starts when the Acquirer creates a payment intent. t-0 asks the Issuer for payment instructions, returns a deposit address and wallet payload, verifies the Issuer&amp;rsquo;s payment report, authorizes the sale, and coordinates settlement. In USDT settlement, the Issuer settles on-chain to the Acquirer&amp;rsquo;s wallet. In fiat settlement, the Issuer settles USDT to the LP, and the LP pays local fiat to the Acquirer over bank rails.&lt;/p&gt;</description></item><item><title>Fiat Settlement</title><link>https://usdt-pay-docs.t-0.network/docs/payments/fiat-settlement/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/payments/fiat-settlement/</guid><description>&lt;p&gt;This document specifies the fiat settlement path: the path on which a merchant&amp;rsquo;s Acquirer is settled in its local currency through a Liquidity Provider, while the customer pays USDT on-chain. It covers the inter-party protocol, the money movements, the settlement guarantee, and the failure handling. It is written for leaders, product managers, and architects across the four participants (t-0, the Acquirer, the Issuer, and the LP). The alternative mode, in which the Acquirer is settled in USDT on-chain, is out of scope here except for a single contrast that clarifies the boundary.&lt;/p&gt;</description></item><item><title>Integration Guidance</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/introduction/</guid><description>&lt;p&gt;You integrate with USDT Pay by implementing the protocol over the t-0 network. Communication uses Connect RPC, so every method is available over gRPC and over HTTP/JSON with the same request and response types. Every request is signed (see &lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/protocol/authentication/"&gt;Request Authentication&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Your role determines which services you call and which callbacks you implement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Acquirer&lt;/strong&gt; — call &lt;code&gt;AcquirerService&lt;/code&gt; (get a quote, create a payment intent, confirm fiat receipt); implement &lt;code&gt;AcquirerCallbackService&lt;/code&gt; (authorization and settlement events).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Issuer&lt;/strong&gt; — call &lt;code&gt;IssuerService&lt;/code&gt; (payment received, settlement sent, expiry); implement &lt;code&gt;IssuerCallbackService&lt;/code&gt; (create payment instructions).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liquidity Provider&lt;/strong&gt; — call &lt;code&gt;LpService&lt;/code&gt; (publish and withdraw quotes, fiat settlement sent); implement &lt;code&gt;LpCallbackService&lt;/code&gt; (execute quote).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The service and message definitions are in the &lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/"&gt;API Reference&lt;/a&gt;, generated from &lt;code&gt;acquirer.proto&lt;/code&gt;, &lt;code&gt;issuer.proto&lt;/code&gt;, &lt;code&gt;lp.proto&lt;/code&gt;, and &lt;code&gt;types.proto&lt;/code&gt;. Generate your client and server stubs from those definitions.&lt;/p&gt;</description></item><item><title>Idempotency and Reliability</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/idempotency/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/idempotency/</guid><description>&lt;p&gt;Connections drop and requests time out. t-0 and the roles deliver every state-changing message at least once, retrying with backoff until the receiver acknowledges, so your endpoint can receive the same request more than once. Idempotency makes those retries safe: a repeat with the same key returns the original result and causes no further side effect.&lt;/p&gt;
&lt;p&gt;At-least-once delivery plus idempotent receivers produces exactly-once processing without a coordination protocol. Both t-0 and every role must hold their side of the contract.&lt;/p&gt;</description></item><item><title>Acquirer</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/</link><pubDate>Mon, 16 Jun 2025 12:09:09 +0200</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/</guid><description>&lt;p&gt;&lt;a name="tzero-v1-pay-AcquirerCallbackService"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="acquirercallbackservice"&gt;AcquirerCallbackService &lt;a href="#acquirercallbackservice" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Acquirer-implemented callbacks t-0 pushes — authorization, settlement
progress, and expiry. Delivered at least once and deduped on the t-0 id.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method Name&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;PaymentAuthorized&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-PaymentAuthorizedRequest"&gt;PaymentAuthorizedRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-PaymentAuthorizedResponse"&gt;PaymentAuthorizedResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Tells the merchant the sale is approved; from here the Issuer is obligated to settle.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SettlementInitiated&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-SettlementInitiatedRequest"&gt;SettlementInitiatedRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-SettlementInitiatedResponse"&gt;SettlementInitiatedResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Pre-notice that the LP sent a fiat bank transfer, naming the reference to expect.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SettlementCompleted&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-SettlementCompletedRequest"&gt;SettlementCompletedRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-SettlementCompletedResponse"&gt;SettlementCompletedResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Settlement verified on-chain as reached the Acquirer (USDt mode only); lists the intents it clears.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PaymentExpired&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-AcquirerPaymentExpiredRequest"&gt;AcquirerPaymentExpiredRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_acquirer/#tzero-v1-pay-AcquirerPaymentExpiredResponse"&gt;AcquirerPaymentExpiredResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Intent expired with no payment; clear the pending order and drop the QR.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name="tzero-v1-pay-AcquirerService"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Issuer</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/</link><pubDate>Mon, 16 Jun 2025 12:09:09 +0200</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/</guid><description>&lt;p&gt;&lt;a name="tzero-v1-pay-IssuerCallbackService"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="issuercallbackservice"&gt;IssuerCallbackService &lt;a href="#issuercallbackservice" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Issuer-implemented endpoint t-0 calls to reserve deposit addresses and obtain
the renderable QR payloads for an intent.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method Name&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;CreatePaymentInstructions&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-CreatePaymentInstructionsRequest"&gt;CreatePaymentInstructionsRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-CreatePaymentInstructionsResponse"&gt;CreatePaymentInstructionsResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Reserves one deposit address per supported chain and returns the renderable QR payloads.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name="tzero-v1-pay-IssuerService"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="issuerservice"&gt;IssuerService &lt;a href="#issuerservice" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;t-0 endpoints the Issuer calls to report on-chain recognition, settlement,
and reservation expiry.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method Name&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;PaymentReceived&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-PaymentReceivedRequest"&gt;PaymentReceivedRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-PaymentReceivedResponse"&gt;PaymentReceivedResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Reports the customer&amp;rsquo;s payment seen on-chain and KYT-cleared; the Issuer now owns on-chain risk.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SettlementSent&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-SettlementSentRequest"&gt;SettlementSentRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-SettlementSentResponse"&gt;SettlementSentResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Reports a USDt settlement sent on-chain to the registered destination, for t-0 to verify.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PaymentExpired&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-IssuerPaymentExpiredRequest"&gt;IssuerPaymentExpiredRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_issuer/#tzero-v1-pay-IssuerPaymentExpiredResponse"&gt;IssuerPaymentExpiredResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Confirms the reservation closed with no valid payment and the deposit addresses are released.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
 &lt;!-- end services --&gt;
&lt;h2 id="requests-and-response-types"&gt;Requests And Response Types &lt;a href="#requests-and-response-types" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a name="tzero-v1-pay-CreatePaymentInstructionsRequest"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Liquidity Provider</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_lp/</link><pubDate>Mon, 16 Jun 2025 12:09:09 +0200</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_lp/</guid><description>&lt;p&gt;&lt;a name="tzero-v1-pay-LpCallbackService"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="lpcallbackservice"&gt;LpCallbackService &lt;a href="#lpcallbackservice" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;LP-implemented endpoint t-0 calls to bind the LP to a standing quote&amp;rsquo;s locked
rate for one authorized sale. Fiat mode only.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method Name&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ExecuteQuote&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_lp/#tzero-v1-pay-ExecuteQuoteRequest"&gt;ExecuteQuoteRequest&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_lp/#tzero-v1-pay-ExecuteQuoteResponse"&gt;ExecuteQuoteResponse&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Creates the LP&amp;rsquo;s firm per-sale obligation at the standing quote&amp;rsquo;s locked rate.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name="tzero-v1-pay-LpService"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="lpservice"&gt;LpService &lt;a href="#lpservice" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;t-0 endpoints the LP calls to push and withdraw standing quotes and to report
its self-initiated fiat settlements. Fiat mode only.&lt;/p&gt;</description></item><item><title>Shared Types</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_types/</link><pubDate>Mon, 16 Jun 2025 12:09:09 +0200</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/pay_types/</guid><description>&lt;!-- end services --&gt;
&lt;h2 id="requests-and-response-types"&gt;Requests And Response Types &lt;a href="#requests-and-response-types" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a name="tzero-v1-pay-FiatSettlementDetails"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="fiatsettlementdetails"&gt;FiatSettlementDetails &lt;a href="#fiatsettlementdetails" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Fiat bank-rails settlement detail shape. Currently unused on the wire: fiat
mode has no SettlementCompleted (&lt;code&gt;13&lt;/code&gt;) — the Acquirer&amp;rsquo;s SettlementReceived
(&lt;code&gt;12&lt;/code&gt;) is terminal — and SettlementInitiated (&lt;code&gt;11&lt;/code&gt;) carries these fields
inline. Retained as the canonical fiat-settlement detail shape.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Label&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;lp_id&lt;/td&gt;
 &lt;td&gt;&lt;a href="../scalar/#uint64"&gt;uint64&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;t-0&amp;rsquo;s identifier for the LP that settled; scopes &lt;code&gt;bank_transfer_ref&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;local_currency&lt;/td&gt;
 &lt;td&gt;&lt;a href="../scalar/#string"&gt;string&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ISO 4217 currency code delivered (e.g. COP).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;bank_transfer_ref&lt;/td&gt;
 &lt;td&gt;&lt;a href="../scalar/#string"&gt;string&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;LP-minted reference on the bank-rails transfer.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name="tzero-v1-pay-OnChainSettlementDetails"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Common</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/common_common/</link><pubDate>Mon, 16 Jun 2025 12:09:09 +0200</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/common_common/</guid><description>&lt;!-- end services --&gt;
&lt;h2 id="requests-and-response-types"&gt;Requests And Response Types &lt;a href="#requests-and-response-types" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a name="tzero-v1-common-Decimal"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="decimal"&gt;Decimal &lt;a href="#decimal" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Decimal 123.45 equals to unscaled=12345 and exponent=-2 (e.g. unscaled * 10^exponent, 123.45 = 12345 * 10^-2)&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Label&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;unscaled&lt;/td&gt;
 &lt;td&gt;&lt;a href="../scalar/#int64"&gt;int64&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;exponent&lt;/td&gt;
 &lt;td&gt;&lt;a href="../scalar/#int32"&gt;int32&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
 &lt;!-- end messages --&gt;
&lt;p&gt;&lt;a name="tzero-v1-common-Blockchain"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="blockchain"&gt;Blockchain &lt;a href="#blockchain" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Number&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;BLOCKCHAIN_UNSPECIFIED&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;BLOCKCHAIN_BSC&lt;/td&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;BLOCKCHAIN_ETH&lt;/td&gt;
 &lt;td&gt;20&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;BLOCKCHAIN_TRON&lt;/td&gt;
 &lt;td&gt;100&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name="tzero-v1-common-Stablecoin"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="stablecoin"&gt;Stablecoin &lt;a href="#stablecoin" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Number&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;STABLECOIN_UNSPECIFIED&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;STABLECOIN_USDT&lt;/td&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
 &lt;!-- end enums --&gt;</description></item><item><title>Scalar Types</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/scalar/</link><pubDate>Mon, 16 Jun 2025 12:09:09 +0200</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/api-reference/scalar/</guid><description>&lt;h2 id="well-known-types"&gt;Well-Known Types &lt;a href="#well-known-types" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a name="google-protobuf-Timestamp"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="googleprotobuftimestamp"&gt;google.protobuf.Timestamp &lt;a href="#googleprotobuftimestamp" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution.&lt;/p&gt;
&lt;p&gt;See &lt;a href="https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp" rel="external" target="_blank"&gt;google.protobuf.Timestamp&lt;svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path fill="currentColor" d="M14 5c-.552 0-1-.448-1-1s.448-1 1-1h6c.552 0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1v-3.586l-7.293 7.293c-.391.39-1.024.39-1.414 0-.391-.391-.391-1.024 0-1.414l7.293-7.293h-3.586zm-9 2c-.552 0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552 0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1v4.563c0 1.657-1.343 3-3 3h-11c-1.657 0-3-1.343-3-3v-11c0-1.657 1.343-3 3-3h4.563c.552 0 1 .448 1 1s-.448 1-1 1h-4.563z"/&gt;&lt;/svg&gt;&lt;/a&gt; documentation.&lt;/p&gt;</description></item><item><title>Request Authentication</title><link>https://usdt-pay-docs.t-0.network/docs/integration-guidance/protocol/authentication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://usdt-pay-docs.t-0.network/docs/integration-guidance/protocol/authentication/</guid><description>&lt;p&gt;Every request between t-0 and a role (Acquirer, Issuer, or LP) is signed. Signing uses an ECDSA signature over a Keccak-256 hash — the same primitives as Ethereum — giving both authentication and message integrity. Both directions are signed: t-0 signs the requests it sends to a role, and each role signs the requests it sends to t-0.&lt;/p&gt;
&lt;h2 id="request-signing"&gt;Request signing &lt;a href="#request-signing" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Each request carries three headers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;X-Signature&lt;/code&gt; — the hex-encoded ECDSA signature of the request body with the timestamp appended.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;X-Public-Key&lt;/code&gt; — the hex-encoded public key for the signing key. Compressed (33 bytes) or uncompressed (65 bytes); compressed is preferred.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;X-Signature-Timestamp&lt;/code&gt; — the Unix timestamp in milliseconds used during signing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To sign a request: take the current Unix timestamp in milliseconds as a 64-bit unsigned integer encoded little-endian, append it to the request body, hash the result with Keccak-256, and sign the hash with the sender&amp;rsquo;s ECDSA private key.&lt;/p&gt;</description></item></channel></rss>