The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.
A LigdiCash transaction does not go directly from “created” to “paid”. It moves through states that your system must know how to interpret. The behavior differs from what is usually found in other payment gateways — it is important to understand it well before designing your integration.
pending is the default state of every transaction at creation. It is also the state in which most transactions remain the longest — and sometimes indefinitely.Several failed payment attempts on the same transaction do not move it to notcompleted. A customer can enter an incorrect OTP multiple times: the transaction stays pending.There is no expiration delay on the LigdiCash side. A transaction can stay in pending for days after creation, for a simple reason: a customer may file a dispute with their mobile money operator, and the operator may validate or cancel the transaction several days later. LigdiCash waits for the definitive outcome before updating the status.
Never assume that a pending transaction is lost or expired. Do not recreate it automatically after a delay. Wait for the callback or query confirm before making a decision.
Once a transaction reaches completed or notcompleted, its status will not change again. notcompleted is rare — it indicates that a definitive negative outcome has been confirmed (operator cancellation, definitive rejection).
Two mechanisms let you track a transaction’s status:The callback — LigdiCash sends a notification to your callback_url when the status changes. This is the primary mechanism.The confirm endpoint — you can query LigdiCash at any time with the token stored at creation to get the current status.
Never update an order’s status based on the callback payload alone. Always call confirm with the token stored at creation to validate. Anyone who knows your callback URL could send a forged payload.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"LigdiCash","description":"Documentation officielle de LigdiCash — agrégateur de paiement mobile money en Afrique de l'Ouest","colors":{"primary":"#00754B","light":"#00A86B","dark":"#005235"},"logo":{"light":"https://mintcdn.com/ligdicash/6Mlx7qXwPaCOwibS/logo/logo.png?fit=max\u0026auto=format\u0026n=6Mlx7qXwPaCOwibS\u0026q=85\u0026s=f2b2f57228d547b652695a29b8347018","dark":"https://mintcdn.com/ligdicash/6Mlx7qXwPaCOwibS/logo/logo.png?fit=max\u0026auto=format\u0026n=6Mlx7qXwPaCOwibS\u0026q=85\u0026s=f2b2f57228d547b652695a29b8347018"},"favicon":"https://mintcdn.com/ligdicash/6Mlx7qXwPaCOwibS/favicon.ico?fit=max\u0026auto=format\u0026n=6Mlx7qXwPaCOwibS\u0026q=85\u0026s=f431868bb413fb6d7b4aa031d27e6840","navbar":{"links":[{"href":"mailto:support@ligdicash.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://client.ligdicash.com"}},"footer":{"socials":{"website":"https://ligdicash.com"},"links":[{"header":"Produits","items":[{"label":"API de paiement","href":"/api-paiement/vue-ensemble"},{"label":"Paylinks","href":"/autres-produits/paylinks"},{"label":"SMS","href":"/autres-produits/sms"}]},{"header":"Ressources","items":[{"label":"FAQ","href":"/ressources/faq"},{"label":"Glossaire","href":"/ressources/glossaire"},{"label":"Support","href":"/ressources/support"}]}]},"search":{"prompt":"Rechercher dans la documentation..."},"seo":{"metatags":{"og:site_name":"LigdiCash Documentation","og:type":"website"},"indexing":"navigable"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Site web LigdiCash","icon":"globe","href":"https://ligdicash.com"},{"anchor":"Dashboard","icon":"gauge","href":"https://client.ligdicash.com"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@ligdicash.com"}]},"languages":[{"language":"fr","href":"essentials/introduction"},{"language":"en","href":"en/getting-started/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ligdicash","hasAudioNarration":false,"actualSubdomain":"ligdicash","customDomains":["developers.ligdicash.com"],"gitSource":{"type":"github","owner":"ligdicash","repo":"ligdicash-mintlify-doc","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a341c465ceac4f19f28972b","collectionId":"6721b109-d524-48ec-a78d-e7e46d52a3f9","schemaVersion":"v2"},"entitlements":{},"buildId":"6a341c465ceac4f19f28972b:success","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"fr","tag":"Documentation","count":90},{"language":"en","tag":"Documentation","count":90},{"language":"fr","tag":"API de paiement","count":54},{"language":"en","tag":"Payment API","count":54},{"language":"fr","tag":"Payin sans redirection","count":27},{"language":"en","tag":"Direct payin","count":27},{"language":"fr","tag":"Intégration par opérateur","count":23},{"language":"en","tag":"Integration by operator","count":23},{"language":"fr","tag":"Référence API","count":10},{"language":"en","tag":"API Reference","count":10},{"language":"fr","tag":"Concepts fondamentaux","count":9},{"language":"en","tag":"Core concepts","count":9},{"language":"fr","tag":"Le callback (webhook)","count":8},{"language":"en","tag":"Callback (webhook)","count":8},{"language":"fr","tag":"SDK \u0026 Plugins","count":7},{"language":"en","tag":"SDKs \u0026 Plugins","count":7},{"language":"fr","tag":"Payin avec redirection","count":6},{"language":"en","tag":"Hosted payin","count":6},{"language":"fr","tag":"Payout","count":5},{"language":"en","tag":"Payout","count":5}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/concepts/transaction-lifecycle","slug":"/en/concepts/transaction-lifecycle","pageMetadata":{"title":"Transaction lifecycle","description":"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.","href":"/en/concepts/transaction-lifecycle"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Mermaid,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`A LigdiCash transaction does not go directly from “created” to “paid”. It moves through states that your system must know how to interpret. The behavior differs from what is usually found in other payment gateways — it is important to understand it well before designing your integration.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-three-statuses`,children:`The three statuses`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pending`})}),_jsx(_components.td,{children:`Transaction created, awaiting a definitive outcome`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`completed`})}),_jsx(_components.td,{children:`Payment confirmed successfully — final state`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`notcompleted`})}),_jsx(_components.td,{children:`Payment failed or cancelled — final state`})]})]})]}),`\n`,_jsxs(Heading,{level:`2`,id:`what-pending-really-means`,children:[`What `,_jsx(_components.code,{children:`pending`}),` really means`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`pending`}),` is the default state of every transaction at creation. It is also the state in which most transactions `,_jsx(_components.strong,{children:`remain the longest`}),` — and sometimes indefinitely.`]}),`\n`,_jsxs(_components.p,{children:[`Several failed payment attempts on the same transaction do not move it to `,_jsx(_components.code,{children:`notcompleted`}),`. A customer can enter an incorrect OTP multiple times: the transaction stays `,_jsx(_components.code,{children:`pending`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`There is no expiration delay on the LigdiCash side. A transaction can stay in `,_jsx(_components.code,{children:`pending`}),` for days after creation, for a simple reason: a customer may file a dispute with their mobile money operator, and the operator may validate or cancel the transaction several days later. LigdiCash waits for the definitive outcome before updating the status.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Never assume that a `,_jsx(_components.code,{children:`pending`}),` transaction is lost or expired. Do not recreate it automatically after a delay. Wait for the callback or query `,_jsx(_components.code,{children:`confirm`}),` before making a decision.`]})}),`\n`,_jsxs(Heading,{level:`2`,id:`completed-and-notcompleted-are-final-states`,children:[_jsx(_components.code,{children:`completed`}),` and `,_jsx(_components.code,{children:`notcompleted`}),` are final states`]}),`\n`,_jsxs(_components.p,{children:[`Once a transaction reaches `,_jsx(_components.code,{children:`completed`}),` or `,_jsx(_components.code,{children:`notcompleted`}),`, its status will not change again. `,_jsx(_components.code,{children:`notcompleted`}),` is rare — it indicates that a definitive negative outcome has been confirmed (operator cancellation, definitive rejection).`]}),`\n`,_jsx(Mermaid,{chart:`stateDiagram-v2\n [*] --> pending : Transaction created\n pending --> pending : Failed attempts, disputes in progress\n pending --> completed : Payment confirmed (final state)\n pending --> notcompleted : Cancellation confirmed (final state, rare)`}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-know-the-status`,children:`How to know the status`}),`\n`,_jsx(_components.p,{children:`Two mechanisms let you track a transaction’s status:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`The callback`}),` — LigdiCash sends a notification to your `,_jsx(_components.code,{children:`callback_url`}),` when the status changes. This is the primary mechanism.`]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`The `,_jsx(_components.code,{children:`confirm`}),` endpoint`]}),` — you can query LigdiCash at any time with the `,_jsx(_components.code,{children:`token`}),` stored at creation to get the current status.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Never update an order’s status based on the callback payload alone. Always call `,_jsx(_components.code,{children:`confirm`}),` with the `,_jsx(_components.code,{children:`token`}),` stored at creation to validate. Anyone who knows your callback URL could send a forged payload.`]})}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/en/payment-api/callback/security`,children:`Securing the callback`}),` for the full re-verification pattern.`]}),`\n`,_jsx(Heading,{level:`2`,id:`related-pages`,children:`Related pages`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/payment-api/callback/security`,children:`Securing the callback`}),` — re-verification pattern with `,_jsx(_components.code,{children:`confirm`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/payment-api/status-verification/polling-vs-callback`,children:`Polling vs callback`}),` — when to use one or the other`]}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/en/concepts/response-codes-and-statuses`,children:`Response codes and statuses`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Transaction lifecycle","description":"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.","href":"/en/concepts/transaction-lifecycle"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The three statuses","slug":"the-three-statuses","depth":2,"children":[]},{"title":"What pending really means","slug":"what-pending-really-means","depth":2,"children":[]},{"title":"completed and notcompleted are final states","slug":"completed-and-notcompleted-are-final-states","depth":2,"children":[]},{"title":"How to know the status","slug":"how-to-know-the-status","depth":2,"children":[]},{"title":"Related pages","slug":"related-pages","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ligdicash","siteName":"LigdiCash","title":"Transaction lifecycle - LigdiCash","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"fr":{"href":"/essentials/introduction","matchLevel":4},"en":{"href":"/en/concepts/transaction-lifecycle","matchLevel":0}}},"lastModified":"2026-05-12T15:46:11.304Z","originalFileLocation":"en/concepts/transaction-lifecycle.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.\">\u003cmeta data-mint-head name=\"application-name\" content=\"LigdiCash\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Transaction lifecycle - LigdiCash\">\u003cmeta data-mint-head property=\"og:description\" content=\"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LigdiCash Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ligdicash.mintlify.app/_mintlify/api/og/v2?division=Core+concepts\u0026amp;title=Transaction+lifecycle\u0026amp;description=The+three+statuses+of+a+LigdiCash+transaction+%E2%80%94+pending%2C+completed%2C+notcompleted+%E2%80%94+and+why+a+transaction+can+remain+pending+indefinitely.\u0026amp;theme=0033b31e569934758f1783d9\u0026amp;signature=bbd44f251f25d88cd5c52f241de865ab377ce67c368a408f153ac3fe7c14ac27\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Transaction lifecycle - LigdiCash\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ligdicash.mintlify.app/_mintlify/api/og/v2?division=Core+concepts\u0026amp;title=Transaction+lifecycle\u0026amp;description=The+three+statuses+of+a+LigdiCash+transaction+%E2%80%94+pending%2C+completed%2C+notcompleted+%E2%80%94+and+why+a+transaction+can+remain+pending+indefinitely.\u0026amp;theme=0033b31e569934758f1783d9\u0026amp;signature=bbd44f251f25d88cd5c52f241de865ab377ce67c368a408f153ac3fe7c14ac27\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ligdicash/-GyaSerpEOEfay6N/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"LigdiCash\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00754B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/concepts/transaction-lifecycle.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.ligdicash.com/#organization\",\"name\":\"LigdiCash\",\"url\":\"https://developers.ligdicash.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ligdicash/6Mlx7qXwPaCOwibS/logo/logo.png?fit=max\u0026auto=format\u0026n=6Mlx7qXwPaCOwibS\u0026q=85\u0026s=f2b2f57228d547b652695a29b8347018\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.ligdicash.com#website\",\"name\":\"LigdiCash\",\"url\":\"https://developers.ligdicash.com\",\"publisher\":{\"@id\":\"https://developers.ligdicash.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle#webpage\",\"url\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle\",\"name\":\"Transaction lifecycle\",\"description\":\"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.\",\"dateModified\":\"2026-05-12T15:46:11.304Z\",\"isPartOf\":{\"@id\":\"https://developers.ligdicash.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"LigdiCash\",\"item\":\"https://developers.ligdicash.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Transaction lifecycle\",\"item\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle#article\",\"headline\":\"Transaction lifecycle\",\"name\":\"Transaction lifecycle\",\"description\":\"The three statuses of a LigdiCash transaction — pending, completed, notcompleted — and why a transaction can remain pending indefinitely.\",\"url\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle\",\"mainEntityOfPage\":{\"@id\":\"https://developers.ligdicash.com/en/concepts/transaction-lifecycle#webpage\"},\"dateModified\":\"2026-05-12T15:46:11.304Z\",\"publisher\":{\"@id\":\"https://developers.ligdicash.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.ligdicash.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"LigdiCash\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"LigdiCash","nav":{"global":{"anchors":[{"anchor":"Site web LigdiCash","icon":"globe","href":"https://ligdicash.com"},{"anchor":"Dashboard","icon":"gauge","href":"https://client.ligdicash.com"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@ligdicash.com"}]},"languages":[{"language":"fr","pages":[{"title":"fr","href":"/essentials/introduction"}]},{"language":"en","tabs":[{"tab":"Documentation","groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/en/getting-started/introduction"},{"title":"Quickstart — Your first payment in 5 minutes","href":"/en/getting-started/quickstart"},{"title":"Integration protocol","description":"The complete journey to become a LigdiCash partner: administrative steps, training, technical integration, and go-live.","href":"/en/getting-started/integration-protocol"}]},{"group":"Core concepts","pages":[{"title":"Transaction lifecycle","href":"/en/concepts/transaction-lifecycle"},{"title":"Authentication","description":"How to authenticate your requests to the LigdiCash API with the Apikey and Authorization headers.","href":"/en/concepts/authentication"},{"title":"The LigdiCash merchant account","href":"/en/concepts/merchant-account"},{"title":"Tokens and identifiers","href":"/en/concepts/tokens-and-identifiers"},{"title":"The transaction_id pattern: the golden rule","href":"/en/concepts/transaction-id-pattern"},{"title":"Response codes and statuses","href":"/en/concepts/response-codes-and-statuses"},{"title":"Integration environments","href":"/en/concepts/environments"},{"title":"Currencies and amounts","href":"/en/concepts/currencies-and-amounts"},{"title":"API project","href":"/en/concepts/api-project"}]},{"group":"Payment API","pages":[{"title":"Payment API overview","href":"/en/payment-api/overview"},{"group":"Hosted payin","pages":[{"title":"Hosted payin","href":"/en/payment-api/hosted-payin/introduction"},{"title":"Create an invoice","href":"/en/payment-api/hosted-payin/create-invoice"},{"title":"Redirect the customer to the payment page","href":"/en/payment-api/hosted-payin/redirect-customer"},{"title":"Verify a transaction's status","href":"/en/payment-api/hosted-payin/verify-status"},{"title":"Native mobile integration","href":"/en/payment-api/hosted-payin/mobile-integration"},{"title":"Common pitfalls — hosted payin","href":"/en/payment-api/hosted-payin/common-pitfalls"}]},{"group":"Direct payin","pages":[{"title":"Direct payin","href":"/en/payment-api/direct-payin/introduction"},{"title":"Validation modes","href":"/en/payment-api/direct-payin/validation-modes"},{"title":"Create a transaction","href":"/en/payment-api/direct-payin/create-transaction"},{"title":"Verify the status","href":"/en/payment-api/direct-payin/verify-status"},{"group":"Integration by operator","pages":[{"title":"LigdiCash Wallet","href":"/en/payment-api/direct-payin/operators/ligdicash-wallet"},{"title":"Moov Africa — Benin","href":"/en/payment-api/direct-payin/operators/moov-benin"},{"title":"MTN Mobile Money — Benin","href":"/en/payment-api/direct-payin/operators/mtn-benin"},{"title":"Orange Money — Burkina Faso","href":"/en/payment-api/direct-payin/operators/orange-burkina"},{"title":"Moov Africa — Burkina Faso","href":"/en/payment-api/direct-payin/operators/moov-burkina"},{"title":"Orange Money — Côte d'Ivoire","href":"/en/payment-api/direct-payin/operators/orange-cote-divoire"},{"title":"Moov Africa — Côte d'Ivoire","href":"/en/payment-api/direct-payin/operators/moov-cote-divoire"},{"title":"MTN Mobile Money — Côte d'Ivoire","href":"/en/payment-api/direct-payin/operators/mtn-cote-divoire"},{"title":"Orange Money — Guinea (Conakry)","href":"/en/payment-api/direct-payin/operators/orange-guinea"},{"title":"MTN Mobile Money — Guinea (Conakry)","href":"/en/payment-api/direct-payin/operators/mtn-guinea"},{"title":"Orange Money — Mali","href":"/en/payment-api/direct-payin/operators/orange-mali"},{"title":"Airtel — Niger","href":"/en/payment-api/direct-payin/operators/airtel-niger"},{"title":"Zamani — Niger","href":"/en/payment-api/direct-payin/operators/zamani-niger"},{"title":"Moov Africa — Niger","href":"/en/payment-api/direct-payin/operators/moov-niger"},{"title":"Orange Money — DRC","href":"/en/payment-api/direct-payin/operators/orange-drc"},{"title":"Vodacom — DRC","href":"/en/payment-api/direct-payin/operators/vodacom-drc"},{"title":"Airtel — DRC","href":"/en/payment-api/direct-payin/operators/airtel-drc"},{"title":"Africell — DRC","href":"/en/payment-api/direct-payin/operators/africell-drc"},{"title":"Orange Money — Senegal","href":"/en/payment-api/direct-payin/operators/orange-senegal"},{"title":"Wave — Senegal","href":"/en/payment-api/direct-payin/operators/wave-senegal"},{"title":"Free — Senegal","href":"/en/payment-api/direct-payin/operators/free-senegal"},{"title":"Moov Africa — Togo","href":"/en/payment-api/direct-payin/operators/moov-togo"},{"title":"YAS — Togo","href":"/en/payment-api/direct-payin/operators/yas-togo"}]}]},{"group":"Payout","pages":[{"title":"Payout — Introduction","href":"/en/payment-api/payout/introduction"},{"title":"Customer payout — to LigdiCash wallet","href":"/en/payment-api/payout/to-ligdicash-wallet"},{"title":"Merchant payout — to mobile money","href":"/en/payment-api/payout/to-mobile-money"},{"title":"Verify the status of a payout","href":"/en/payment-api/payout/verify-status"},{"title":"Payout use cases","href":"/en/payment-api/payout/use-cases"}]},{"group":"Callback (webhook)","pages":[{"title":"The callback (webhook) — Introduction","href":"/en/payment-api/callback/introduction"},{"title":"Configuring the callback URL","href":"/en/payment-api/callback/configuration"},{"title":"Payload anatomy — Payin","href":"/en/payment-api/callback/payin-payload"},{"title":"Payload anatomy — Payout","href":"/en/payment-api/callback/payout-payload"},{"title":"Securing the callback","href":"/en/payment-api/callback/security"},{"title":"Parsing custom_data in the callback","href":"/en/payment-api/callback/parse-custom-data"},{"title":"Idempotency and deduplication","href":"/en/payment-api/callback/idempotency"},{"title":"Framework examples","href":"/en/payment-api/callback/framework-examples"}]},{"group":"Visa cards","pages":[{"title":"Visa cards — Introduction","href":"/en/payment-api/visa-cards/introduction"},{"title":"Activate Visa on your project","href":"/en/payment-api/visa-cards/activation"},{"title":"Visa payment flow","href":"/en/payment-api/visa-cards/payment-flow"},{"title":"3D Secure","href":"/en/payment-api/visa-cards/3d-secure"}]},{"group":"Status verification","pages":[{"title":"Status verification — Overview","href":"/en/payment-api/status-verification/introduction"},{"title":"Polling vs callback","href":"/en/payment-api/status-verification/polling-vs-callback"},{"title":"Verification recommendations","href":"/en/payment-api/status-verification/recommendations"}]}]},{"group":"Guides","pages":[{"title":"E-commerce guide: cart → payment → delivery","href":"/en/guides/ecommerce-quickstart"},{"title":"Mobile guide: React Native and Flutter","href":"/en/guides/mobile-quickstart"},{"title":"Recommended architecture","href":"/en/guides/recommended-architecture"},{"title":"Production checklist","href":"/en/guides/production-checklist"}]},{"group":"Error handling","pages":[{"title":"Error handling — Overview","href":"/en/errors/overview"},{"title":"The wiki field","href":"/en/errors/wiki-field"},{"title":"Sub-codes reference by endpoint","href":"/en/errors/sub-codes"},{"title":"Common errors and solutions","href":"/en/errors/common-errors"}]},{"group":"SDKs \u0026 Plugins","pages":[{"title":"Official SDKs","href":"/en/sdk/overview"},{"title":"PHP SDK","href":"/en/sdk/php"},{"title":"Python SDK","href":"/en/sdk/python"},{"title":"JavaScript / TypeScript SDK","href":"/en/sdk/javascript"},{"title":"Dart / Flutter SDK","href":"/en/sdk/dart-flutter"},{"title":"WordPress / WooCommerce plugin","href":"/en/sdk/wordpress-woocommerce"},{"title":"LigdiCash skill for AI agents","icon":"brain-circuit","href":"/en/sdk/ai-skill"}]},{"group":"Other products","pages":[{"title":"PayLinks","href":"/en/other-products/paylinks"},{"title":"LigdiCash SMS","href":"/en/other-products/sms"}]},{"group":"AI tools","pages":[{"title":"Claude Code","icon":"asterisk","href":"/en/ai-tools/claude-code"},{"title":"Cursor","icon":"arrow-pointer","href":"/en/ai-tools/cursor"},{"title":"Windsurf","icon":"water","href":"/en/ai-tools/windsurf"}]},{"group":"Resources","pages":[{"title":"Changelog","href":"/en/resources/changelog"},{"title":"FAQ","href":"/en/resources/faq"},{"title":"Glossary","href":"/en/resources/glossary"},{"title":"Support","href":"/en/resources/support"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/en/reference/introduction"}]}]}]},"title":"Transaction lifecycle - LigdiCash","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":[],"chunks":[]}