IssuerCallbackService link
Issuer-implemented endpoint t-0 calls to reserve deposit addresses and obtain
the renderable QR payloads for an intent.
IssuerService link
t-0 endpoints the Issuer calls to report on-chain recognition, settlement,
and reservation expiry.
Requests And Response Types link
CreatePaymentInstructionsRequest link
| Field | Type | Label | Description |
|---|
| payment_intent_id | uint64 | | Intent the deposit addresses are reserved for. |
| acquirer_id | uint64 | | t-0’s stable id for the Acquirer; the Issuer resolves its settlement wallet from it. |
| amount_usdt | Decimal | | Amount the reserved addresses should accept. |
| expires_at | google.protobuf.Timestamp | | Absolute moment t-0 requires the reservation held until, on t-0’s clock (t-0 currently sets a 60–120 second window). |
CreatePaymentInstructionsResponse link
CreatePaymentInstructionsResponse.Failure link
CreatePaymentInstructionsResponse.Success link
| Field | Type | Label | Description |
|---|
| qr_options | QrOption | repeated | One option per chain the Issuer supports for this intent. |
| expires_at | google.protobuf.Timestamp | | Absolute expiry of the reservation. |
IssuerPaymentExpiredRequest link
PaymentExpired exists on both the acquirer and issuer edges of this flat package,
so each side’s request and response carry their role as a prefix. This is the
issuer’s.
| Field | Type | Label | Description |
|---|
| payment_intent_id | uint64 | | Intent whose reservation expired. |
| expired_at | google.protobuf.Timestamp | | Moment the Issuer released the deposit addresses. |
IssuerPaymentExpiredResponse link
IssuerPaymentExpiredResponse.Accepted link
This message has no fields defined.
IssuerPaymentExpiredResponse.Rejected link
PaymentReceivedRequest link
| Field | Type | Label | Description |
|---|
| payment_intent_id | uint64 | | Intent the on-chain payment satisfies. |
| amount_usdt | Decimal | | Amount credited; must equal the intent’s stored amount_usdt exactly. |
| usdt_on_chain | UsdtOnChainPayment | | |
| received_at | google.protobuf.Timestamp | | Moment the Issuer treated the payment as final. |
PaymentReceivedResponse link
PaymentReceivedResponse.Accepted link
This message has no fields defined.
PaymentReceivedResponse.Rejected link
SettlementSentRequest link
| Field | Type | Label | Description |
|---|
| settlement_ref | string | | Issuer’s id for this USDt settlement; idempotency key, unique per Issuer. |
| amount_usdt | Decimal | | Total USDt settled across the covered intents. |
| settlement | OnChainSettlementDetails | | On-chain transaction, chain, and registered destination wallet for this settlement. |
| settled_payment_intent_ids | uint64 | repeated | Intents this settlement clears; per-intent amounts are resolved by t-0 from the accepted intents. |
| settled_at | google.protobuf.Timestamp | | Moment the Issuer broadcast the settlement transaction. |
SettlementSentResponse link
SettlementSentResponse.Accepted link
This message has no fields defined.
SettlementSentResponse.Rejected link
CreatePaymentInstructionsResponse.Failure.Reason link
| Name | Number | Description |
|---|
| REASON_UNSPECIFIED | 0 | |
| REASON_ISSUER_UNAVAILABLE | 10 | The Issuer is unavailable to allocate. |
| REASON_ADDRESS_POOL_EMPTY | 20 | No free one-time deposit addresses. |
| REASON_AMOUNT_OUT_OF_RANGE | 40 | The amount falls outside the acceptable range. |
IssuerPaymentExpiredResponse.Rejected.Reason link
| Name | Number | Description |
|---|
| REASON_UNSPECIFIED | 0 | |
| REASON_UNKNOWN_INTENT | 10 | payment_intent_id is one t-0 never opened. |
PaymentReceivedResponse.Rejected.Reason link
| Name | Number | Description |
|---|
| REASON_UNSPECIFIED | 0 | |
| REASON_INTENT_EXPIRED | 10 | Received after expires_at on t-0’s clock. |
| REASON_UNKNOWN_INTENT | 20 | No such intent exists. |
| REASON_AMOUNT_MISMATCH | 30 | amount_usdt is not exactly the intent’s stored amount. |
SettlementSentResponse.Rejected.Reason link
| Name | Number | Description |
|---|
| REASON_UNSPECIFIED | 0 | |
| REASON_ON_CHAIN_UNCONFIRMED | 10 | The on-chain transaction is not yet confirmed. |
| REASON_AMOUNT_MISMATCH | 20 | The confirmed amount does not equal amount_usdt or the covered intents’ sum. |
| REASON_WRONG_DESTINATION | 30 | destination_address (or its chain) is not the expected registered (chain, address) pair for the mode. |
| REASON_INTENT_NOT_SETTLEABLE | 40 | A listed intent is not in a settleable state (USDt mode: SETTLEMENT_PENDING; fiat mode: authorized). |