NetworkService

Network surface for publishing quotes and initiating pay-out payments.

All methods of this service are idempotent, meaning they are safe to retry and multiple calls with the same parameters will have no additional effect.

Method NameRequest TypeResponse TypeDescription
UpdateQuoteUpdateQuoteRequestUpdateQuoteResponsePublishes pay-in and pay-out quotes (FX rates) into the network. Quotes carry tiered pricing bands and an expiration timestamp.
GetQuoteGetQuoteRequestGetQuoteResponseRequest the best available quote for a payout in a specific currency, for a given amount. If the payout quote exists, but the credit limit is exceeded, this quote will not be considered.
CreatePaymentCreatePaymentRequestCreatePaymentResponseSubmit a request to create a new payment for the specified pay-out currency. QuoteId is the optional parameter. If the quoteId is specified, it must be a valid quoteId previously returned by GetQuote. If the quoteId is not specified, a suitable quote is selected for the pay-out currency and amount, as GetQuote does.
ConfirmPayoutConfirmPayoutRequestConfirmPayoutResponseInforms the network that a payout has been completed, specifying the payment ID and payout ID from the original payout request. deprecated, use the FinalizePayout rpc instead.
FinalizePayoutFinalizePayoutRequestFinalizePayoutResponseReport the final outcome of a payout to the network, identified by the payment id from the original PayoutRequest, as either success (with an optional receipt) or failure with a reason. Supersedes the deprecated ConfirmPayout, which could only signal completion.
CompleteManualAmlCheckCompleteManualAmlCheckRequestCompleteManualAmlCheckResponseReports the result of a manual AML check on a payment. On approval, the response carries the updated settlement/payout amount and quotes.

Requests And Response Types

CompleteManualAmlCheckRequest

FieldTypeLabelDescription
payment_iduint64
approvedCompleteManualAmlCheckRequest.Approved
rejectedCompleteManualAmlCheckRequest.Rejected

CompleteManualAmlCheckRequest.Approved

This message has no fields defined.

CompleteManualAmlCheckRequest.Rejected

FieldTypeLabelDescription
reasonstring

CompleteManualAmlCheckResponse

FieldTypeLabelDescription
approvedCompleteManualAmlCheckResponse.Approved
rejectedCompleteManualAmlCheckResponse.Rejected

CompleteManualAmlCheckResponse.Approved

FieldTypeLabelDescription
pay_out_amounttzero.v1.common.Decimalupdated amount based on updated quote approved by the pay-in provider
settlement_amounttzero.v1.common.Decimalupdated settlement amount based on updated quote approved by the pay-in provider
pay_out_quote_idint64unique identifier of the updated pay-out quote
pay_out_client_quote_idstringclient_quote_id of the updated pay-out quote assigned by pay-out provider

CompleteManualAmlCheckResponse.Rejected

Rejected means that the updated quotes were rejected by pay-in provider, and the payout provider should not proceed with the payout.

This message has no fields defined.

ConfirmPayoutRequest

FieldTypeLabelDescription
payment_iduint64payment id assigned by the network, this is the same payment id that was provided in the PayoutRequest
payout_iduint64Deprecated. deprecated, this is 1->1 mapping between payment and payout ids
receipttzero.v1.common.PaymentReceiptoptionalPayment receipt might contain metadata about payment recognizable by pay-in provider.

ConfirmPayoutResponse

This message has no fields defined.

CreatePaymentRequest

FieldTypeLabelDescription
payment_client_idstringunique client generated id for this payment
amountPaymentAmountpayment amount - should be either pay-out amount or settlement amount
currencystringpay-out currency
payment_detailstzero.v1.common.PaymentDetailspay-out payment details
quote_idQuoteIdoptionalif specified, must be a valid quoteId that was previously returned by GetQuote otherwise last available quote will be used
travel_rule_dataCreatePaymentRequest.TravelRuleDatatravel rule data

CreatePaymentRequest.TravelRuleData

FieldTypeLabelDescription
originatorivms101.Personrepeatedthe natural or legal person that requests payment with originating provider
beneficiaryivms101.Personrepeatedthe natural or legal person or legal arrangement who is identified by the originator as the receiver of the requested payment.
originator_provider_legal_entity_iduint32optionalLegal entity ID of the originating provider. Required when the provider has multiple registered legal entities. If the provider has a single entity, this field may be omitted.

CreatePaymentResponse

