AcquirerCallbackService

Acquirer-implemented callbacks t-0 pushes — authorization, settlement progress, and expiry. Delivered at least once and deduped on the t-0 id.

Method NameRequest TypeResponse TypeDescription
PaymentAuthorizedPaymentAuthorizedRequestPaymentAuthorizedResponseTells the merchant the sale is approved; from here the Issuer is obligated to settle.
SettlementInitiatedSettlementInitiatedRequestSettlementInitiatedResponsePre-notice that the LP sent a fiat bank transfer, naming the reference to expect.
SettlementCompletedSettlementCompletedRequestSettlementCompletedResponseSettlement verified on-chain as reached the Acquirer (USDt mode only); lists the intents it clears.
PaymentExpiredAcquirerPaymentExpiredRequestAcquirerPaymentExpiredResponseIntent expired with no payment; clear the pending order and drop the QR.

AcquirerService

t-0 endpoints the Acquirer calls to price a sale, open a payment intent, and confirm fiat receipt.

Method NameRequest TypeResponse TypeDescription
GetPaymentQuoteGetPaymentQuoteRequestGetPaymentQuoteResponsePrices an upcoming fiat sale from t-0’s Order Book of standing LP quotes.
CreatePaymentIntentCreatePaymentIntentRequestCreatePaymentIntentResponseOpens a payment intent for a sale; t-0 calls the Issuer inline and returns QR options.
SettlementReceivedSettlementReceivedRequestSettlementReceivedResponseConfirms fiat settlement landed in the Acquirer’s bank account — the oracle for the bank leg.

Requests And Response Types

AcquirerPaymentExpiredRequest

PaymentExpired is also a method on IssuerService in this flat package, so the request/response carry a role prefix to avoid a colliding PaymentExpiredRequest. Interim name: buf STANDARD RPC_REQUEST_STANDARD_NAME accepts only bare PaymentExpiredRequest or the full AcquirerCallbackServicePaymentExpiredRequest, so this short form needs a lint ignore at graduation (or rename the method).

FieldTypeLabelDescription
payment_intent_iduint64
payment_refstringEcho of the Acquirer’s CreatePaymentIntent payment_ref.
local_currencystring
local_amounttzero.v1.common.Decimal
fx_ratetzero.v1.common.Decimal
expired_atgoogle.protobuf.TimestampMoment the intent became terminal.

AcquirerPaymentExpiredResponse

This message has no fields defined.

CreatePaymentIntentRequest

FieldTypeLabelDescription
payment_refstringSale identifier the Acquirer keeps in its own ledger; idempotency key, unique per Acquirer.
local_amounttzero.v1.common.Decimal
usdt_settlementCreatePaymentIntentRequest.UsdtSettlementTerms
fiat_settlementCreatePaymentIntentRequest.FiatSettlementTerms

CreatePaymentIntentRequest.FiatSettlementTerms

Reference to a standing quote when the Acquirer is settled in fiat via an LP.

FieldTypeLabelDescription
quote_iduint64Standing quote obtained from GetPaymentQuote; supplies local_currency and fx_rate.

CreatePaymentIntentRequest.UsdtSettlementTerms

Acquirer-supplied terms when it settles in USDt and runs its own FX.

FieldTypeLabelDescription
local_currencystringISO 4217 currency the merchant quoted the customer in.
fx_ratetzero.v1.common.DecimalUnits of local_currency per 1 USDt, set by the Acquirer.

CreatePaymentIntentResponse

FieldTypeLabelDescription
successCreatePaymentIntentResponse.Success
failureCreatePaymentIntentResponse.Failure

CreatePaymentIntentResponse.Failure

FieldTypeLabelDescription
reasonCreatePaymentIntentResponse.Failure.Reason

CreatePaymentIntentResponse.Success

FieldTypeLabelDescription
payment_intent_iduint64
local_currencystringISO 4217; echoed in USDt mode, resolved from the quote in fiat mode.
local_amounttzero.v1.common.Decimal
fx_ratetzero.v1.common.Decimal
amount_usdttzero.v1.common.DecimalExact amount the customer pays, round(local_amount / fx_rate, 2dp, half-up).
expires_atgoogle.protobuf.TimestampAfter this moment the Issuer releases the deposit addresses and the QR is invalid.
qr_optionsQrOptionrepeatedOne option per chain the Issuer supports for this intent; the customer picks one.

GetPaymentQuoteRequest

FieldTypeLabelDescription
local_currencystringISO 4217 currency the merchant is quoting in (e.g. COP).
local_amounttzero.v1.common.Decimal

