ProviderService link
This service must be implemented by the provider.
All methods of this service must be idempotent, meaning they are safe to retry and multiple calls with the same parameters must not have additional effect.
| Method Name | Request Type | Response Type | Description |
|---|
| PayOut | PayoutRequest | PayoutResponse | Network instructs the provider to execute a payout to the recipient. This method should be idempotent, meaning that multiple calls with the same parameters will have no additional effect. |
| UpdatePayment | UpdatePaymentRequest | UpdatePaymentResponse | Network provides an update on the status of a payment. This can be either a success or a failure. This method should be idempotent, meaning that multiple calls with the same parameters will have no additional effect. |
| UpdateLimit | UpdateLimitRequest | UpdateLimitResponse | This rpc is used to notify the provider about the changes in credit limit and/or credit usage. |
| AppendLedgerEntries | AppendLedgerEntriesRequest | AppendLedgerEntriesResponse | Network can send all the updates about ledger entries of the provider’s accounts. It can be used to keep track of the provider’s exposure to other participants and other important financial events. (see the list in the message below) |
| ApprovePaymentQuotes | ApprovePaymentQuoteRequest | ApprovePaymentQuoteResponse | Pay-in provider approves the final pay-out quotes. This is the “Last Look” endpoint - it must be called after manual AML check completes (if one was required). It allows pay-in provider to verify and approve final rates before payment is executed. |
Requests And Response Types link
AppendLedgerEntriesRequest link
| Field | Type | Label | Description |
|---|
| transactions | AppendLedgerEntriesRequest.Transaction | repeated | This is a list of transactions that were appended to the ledger of the provider. The transaction_id should be used to identify the transaction and ensure that it is processed only once. |
AppendLedgerEntriesRequest.LedgerEntry link
| Field | Type | Label | Description |
|---|
| account_owner_id | uint32 | | 1 is network account, others are ids of participants |
| account_type | AppendLedgerEntriesRequest.AccountType | | account_type is the type of the account that the entry belongs to. It is used to categorize the entries and understand the nature of the financial event. |
| debit | tzero.v1.common.Decimal | | debit is the amount that was debited from the account. If the entry is a credit, this field should be 0. |
| credit | tzero.v1.common.Decimal | | credit is the amount that was credited to the account. If the entry is a debit, this field should be 0. |
AppendLedgerEntriesRequest.Transaction link
AppendLedgerEntriesRequest.Transaction.FeeSettlement link
| Field | Type | Label | Description |
|---|
| fee_settlement_id | uint64 | | |
AppendLedgerEntriesRequest.Transaction.Payout link
| Field | Type | Label | Description |
|---|
| payment_id | uint64 | | |
AppendLedgerEntriesRequest.Transaction.ProviderSettlement link
| Field | Type | Label | Description |
|---|
| settlement_id | uint64 | | |
AppendLedgerEntriesResponse link
This message has no fields defined.
ApprovePaymentQuoteRequest link
ApprovePaymentQuoteResponse link
ApprovePaymentQuoteResponse.Accepted link
This message has no fields defined.
ApprovePaymentQuoteResponse.Rejected link
This message has no fields defined.
PayoutRequest link
| Field | Type | Label | Description |
|---|
| payment_id | uint64 | | payment id assigned by the network (provider should store this id to provide details in UpdatePayout later) |
| payout_id | uint64 | | payout id assigned by the network (provider should store this id to provide details in UpdatePayout later) |
| currency | string | | currency of the payout (participant could support multiple currencies) This is the currency in which the payout should be made. |
| client_quote_id | string | | client quote id of the quote used for this payout (the provider provides the quote IDs in the UpdateQuote rpc) This is the identifier of the quote that was used to calculate the payout amount. |
| amount | tzero.v1.common.Decimal | | amount in currency of the payout This is the amount that should be paid out to the recipient. |
| payout_details | tzero.v1.common.PaymentDetails | optional | payout_method is the payment method for the payout, e.g. bank transfer, crypto transfer, etc. This is used to specify how the payout should be made. |
| pay_in_provider_id | uint32 | | Pay-in provider id which initiated the pay out. |
| travel_rule_data | PayoutRequest.TravelRuleData | optional | |
PayoutRequest.TravelRuleData link
| Field | Type | Label | Description |
|---|
| originator | ivms101.Person | repeated | the natural or legal person that requests payment with originating provider |
| beneficiary | ivms101.Person | repeated | the natural or legal person or legal arrangement who is identified by the originator as the receiver of the requested payment. |
| originator_provider | ivms101.Person | optional | |
PayoutResponse link
| Field | Type | Label | Description |
|---|
| accepted | PayoutResponse.Accepted | | Accepted response - means the payout was accepted by the pay-out provider and pay-out provider is obligated to make a pay-out. |
| failed | PayoutResponse.Failed | | Failure response - means the payout was not executed successfully, e.g. the payout provider could not process the payout. |
| manual_aml_check | PayoutResponse.ManualAmlCheck | | Manual AML check required - means the payout provider requires additional Anti-Money Laundering (AML) verification before the payment can proceed. The pay-out provider will need to perform the manual AML check and then call CompleteManualAmlCheck rpc with the result of the check. |
PayoutResponse.Accepted link
This message has no fields defined.
PayoutResponse.Failed link
PayoutResponse.ManualAmlCheck link
This message has no fields defined.
UpdateLimitRequest link
All the amounts are in USD
| Field | Type | Label | Description |
|---|
| limits | UpdateLimitRequest.Limit | repeated | can contain one or more Limit messages, each representing a credit limit for a specific counterparty provider. |
UpdateLimitRequest.Limit link
| Field | Type | Label | Description |
|---|
| version | int64 | | Incrementally growing for the provider - same as in Ledger. |
| counterpart_id | int32 | | the Id of the counterparty provider, e.g. the provider that is providing the credit limit. It’s usually the payOut provider, which provides the credit line to the payIn provider. |
| payout_limit | tzero.v1.common.Decimal | | payout_limit = credit_limit - credit_usage, negative value means credit limit is exceeded, e.g. if counterparty decreased credit limit |
| credit_limit | tzero.v1.common.Decimal | | This is the credit limit that the counterparty is willing to extend to the provider. |
| credit_usage | tzero.v1.common.Decimal | | This is the credit usage that the provider has used so far. It is the sum of all payouts made by the provider minus the settlement net (settlement balance). It could be negative if the provider has received more in settlements than made payouts (pre-settlement). |
UpdateLimitResponse link
Empty message - means no response is needed.
This message has no fields defined.
UpdatePaymentRequest link
| Field | Type | Label | Description |
|---|
| payment_id | uint64 | | payment_id is a payment id in the T-0 network. |
| payment_client_id | string | | payment_client_id is a payment id assigned by the client, this is the same id that was provided in the CreatePaymentRequest. |
| accepted | UpdatePaymentRequest.Accepted | | Accepted response - means the payout was accepted by the pay-out provider and pay-out provider is obligated to make a pay-out. |
| failed | UpdatePaymentRequest.Failed | | Payment failed and would not be retried. |
| confirmed | UpdatePaymentRequest.Confirmed | | Confirmed response - final state meaning the payout was executed successfully and the payment is now complete. This happens when the payout is successfully processed by the payout provider, and the payment was made to the recipient. |
| manual_aml_check | UpdatePaymentRequest.ManualAmlCheck | | In case of manual AML check, pay-out provider needs to perform additional checks and then call CompleteManualAmlCheck rpc with the result of the check. |
UpdatePaymentRequest.Accepted link
UpdatePaymentRequest.Accepted.TravelRuleData link
UpdatePaymentRequest.Confirmed link
UpdatePaymentRequest.Failed link
UpdatePaymentRequest.ManualAmlCheck link
This message has no fields defined.
UpdatePaymentResponse link
This message has no fields defined.
AppendLedgerEntriesRequest.AccountType link
| Name | Number | Description |
|---|
| ACCOUNT_TYPE_UNSPECIFIED | 0 | |
| ACCOUNT_TYPE_BALANCE | 20 | |
| ACCOUNT_TYPE_PAY_IN | 40 | |
| ACCOUNT_TYPE_PAY_OUT | 50 | |
| ACCOUNT_TYPE_FEE_EXPENSE | 60 | Reflects the fees that the provider has to pay for the services provided by the network. |
| ACCOUNT_TYPE_SETTLEMENT_IN | 80 | |
| ACCOUNT_TYPE_SETTLEMENT_OUT | 90 | |
PayoutResponse.Failed.Reason link
| Name | Number | Description |
|---|
| REASON_UNSPECIFIED | 0 | |
UpdatePaymentRequest.Failed.Reason link
| Name | Number | Description |
|---|
| REASON_UNSPECIFIED | 0 | |