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 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 acquirer’s.

FieldTypeLabelDescription
payment_intent_iduint64Intent that expired.
payment_refstringEcho of the Acquirer’s CreatePaymentIntent payment_ref — a non-authoritative correlation ref the Acquirer can match by, alongside payment_intent_id.
expired_atgoogle.protobuf.TimestampMoment the intent became terminal.

AcquirerPaymentExpiredResponse

This message has no fields defined.

CreatePaymentIntentRequest

FieldTypeLabelDescription
payment_refstringSale identifier from the Acquirer’s own ledger, echoed on PaymentAuthorized and PaymentExpired. Not an idempotency key, and not required to be unique.
idempotency_keystringRetry identity for this call, unique per Acquirer. At most one payment intent is ever created under one key, and repeating a key whose intent exists returns it unchanged. Retrying a declined sale takes a fresh key under the same payment_ref.
local_amountDecimalFiat amount of the sale, in the settlement currency.
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_rateDecimalUnits 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_iduint64t-0’s id for the opened intent.
local_currencystringISO 4217; echoed in USDt mode, resolved from the quote in fiat mode.
local_amountDecimalFiat amount of the sale.
fx_rateDecimalUnits of local_currency per 1 USDt locked for this intent.
amount_usdtDecimalExact 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_amountDecimalFiat amount the merchant wants to price.

GetPaymentQuoteResponse

FieldTypeLabelDescription
successGetPaymentQuoteResponse.Success
failureGetPaymentQuoteResponse.Failure

GetPaymentQuoteResponse.Failure

FieldTypeLabelDescription
reasonGetPaymentQuoteResponse.Failure.Reason

GetPaymentQuoteResponse.Success

FieldTypeLabelDescription
quote_iduint64t-0’s id for the priced standing quote.
amount_usdtDecimalUSDt the customer pays for local_amount at fx_rate.
fx_rateDecimalStanding 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_iduint64Intent that was authorized.
payment_refstringEcho of the Acquirer’s CreatePaymentIntent payment_ref — a non-authoritative correlation ref, so the merchant order can be matched by either this or payment_intent_id.
usdt_on_chainUsdtOnChainPayment
approved_atgoogle.protobuf.TimestampMoment t-0 accepted PaymentReceived.

PaymentAuthorizedResponse

This message has no fields defined.

SettlementCompletedRequest

FieldTypeLabelDescription
settlement_iduint64t-0’s id for the settlement being completed.
settlement_amountDecimalAmount the Acquirer actually received; currency set by the settlement variant.
settled_payment_intent_idsuint64repeatedIntents this settlement clears.
settled_atgoogle.protobuf.TimestampMoment the settlement reached the Acquirer.
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 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_currencystringISO 4217 currency of the bank-rails transfer.
settlement_amountDecimalFiat amount the LP transferred.
acquirer_iduint64t-0’s id for the Acquirer this settlement is addressed to.
initiated_atgoogle.protobuf.TimestampMoment t-0 accepted the LP’s fiat-settlement report.

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_receivedDecimalFiat amount credited to the Acquirer’s account.
received_atgoogle.protobuf.TimestampMoment the funds landed in the Acquirer’s account.

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 right now.

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.
REASON_CURRENCY_MISMATCH30local_currency is not the currency t-0 recorded for the matched transfer; resend with the correct currency.