{"componentChunkName":"component---src-templates-simple-markdown-js","path":"/introduction/concepts/payment-lifecycle/","matchPath":"","result":{"data":{"markdownRemark":{"html":"<h1 style=\"position:relative;\"><a href=\"#payment-lifecycle-and-payment-states\" aria-label=\"payment lifecycle and payment states permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"payment-lifecycle-and-payment-states\"></div>Payment lifecycle and payment states</h1>\n<p>This page outlines the lifecycle of a payment in Ripple Payments Direct, provides more details about each payment state, and explains how to find the current state of a payment.</p>\n<p>A payment moves through the following states in Ripple Payments Direct:</p>\n<ol>\n<li>\n<strong>Initiated</strong>\n: The payment process begins when you submit a payment request by accepting the quote for the payment.\n<!-- {{process.env.VAR_RPD}} verifies the validity of the originator and beneficiary identity information you provided and checks if the request contains all required details.-->\n \nRipple Payments Direct\n  creates a payment in the \n<code class=\"language-text\">INITIATED</code>\n state.\n</li>\n<li>\n<strong>Validating</strong>\n: The payment state changes to \n<code class=\"language-text\">VALIDATING</code>\n while Ripple performs certain checks. \n<!--, such as verifying that your available balance is sufficient to complete the payment transaction. -->\n<br>\n\n\nIf any of the checks fail, the payment reaches the terminal \n<code class=\"language-text\">FAILED</code>\n state.\n<!--\n1. If your available balance is sufficient to fund the requested payment, the amount required to complete the payment is earmarked or \"reserved\" from your available balance. This amount is reserved to ensure that any subsequent payment requests don't impact the availability of funds to complete the in-progress payment.\n\n2. If your available balance is insufficient or any of the additional checks fail, the payment reaches the terminal `FAILED` state. -->\n</li>\n<li>\n<strong>Transferring</strong>\n: As the payment moves through the network to reach the beneficiary, the payment's state changes to \n<code class=\"language-text\">TRANSFERRING</code>\n while Ripple performs additional checks. \n<br>\n If any of the additional checks fail, the payment reaches the terminal \n<code class=\"language-text\">FAILED</code>\n state.\n</li>\n<li>\n<strong>Completed</strong>\n: If the payment didn't fail during one of the previous state transitions, the payment succeeds and transitions to the terminal \n<code class=\"language-text\">COMPLETED</code>\n state.\n</li>\n</ol>\n<p>See the diagram below for a visual representation of how a payment moves through various states.</p>\n<p>The <a href=\"#payment-states\">Payment states</a> section on this page provides more information about each state a payment moves through. For information about payment failures in particular, see <a href=\"understanding-payment-failures.md\">Understanding and handling payment failures</a>.<br /></p>\n<p><img src=\"/payments-direct-2/32f909b7ddbe4bfb811f4890f948b9d6/payment-states-rpd2.png\" alt=\"Payment states\"></p>\n<h2 style=\"position:relative;\"><a href=\"#payment-states\" aria-label=\"payment states permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"payment-states\"></div>Payment states</h2>\n<p>The <code class=\"language-text\">PaymentState</code> field of the payment object indicates the current state of a payment. A payment can only be in one state at any given time, so each subsequent state overrides previous states. This section lists the supported payment states and provides information on how to find a specific payment's current state and past states.</p>\n<p>Ripple Payments Direct supports the following payment states:</p>\n<table>\n<thead>\n<tr>\n<th align=\"center\"><div style=\"width:180px\">State</div></th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"center\"><code class=\"language-text\">QUOTED</code></td>\n<td align=\"left\">A quote has been created, but you haven't accepted it yet to initiate a payment. <br/><br/> <strong>Note:</strong> This state is not shown as part of the payment detail as the payment doesn't exist yet. If you use the <a href=\"/payments-direct-2/api-docs/payments-direct-api/reference/#operation/getPaymentStateTransitionsById\">Get state transitions by payment ID</a> API call to get state transition information, the <code class=\"language-text\">QUOTED</code> state appears as the first payment state.</td>\n</tr>\n<tr>\n<td align=\"center\"><code class=\"language-text\">INITIATED</code></td>\n<td align=\"left\">You, the payment originator, have initiated a payment. The payment now has a unique <code class=\"language-text\">paymentId</code> that's the same as the <code class=\"language-text\">quoteId</code> of the quote you accepted.</td>\n</tr>\n<tr>\n<td align=\"center\"><code class=\"language-text\">VALIDATING</code></td>\n<td align=\"left\">Ripple validates the payment details and reserves funds from your available balance to complete the payment.</td>\n</tr>\n<tr>\n<td align=\"center\"><code class=\"language-text\">TRANSFERRING</code></td>\n<td align=\"left\">The payment is moving through the network to the ultimate beneficiary. The payment amount is debited from your available balance.</td>\n</tr>\n<tr>\n<td align=\"center\"><code class=\"language-text\">COMPLETED</code></td>\n<td align=\"left\">The payment is complete and the beneficiary has received the funds.</td>\n</tr>\n<tr>\n<td align=\"center\"><code class=\"language-text\">FAILED</code></td>\n<td align=\"left\">The payment failed. The failure reason, if available, is listed in the response. Funds that were previously reserved to complete the payment are released and added back to the available balance.</td>\n</tr>\n</tbody>\n</table>\n<h3 style=\"position:relative;\"><a href=\"#how-to-check-the-payment-state\" aria-label=\"how to check the payment state permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"how-to-check-the-payment-state\"></div>How to check the payment state</h3>\n<p>You can check a payment's current state and its state transition history in the Ripple Payments UI or by using the Ripple Payments Direct 2.0 API.</p>\n<h4 style=\"position:relative;\"><a href=\"#check-the-payment-state-in-the-ripple-payments-ui\" aria-label=\"check the payment state in the ripple payments ui permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"check-the-payment-state-in-the-ripple-payments-ui\"></div>Check the payment state in the Ripple Payments UI</h4>\n<p>The <a href=\"/payments-direct-2/user-interface/payments/payment-details/\">Payment details page</a> in the Ripple Payments UI provides information about a payment's state transitions and its current state.</p>\n<p>The Payment Details tab shows the payment's transition through various states starting with the <code class=\"language-text\">INITIATED</code> state. The timestamp associated with each state specifies when the payment reached that state.</p>\n<p>In the Payment Object JSON tab, the <code class=\"language-text\">paymentState</code> field shows the <em>current</em> state of the payment.</p>\n<h3 style=\"position:relative;\"><a href=\"#check-the-payment-state-using-the-ripple-payments-direct-api\" aria-label=\"check the payment state using the ripple payments direct api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"check-the-payment-state-using-the-ripple-payments-direct-api\"></div>Check the payment state using the Ripple Payments Direct API</h3>\n<p>To check the current state of a specific payment, call the <a href=\"/payments-direct-2/api-docs/payments-direct-api/reference/#operation/getPaymentById\">Get a payment by ID</a> operation with the payment's unique <code class=\"language-text\">paymentId</code> in the request URL. The response body includes the <code class=\"language-text\">paymentState</code> field whose value indicates the payment's current state.</p>\n<p>To check a payment's state transition history, call the <a href=\"/payments-direct-2/api-docs/payments-direct-api/reference/#operation/getPaymentStateTransitionsById\">GET state transitions by payment ID</a> operation with the unique <code class=\"language-text\">paymentId</code> in the request URL. The response contains an array of objects that show the payment's transition between states and the time at which the state transition happened.</p>","headings":[{"value":"Payment lifecycle and payment states","depth":1},{"value":"Payment states","depth":2},{"value":"How to check the payment state","depth":3},{"value":"Check the payment state in the Ripple Payments UI","depth":4},{"value":"Check the payment state using the Ripple Payments Direct API","depth":3}]},"contentItem":{"data":{"lastModified":"2025-11-13T00:24:58.000Z","enableToc":null,"disableLastModified":null,"tocMaxDepth":null,"requestLogin":false}},"siteConfig":{"enableToc":false,"disableLastModified":true,"tocMaxDepth":4}},"pageContext":{"matchPath":"","id":"8b134f11-967c-536c-95f7-c7fa84252027__redocly content/introduction/concepts/payment-lifecycle/","seo":{"title":"Payment lifecycle and payment states","description":null,"image":"","keywords":null,"jsonLd":null,"lang":null,"siteUrl":null},"pageId":"introduction/concepts/payment-lifecycle.md","pageBaseUrl":"/introduction/concepts/payment-lifecycle","type":"markdown","toc":{"enable":true,"maxDepth":4,"headings":[{"depth":1,"value":"Payment lifecycle and payment states","id":"payment-lifecycle-and-payment-states"},{"depth":2,"value":"Payment states","id":"payment-states"},{"depth":3,"value":"How to check the payment state","id":"how-to-check-the-payment-state"},{"depth":4,"value":"Check the payment state in the Ripple Payments UI","id":"check-the-payment-state-in-the-ripple-payments-ui"},{"depth":3,"value":"Check the payment state using the Ripple Payments Direct API","id":"check-the-payment-state-using-the-ripple-payments-direct-api"}]},"data":{"title":""},"catalogInfo":null,"link":"/introduction/concepts/payment-lifecycle/","sidebarName":"__root-sidebar__-data-69308394-sidebars.yaml","isLanding":false,"showPrevButton":null,"showNextButton":null,"apiVersions":null,"apiVersionId":null,"isDefaultApiVersion":null}},"staticQueryHashes":["1123603147","1302185487","1344209882","1398840060","1520077861","1975142765","2667623876","2950305614","3240152602","3743992808","561138138"]}