GetPaymentQuoteResponse

FieldTypeLabelDescription
successGetPaymentQuoteResponse.Success
failureGetPaymentQuoteResponse.Failure

GetPaymentQuoteResponse.Failure

FieldTypeLabelDescription
reasonGetPaymentQuoteResponse.Failure.Reason

GetPaymentQuoteResponse.Success

FieldTypeLabelDescription
quote_iduint64
amount_usdttzero.v1.common.Decimal
fx_ratetzero.v1.common.DecimalStanding quote’s rate, in units of local_currency per 1 USDt.
expires_atgoogle.protobuf.TimestampMoment the standing quote stops standing on t-0’s clock.

PaymentAuthorizedRequest

FieldTypeLabelDescription
payment_intent_iduint64
payment_refstringEcho of the Acquirer’s CreatePaymentIntent payment_ref, to match the merchant order.
local_currencystring
local_amounttzero.v1.common.Decimal
fx_ratetzero.v1.common.Decimal
amount_usdttzero.v1.common.Decimal
usdt_on_chainUsdtOnChainPayment
approved_atgoogle.protobuf.TimestampMoment t-0 accepted PaymentReceived.

PaymentAuthorizedResponse

This message has no fields defined.

SettlementCompletedRequest

FieldTypeLabelDescription
settlement_iduint64
settlement_amounttzero.v1.common.DecimalAmount the Acquirer actually received; currency set by the settlement variant.
settled_payment_intent_idsuint64repeated
settled_atgoogle.protobuf.Timestamp
settlementOnChainSettlementDetailsThe on-chain USDt settlement that reached the Acquirer. USDt mode only — fiat mode has no SettlementCompleted (the Acquirer’s SettlementReceived is terminal).

SettlementCompletedResponse

This message has no fields defined.

SettlementInitiatedRequest

FieldTypeLabelDescription
fiat_settlement_iduint64t-0’s id for this fiat settlement (the fiatSettlementId); the bank-rails leg’s key.
lp_iduint64t-0’s id for the LP that sent the transfer; scopes bank_transfer_ref.
bank_transfer_refstringReference the LP put on the bank-rails transfer; matched against the statement.
settled_payment_intent_idsuint64repeatedIntents this settlement clears, resolved by t-0 from the LP’s executions.
local_currencystring
settlement_amounttzero.v1.common.Decimal
initiated_atgoogle.protobuf.Timestamp

SettlementInitiatedResponse

This message has no fields defined.

SettlementReceivedRequest

FieldTypeLabelDescription
lp_iduint64t-0’s id for the LP that sent the transfer, echoed from SettlementInitiated.
bank_transfer_refstringReference on the received transfer, matched against the bank statement.
local_currencystringISO 4217 currency credited.
amount_receivedtzero.v1.common.Decimal
received_atgoogle.protobuf.Timestamp

SettlementReceivedResponse

FieldTypeLabelDescription
acceptedSettlementReceivedResponse.Accepted
rejectedSettlementReceivedResponse.Rejected

SettlementReceivedResponse.Accepted

This message has no fields defined.

SettlementReceivedResponse.Rejected

FieldTypeLabelDescription
reasonSettlementReceivedResponse.Rejected.Reason

CreatePaymentIntentResponse.Failure.Reason

NameNumberDescription
REASON_UNSPECIFIED0
REASON_ISSUER_UNAVAILABLE10The Issuer could not be reached to allocate instructions.
REASON_ADDRESS_POOL_EMPTY20The Issuer has no free one-time deposit addresses.
REASON_AMOUNT_OUT_OF_RANGE40The amount falls outside the acceptable range.
REASON_QUOTE_EXPIRED50The referenced quote no longer stands.
REASON_QUOTE_INSUFFICIENT_HEADROOM70The quote’s remaining validity is too short to guarantee execution before it expires.

GetPaymentQuoteResponse.Failure.Reason

NameNumberDescription
REASON_UNSPECIFIED0
REASON_QUOTE_UNAVAILABLE10No standing quote available for this currency (LP not quoting it now, or not enabled for this Acquirer).
REASON_AMOUNT_OUT_OF_RANGE30No standing quote’s per-sale USDt bounds cover the request amount.

SettlementReceivedResponse.Rejected.Reason

NameNumberDescription
REASON_UNSPECIFIED0
REASON_AMOUNT_MISMATCH10amount_received does not equal the matched transfer’s settlement amount.
REASON_UNKNOWN_TRANSFER20No fiat settlement matches the (lp_id, bank_transfer_ref) pair.