FieldTypeLabelDescription
payment_client_idstringclient generated id supplied in the request
acceptedCreatePaymentResponse.AcceptedThe payment was accepted and will be passed to the payout provider. A suitable quote was found for the pay-out currency and amount.
settlement_requiredCreatePaymentResponse.SettlementRequiredDeprecated. Deprecated: Settlement required response - presettlement flow is being removed. This response type will no longer be returned.
failureCreatePaymentResponse.FailureThe payment was not accepted — e.g. no suitable quote exists for the pay-out currency and amount, or the credit limit is exceeded for the available quotes.

CreatePaymentResponse.Accepted

FieldTypeLabelDescription
payment_iduint64payment ID assigned by the network
settlement_amounttzero.v1.common.Decimal
payout_amounttzero.v1.common.Decimal
payout_provider_iduint32payout provider id with the best quote selected for this payment

CreatePaymentResponse.Failure

FieldTypeLabelDescription
reasonCreatePaymentResponse.Failure.Reason

CreatePaymentResponse.SettlementRequired

Deprecated: presettlement flow is being removed. This message will no longer be used.

FieldTypeLabelDescription
payment_iduint64payment ID assigned by the network
settlement_amounttzero.v1.common.Decimal
payout_provider_iduint32payout provider id with the best quote selected for this payment

FinalizePayoutRequest

FieldTypeLabelDescription
payment_iduint64payment id assigned by the network, this is the same payment id that was provided in the PayoutRequest
successFinalizePayoutRequest.Success
failureFinalizePayoutRequest.Failure

FinalizePayoutRequest.Failure

FieldTypeLabelDescription
reasonstring

FinalizePayoutRequest.Success

FieldTypeLabelDescription
receipttzero.v1.common.PaymentReceiptoptionalPayment receipt might contain metadata about payment recognizable by pay-in provider.

FinalizePayoutResponse

This message has no fields defined.

GetQuoteRequest

FieldTypeLabelDescription
amountPaymentAmountpayment amount - must be either pay-out amount or settlement amount
pay_out_currencystringISO 4217 currency code, e.g. EUR, GBP, etc. in which the payout should be made
pay_out_methodtzero.v1.common.PaymentMethodTypepayment method to use for the payout, e.g. bank transfer, card, etc.
quote_typeQuoteTypetype of the quote, e.g. real-time

GetQuoteResponse

FieldTypeLabelDescription
successGetQuoteResponse.SuccessA suitable quote was found for the provided parameters, with available credit or pre-settlement option. Use the returned quoteId to call CreatePayment.
failureGetQuoteResponse.FailureFailure response - means the quote was not found for the specified parameters, or provider limits would exceed by processing the payment amount with the specified amount.
all_quotesGetQuoteResponse.ProviderQuoterepeatedAll best quotes from providers with credit lines. Each quote is the best rate for that provider for the requested amount. Each quote indicates whether it can be executed immediately. Always returned alongside success/failure - providers can compare alternatives or see options when no executable quote exists.

GetQuoteResponse.Failure

FieldTypeLabelDescription
reasonGetQuoteResponse.Failure.Reason

GetQuoteResponse.ProviderQuote

Best quote from a provider with credit line configured. Contains settlement status and calculated amounts for the payment request.

FieldTypeLabelDescription
quote_idQuoteIdQuote identification - can be used to initiate payment
ratetzero.v1.common.DecimalExchange rate: USD/pay_out_currency
expirationgoogle.protobuf.TimestampQuote validity period
pay_out_amounttzero.v1.common.DecimalPayout amount in payout currency
settlementGetQuoteResponse.ProviderQuote.SettlementSettlement details for this quote
executableboolIndicates payment can be initiated with this quote immediately and no pre-funding is required
fixtzero.v1.common.DecimalFixed charge in USD per transfer for this provider’s quote.

GetQuoteResponse.ProviderQuote.Settlement

Settlement details between pay-in and pay-out providers. All amounts are in USD (settlement currency).

FieldTypeLabelDescription
amounttzero.v1.common.DecimalSettlement amount required for this payment
credit_limittzero.v1.common.DecimalTotal credit limit from payout provider
total_usedtzero.v1.common.DecimalTotal amount used from credit line (completed + reserved)
prefunding_amounttzero.v1.common.DecimalAdditional funding needed before this quote can be executed

GetQuoteResponse.Success

