{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/payments-odl/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Payment sub-states","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com/products/custody","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"payment-sub-states","__idx":0},"children":["Payment sub-states"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payment sub-states are a type of payment label that is applied to the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/resources/standard-ripplenet-payment-object"},"children":["Standard RippleNet Payment Object (SRPO)"]},". Sub-states support bi-directional communication between RippleNet Server instances after payments have been settled, but not yet completed. Where labels only provide messaging capabilities, sub-states provide functionality for continuing the payment process until completion."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Within the context of the overall payment process, senders use the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/reference/openapi/non-orchestration-payments/settlepayment"},"children":["Settle payment"]}," operation to settle or execute payments in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LOCKED"]}," state, and the payment state for settled payments is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXECUTED"]},", which indicates that funds have been transferred to the receiver account on all RippleNet ledgers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once a payment enters the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXECUTED"]}," state, receivers use sub-states to process and communicate the status of payments for the following scenarios:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cash payouts"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Required amended information for beneficiary payout on local rails"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Originator cancels a payment"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Pending due diligence"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information about payment states in RippleNet, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/introduction/concepts/payment-states"},"children":["Payment states"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payment-labels-vs-sub-states","__idx":1},"children":["Payment labels vs. sub-states"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keep in mind that there are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["key differences"]}," between payment labels and sub-states:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Labels"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Only visible to the party that uses them"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Only added to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internal_info"]}," block of the RPO"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deletion only removes labels from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internal_info"]}," block"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sub-states"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Used for bi-directional messaging and payment processing between participants"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Added to both the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internal_info"]}," block and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info.executed"]}," block of the RPO"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deletion removes sub-states from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internal_info"]}," block but ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info.executed"]}," block"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-operations-for-payment-sub-states","__idx":2},"children":["API operations for payment sub-states"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following RippleNet Server API operations provide sub-state functionality:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Finalize payment"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add payment sub-state"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Get payments"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Delete payment labels"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"finalize-payment","__idx":3},"children":["Finalize payment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/reference/openapi/non-orchestration-payments/finalizepayment"},"children":["Finalize payment"]}," operation is used exclusively by receivers to mark payments in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXECUTED"]}," state with two specific sub-states: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORWARDED"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AWAITING_COLLECTION"]},". The receiver can make this request multiple times to provide a log of each subsequent sub-state until it is ready to make the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/reference/openapi/non-orchestration-payments/completepayment"},"children":["Complete payment"]}," request. The sub-state label is added to both the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internal_info.labels"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info.executed"]}," arrays of the RPO."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"add-payment-sub-state","__idx":4},"children":["Add payment sub-state"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/reference/openapi/non-orchestration-payments/addpaymentsubstate"},"children":["Add payment sub-state"]}," operation is used by both senders and receivers to mark payments in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXECUTED"]}," state with any of the RippleNet payment sub-states, excluding ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORWARDED"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AWAITING_COLLECTION"]},", provided in the list below. The sub-state label is added to both the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internal_info.labels"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info.executed"]}," arrays of the RPO."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"get-payments","__idx":5},"children":["Get payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/reference/openapi/non-orchestration-payments/getpayments"},"children":["Get payments"]}," operation is used by both senders and receivers to retrieve all payments in a RippleNet server instance that meet the criteria defined by the query parameters. For managing payment sub-states, senders and receivers use the Get payments operation to poll for payments in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXECUTED"]}," state with specific sub-state labels."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"delete-payment-labels","__idx":6},"children":["Delete payment labels"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/reference/openapi/non-orchestration-payments/deletepaymentlabels"},"children":["Delete payment labels"]}," operation is used to remove an existing label from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internal_info.labels"]}," array in the RPO without removing or altering the sub-state label in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info.executed"]}," block. Labels should be removed after an action has been taken, ensuring that the payment does not continue to show up in poller results for past sub-states."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"list-of-payment-sub-states","__idx":7},"children":["List of payment sub-states"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To standardize implementations, the following sub-states are defined based on the currently known use cases. This list will be updated as and when more use cases arise that can use this feature."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":""},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"style":{"width":"220px"}},"children":["Sub-state"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AMENDED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The sender has amended the user_info array. The amended user_info array within this sub-state block will have precedence over the original user_info array."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AWAITING_AGENT_PROCESS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["For cash pick up when the receiving agent generates a unique code for the payment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AWAITING_COLLECTION"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The funds are available for the beneficiary to collect."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AMENDMENT_PROCESSING"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Indicates that the amended information was sent to the agent."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AMENDMENT_REJECTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Indicates that the amended information was rejected."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COLLECTION_FAILED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The cash payout collection failed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORWARDED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The payment has been forwarded to local rails for final payout to the beneficiary."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAYOUT_FAILED"]}," "]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The payout failed, that is the beneficiary hasn't been paid out."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING_BANK_DUE_DILIGENCE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The receiver has forwarded payment to a bank but the bank has informed them that settlement will be delayed due to additional compliance activity required by the bank. For example, this sometimes happens with large payments."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING_DUE_DILIGENCE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Additional processes or checks are required to be performed by the receiver prior to payout."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING_PAYOUT"]}," "]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The payout to the beneficiary is currently pending."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REQUEST_INFO"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The receiver has requested additional or amended information to perform final payout to the beneficiary."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REQUEST_RETURN"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The originator has requested that an executed payment be returned."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REQUEST_RETURN_REJECTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The receiver has rejected a request to return an executed payment."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the sub-states listed above are not sufficient to handle a specific use case, please reach out to your Ripple customer partner engineer."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"recommendations-for-sub-state-field-values","__idx":8},"children":["Recommendations for sub-state field values"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following table lists all of the available RippleNet payment sub-states, recommended memo and info field values, and indicates which participant adds the sub-states and which participants polls for the sub-state."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":""},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"style":{"width":"220px"}},"children":["Sub-state"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Memo"},"children":["Memo"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Info (Optional)"},"children":["Info (Optional)"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":"Added By"},"children":["Added By"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":"Polled By"},"children":["Polled By"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORWARDED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“Instruction is being processed by the clearing channel, awaiting final status.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING_DUE_DILIGENCE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“Payment has been sent to compliance for manual checks.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AWAITING_COLLECTION"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“Payment available for the beneficiary to collect.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Reference or PIN code for the beneficiary to collect cash."]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COLLECTION_FAILED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“Cash pick-up collection failed.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REQUEST_RETURN"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“Request for this executed payment to be returned.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REQUEST_RETURN_REJECTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“The request for returning this executed payment has been rejected.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REQUEST_INFO"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“Additional information required.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Errors, array of errors related to the missing field, wrong field, or a document. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments-odl/api-docs/ripplenet/resources/error-codes"},"children":["Error codes"]}," for more information and examples."]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AMENDED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info"]}," has been amended. The amended ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info"]}," within this sub-state block will take precedence over the original ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info"]},".”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Include the amended ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_info"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AWAITING_AGENT_PROCESS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“The agent is processing instructions, awaiting final status.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AMENDMENT_REJECTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“The amended information led to a payment failure.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AMENDMENT_PROCESSING"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["“The amended information was sent to the agent, awaiting final status.”"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Receiver"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":["Sender"]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Caution"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORWARDED"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AWAITING_COLLECTION"]}," sub-states should be only triggered by the receiver through the Finalize payment operation. The rest of the sub-states in the list can be triggered by any node through the Add Payment Sub-state operation."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In scenarios where payment failed due to insufficient liquidity, the payment will transition to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SETTLEMENT_DECLINED"]}," state. This is a payment state, not a sub-state. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SETTLEMENT_DECLINED"]}," is a transient state that will eventually transition to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED"]}," payment state when payment expires, if the retry process does not succeed."]}]}]},"headings":[{"value":"Payment sub-states","id":"payment-sub-states","depth":1},{"value":"Payment labels vs. sub-states","id":"payment-labels-vs-sub-states","depth":2},{"value":"API operations for payment sub-states","id":"api-operations-for-payment-sub-states","depth":2},{"value":"Finalize payment","id":"finalize-payment","depth":3},{"value":"Add payment sub-state","id":"add-payment-sub-state","depth":3},{"value":"Get payments","id":"get-payments","depth":3},{"value":"Delete payment labels","id":"delete-payment-labels","depth":3},{"value":"List of payment sub-states","id":"list-of-payment-sub-states","depth":2},{"value":"Recommendations for sub-state field values","id":"recommendations-for-sub-state-field-values","depth":2}],"frontmatter":{"seo":{"title":"Payment sub-states"}},"lastModified":"2025-10-03T17:57:05.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/payments-odl/api-docs/ripplenet/best-practices/payment-substates","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}