How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.
The custom_data field in the callback is an array of objects. Each entry matches a field you passed at transaction creation. LigdiCash automatically adds its own entries — always filter by keyof_customdata to extract your own.
external_id is a concatenation of the values of all custom_data fields whose key contains "id". If your custom_data contains only one field with "id" in the name (e.g. transaction_id), external_id will match its value. But if several keys contain "id", their values will be concatenated — which makes it unreliable for identifying the transaction.
Do not rely on external_id as a unique identifier. Always parse custom_data directly with keyof_customdata to extract your transaction_id reliably.
{"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":""},"entitlements":{},"buildId":"6ae93f136adaf11fe54f39b9:success","clientVersion":"0.0.4124","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":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/payment-api/callback/parse-custom-data","slug":"/en/payment-api/callback/parse-custom-data","pageMetadata":{"title":"Parsing custom_data in the callback","description":"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.","href":"/en/payment-api/callback/parse-custom-data"},"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: \"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.\"\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`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`custom_data`}),` field in the callback is an array of objects. Each entry matches a field you passed at transaction creation. LigdiCash automatically adds its own entries — always filter by `,_jsx(_components.code,{children:`keyof_customdata`}),` to extract your own.`]}),`\n`,_jsx(Heading,{level:`2`,id:`structure-of-custom_data`,children:`Structure of custom_data`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"custom_data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"keyof_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"transaction_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"valueof_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ART5A7044E5\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"datecreation_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-09 07:20:23.362788\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"keyof_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"hash\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"valueof_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"f918c54d54cdc334ade09f8c228a224b1d3df646250c84dcdd99af528ddcd450\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"datecreation_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-09 07:20:23.362788\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"keyof_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"logfile\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"valueof_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026050907202369fee03756652\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"datecreation_customdata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-09 07:20:23.362788\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`LigdiCash always adds `,_jsx(_components.code,{children:`hash`}),` and `,_jsx(_components.code,{children:`logfile`}),` to your array. Do not rely on the index or the order of entries — always filter by `,_jsx(_components.code,{children:`keyof_customdata`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`extracting-your-transaction_id`,children:`Extracting your transaction_id`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getCustomValue`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`customData`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` entry`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` customData`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`find`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`e`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` =>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` e`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`keyof_customdata`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` entry`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` entry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`valueof_customdata`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` transactionId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getCustomValue`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`custom_data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'transaction_id'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getCustomValue`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`array`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $customData`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ?`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` foreach`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$customData`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $entry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$entry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'keyof_customdata'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`===`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $entry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'valueof_customdata'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$transactionId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getCustomValue`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'custom_data'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'transaction_id'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`the-external_id-field`,children:`The external_id field`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`external_id`}),` is a concatenation of the values of all `,_jsx(_components.code,{children:`custom_data`}),` fields whose key contains `,_jsx(_components.code,{children:`\"id\"`}),`. If your `,_jsx(_components.code,{children:`custom_data`}),` contains only one field with `,_jsx(_components.code,{children:`\"id\"`}),` in the name (e.g. `,_jsx(_components.code,{children:`transaction_id`}),`), `,_jsx(_components.code,{children:`external_id`}),` will match its value. But if several keys contain `,_jsx(_components.code,{children:`\"id\"`}),`, their values will be concatenated — which makes it unreliable for identifying the transaction.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not rely on `,_jsx(_components.code,{children:`external_id`}),` as a unique identifier. Always parse `,_jsx(_components.code,{children:`custom_data`}),` directly with `,_jsx(_components.code,{children:`keyof_customdata`}),` to extract your `,_jsx(_components.code,{children:`transaction_id`}),` reliably.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`related-pages`,children:`Related pages`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/en/payment-api/callback/payin-payload`,children:`Payin payload`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/en/payment-api/callback/security`,children:`Securing the callback`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/en/concepts/transaction-id-pattern`,children:`The transaction_id pattern`})}),`\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":"Parsing custom_data in the callback","description":"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.","href":"/en/payment-api/callback/parse-custom-data"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Structure of custom_data","slug":"structure-of-custom_data","depth":2,"children":[]},{"title":"Extracting your transaction_id","slug":"extracting-your-transaction_id","depth":2,"children":[]},{"title":"The external_id field","slug":"the-external_id-field","depth":2,"children":[]},{"title":"Related pages","slug":"related-pages","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ligdicash","siteName":"LigdiCash","title":"Parsing custom_data in the callback - LigdiCash","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"fr":{"href":"/essentials/introduction","matchLevel":4},"en":{"href":"/en/payment-api/callback/parse-custom-data","matchLevel":0}}},"lastModified":"2026-05-12T15:46:16.148Z","originalFileLocation":"en/payment-api/callback/parse-custom-data.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=\"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.\">\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=\"Parsing custom_data in the callback - LigdiCash\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LigdiCash Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ligdicash.mintlify.site/_mintlify/api/og/v2?division=Callback+%28webhook%29\u0026amp;title=Parsing+custom_data+in+the+callback\u0026amp;description=How+to+extract+your+transaction_id+from+custom_data%2C+and+why+external_id+is+the+recommended+shortcut.\u0026amp;theme=c1cc823165e528d39b58bf8f\u0026amp;signature=118fd34f9fa80dea70dbc8bc88dfc889462a29ccb3ceca5526c6ec31aeae27eb\">\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=\"Parsing custom_data in the callback - LigdiCash\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ligdicash.mintlify.site/_mintlify/api/og/v2?division=Callback+%28webhook%29\u0026amp;title=Parsing+custom_data+in+the+callback\u0026amp;description=How+to+extract+your+transaction_id+from+custom_data%2C+and+why+external_id+is+the+recommended+shortcut.\u0026amp;theme=c1cc823165e528d39b58bf8f\u0026amp;signature=118fd34f9fa80dea70dbc8bc88dfc889462a29ccb3ceca5526c6ec31aeae27eb\">\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/payment-api/callback/parse-custom-data\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/payment-api/callback/parse-custom-data.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/payment-api/callback/parse-custom-data#webpage\",\"url\":\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data\",\"name\":\"Parsing custom_data in the callback\",\"description\":\"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.\",\"dateModified\":\"2026-05-12T15:46:16.148Z\",\"isPartOf\":{\"@id\":\"https://developers.ligdicash.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Payment API\",\"item\":\"https://developers.ligdicash.com/en/payment-api/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Callback (webhook)\",\"item\":\"https://developers.ligdicash.com/en/payment-api/callback/introduction\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Parsing custom_data in the callback\",\"item\":\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data#article\",\"headline\":\"Parsing custom_data in the callback\",\"name\":\"Parsing custom_data in the callback\",\"description\":\"How to extract your transaction_id from custom_data, and why external_id is the recommended shortcut.\",\"url\":\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data\",\"mainEntityOfPage\":{\"@id\":\"https://developers.ligdicash.com/en/payment-api/callback/parse-custom-data#webpage\"},\"dateModified\":\"2026-05-12T15:46:16.148Z\",\"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\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"LigdiCash\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/en/payment-api/callback/parse-custom-data.md","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","href":"/en/getting-started/integration-protocol"}]},{"group":"Core concepts","pages":[{"title":"Transaction lifecycle","href":"/en/concepts/transaction-lifecycle"},{"title":"Authentication","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","description":"Why you should never trust the received payload, and how to re-verify each callback with the token stored at creation.","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","description":"LigdiCash sends two POST requests per event. How to ensure your processing runs only once.","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"}]}]}]},"basePath":"","title":"Parsing custom_data in the callback - LigdiCash","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":[],"chunks":[]}