FieldTypeLabelDescription
ratetzero.v1.common.Decimalpay-out quote rate in settlement_currency/pay_out_currency, i.e. USD/pay_out_currency
expirationgoogle.protobuf.Timestampexpiration time of the payout quote
quote_idQuoteIdid of the payout quote
pay_out_amounttzero.v1.common.Decimalpay-out amount in pay-out currency if the quote from response is used
settlement_amounttzero.v1.common.Decimalsettlement amount in settlement currency if the quote from response is used
fixtzero.v1.common.DecimalFixed charge in USD included in settlement_amount. settlement_amount = (pay_out_amount / rate) + fix.

PaymentAmount

Payment amount could be specified either as settlement amount and then converted to corresponding amount of pay-out amount or as pay-out amount, so that the settlement amount is calculated accordingly

FieldTypeLabelDescription
pay_out_amounttzero.v1.common.DecimalAmount in the pay-out currency
settlement_amounttzero.v1.common.DecimalSettlement amount in the settlement currency

QuoteId

FieldTypeLabelDescription
quote_idint64unique identifier of the quote within the specified provider
provider_idint32provider id of the quote

UpdateQuoteRequest

Base currency is always USD, so the quotes are always in USD/currency format.

FieldTypeLabelDescription
pay_outUpdateQuoteRequest.QuoterepeatedZero or more quotes for pay-out operations, each quote must have a unique currency, and one or more bands, with the unique client_quote_id for each band.

UpdateQuoteRequest.Quote

FieldTypeLabelDescription
currencystringBRL, EUR, GBP, etc. (ISO 4217 currency code)
quote_typeQuoteTypeDeprecated. Deprecated: rate type is no longer used; the server ignores the value.
payment_methodtzero.v1.common.PaymentMethodTypePayment method must be specified
bandsUpdateQuoteRequest.Quote.Bandrepeatedlist of bands for this quote
expirationgoogle.protobuf.Timestampexpiration time of the quote
timestampgoogle.protobuf.Timestamptimestamp quote was created

UpdateQuoteRequest.Quote.Band

FieldTypeLabelDescription
client_quote_idstringunique client generated id for this band
max_amounttzero.v1.common.DecimalMaximum amount of USD this band applies to.
ratetzero.v1.common.DecimalUSD/currency rate
fixtzero.v1.common.DecimaloptionalFixed charge in USD applied per transfer on top of the exchange rate. This covers payment method costs (e.g. wire transfer fees). Added to the settlement amount: settlement = (amount / rate) + fix. Defaults to 0 when absent — no fixed charge applied.

UpdateQuoteResponse

This message has no fields defined.

CreatePaymentResponse.Failure.Reason

NameNumberDescription
REASON_UNSPECIFIED0
REASON_QUOTE_NOT_FOUND10No candidate quote was returned for the requested currency / payment method (e.g. no published quote, all expired, no credit line configured between the providers, or the requested amount exceeds the provider’s max_amount band).
REASON_CREDIT_OR_PREDEPOSIT_REQUIRED20At least one provider quoted, but none has enough credit / prefunding headroom to execute the requested amount. Call GetQuote to inspect all_quotes[].settlement for the per-provider prefunding gap.
REASON_AMOUNT_EXCEEDS_QUOTE_BAND30The pinned quote’s band cannot cover the requested amount. The quote is still live; retry with a smaller amount, split the payment across bands, or request a fresh GetQuote for a quote that covers the full amount.
REASON_QUOTE_EXPIRED40The pinned quote’s expires_at has passed. Auto-retry by calling GetQuote to obtain a fresh quote id and re-submit with it.
REASON_QUOTE_ID_UNKNOWN50The pinned quote id does not exist for the pay-in/pay-out provider pair. Indicates a client-side plumbing bug (stale / mismatched id); no auto-retry will succeed until the client fixes quote propagation.

GetQuoteResponse.Failure.Reason

NameNumberDescription
REASON_UNSPECIFIED0
REASON_QUOTE_NOT_FOUND10No candidate quote was returned for the requested currency / payment method (e.g. no published quote, all expired, no credit line configured between the providers, or the requested amount exceeds the provider’s max_amount band).
REASON_CREDIT_OR_PREDEPOSIT_REQUIRED20At least one provider quoted, but none has enough credit / prefunding headroom to execute the requested amount. Inspect all_quotes[].settlement for the per-provider prefunding gap.

QuoteType

NameNumberDescription
QUOTE_TYPE_UNSPECIFIED0
QUOTE_TYPE_REALTIME1real-time quote must be valid at least for 30 seconds (TBD)