[{"data":1,"prerenderedAt":2864},["ShallowReactive",2],{"navigation":3,"external-navigation":214,"external_core:\u002Fcore\u002Fprocessors\u002Fcadooz":443},[4,8,201],{"title":5,"path":6,"stem":7},"Documentation","\u002F","README",{"title":9,"path":10,"stem":11,"children":12},"EOS","\u002Feos","eos\u002FREADME",[13,44,121,181],{"title":14,"collapsed":15,"path":16,"stem":17,"children":18,"page":43},"Adrs",true,"\u002Feos\u002Fadrs","eos\u002Fadrs",[19,23,27,31,35,39],{"title":20,"path":21,"stem":22},"Use Turborepo for the EOS monorepo","\u002Feos\u002Fadrs\u002F0001-use-turborepo-for-eos","eos\u002Fadrs\u002F0001-use-turborepo-for-eos",{"title":24,"path":25,"stem":26},"Use Oxc for linting and formatting","\u002Feos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting","eos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting",{"title":28,"path":29,"stem":30},"Lint Markdown and validate links in CI","\u002Feos\u002Fadrs\u002F0004-lint-markdown-in-ci","eos\u002Fadrs\u002F0004-lint-markdown-in-ci",{"title":32,"path":33,"stem":34},"Use Lefthook for repository-managed Git hooks","\u002Feos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks","eos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks",{"title":36,"path":37,"stem":38},"Use Commitlint's conventional configuration","\u002Feos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration","eos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration",{"title":40,"path":41,"stem":42},"Use Nx for EOS task execution","\u002Feos\u002Fadrs\u002F0007-use-nx-for-eos","eos\u002Fadrs\u002F0007-use-nx-for-eos",false,{"title":45,"path":46,"stem":47,"children":48},"Harbourmaster","\u002Feos\u002Fharbourmaster","eos\u002Fharbourmaster\u002FREADME",[49,58,71,96],{"title":50,"path":51,"stem":52,"children":53,"page":43},"Decisions","\u002Feos\u002Fharbourmaster\u002Fdecisions","eos\u002Fharbourmaster\u002Fdecisions",[54],{"title":55,"path":56,"stem":57},"AI-50: GitHub auth and fork pull request policy","\u002Feos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy","eos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy",{"title":59,"path":60,"stem":61,"children":62,"page":43},"Explanation","\u002Feos\u002Fharbourmaster\u002Fexplanation","eos\u002Fharbourmaster\u002Fexplanation",[63,67],{"title":64,"path":65,"stem":66},"The Harbourmaster review pipeline","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline","eos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline",{"title":68,"path":69,"stem":70},"The Harbourmaster shared-action trust boundary","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary","eos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary",{"title":72,"path":73,"stem":74,"children":75,"page":43},"How To","\u002Feos\u002Fharbourmaster\u002Fhow-to","eos\u002Fharbourmaster\u002Fhow-to",[76,80,84,88,92],{"title":77,"path":78,"stem":79},"How to add Harbourmaster reviews to a repository","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository","eos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository",{"title":81,"path":82,"stem":83},"How to build a pilot dashboard","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard","eos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard",{"title":85,"path":86,"stem":87},"How to configure model routing","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing","eos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing",{"title":89,"path":90,"stem":91},"How to request a Harbourmaster review","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review",{"title":93,"path":94,"stem":95},"How to diagnose a Harbourmaster review failure","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review",{"title":97,"path":98,"stem":99,"children":100,"page":43},"Reference","\u002Feos\u002Fharbourmaster\u002Freference","eos\u002Fharbourmaster\u002Freference",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Harbourmaster command-line interface","\u002Feos\u002Fharbourmaster\u002Freference\u002Fcli","eos\u002Fharbourmaster\u002Freference\u002Fcli",{"title":106,"path":107,"stem":108},"Harbourmaster configuration","\u002Feos\u002Fharbourmaster\u002Freference\u002Fconfiguration","eos\u002Fharbourmaster\u002Freference\u002Fconfiguration",{"title":110,"path":111,"stem":112},"Harbourmaster GitHub Action","\u002Feos\u002Fharbourmaster\u002Freference\u002Fgithub-action","eos\u002Fharbourmaster\u002Freference\u002Fgithub-action",{"title":114,"path":115,"stem":116},"Harbourmaster review behavior","\u002Feos\u002Fharbourmaster\u002Freference\u002Freview-behavior","eos\u002Fharbourmaster\u002Freference\u002Freview-behavior",{"title":118,"path":119,"stem":120},"Harbourmaster telemetry","\u002Feos\u002Fharbourmaster\u002Freference\u002Ftelemetry","eos\u002Fharbourmaster\u002Freference\u002Ftelemetry",{"title":72,"path":122,"stem":123,"children":124,"page":43},"\u002Feos\u002Fhow-to","eos\u002Fhow-to",[125,129,133,137,141,145,149,153,157,161,165,169,173,177],{"title":126,"path":127,"stem":128},"How to add an external documentation source","\u002Feos\u002Fhow-to\u002Fadd-external-documentation-source","eos\u002Fhow-to\u002Fadd-external-documentation-source",{"title":130,"path":131,"stem":132},"How to connect SDLC integrations","\u002Feos\u002Fhow-to\u002Fconnect-sdlc-integrations","eos\u002Fhow-to\u002Fconnect-sdlc-integrations",{"title":134,"path":135,"stem":136},"How to consume the EOS plugin marketplace","\u002Feos\u002Fhow-to\u002Fconsume-eos-marketplace","eos\u002Fhow-to\u002Fconsume-eos-marketplace",{"title":138,"path":139,"stem":140},"How to create a spike ticket","\u002Feos\u002Fhow-to\u002Fcreate-spike-ticket","eos\u002Fhow-to\u002Fcreate-spike-ticket",{"title":142,"path":143,"stem":144},"How to finalise a repository change","\u002Feos\u002Fhow-to\u002Ffinalise-change","eos\u002Fhow-to\u002Ffinalise-change",{"title":146,"path":147,"stem":148},"How to install the EOS Docs MCP server","\u002Feos\u002Fhow-to\u002Finstall-eos-docs-mcp","eos\u002Fhow-to\u002Finstall-eos-docs-mcp",{"title":150,"path":151,"stem":152},"How to resolve a spike ticket","\u002Feos\u002Fhow-to\u002Fresolve-spike-ticket","eos\u002Fhow-to\u002Fresolve-spike-ticket",{"title":154,"path":155,"stem":156},"How to run Git hook checks","\u002Feos\u002Fhow-to\u002Frun-git-hook-checks","eos\u002Fhow-to\u002Frun-git-hook-checks",{"title":158,"path":159,"stem":160},"How to use the AI-enabled SDLC","\u002Feos\u002Fhow-to\u002Fuse-ai-enabled-sdlc","eos\u002Fhow-to\u002Fuse-ai-enabled-sdlc",{"title":162,"path":163,"stem":164},"Use the Aikido plugin","\u002Feos\u002Fhow-to\u002Fuse-aikido-plugin","eos\u002Fhow-to\u002Fuse-aikido-plugin",{"title":166,"path":167,"stem":168},"How to use Compass","\u002Feos\u002Fhow-to\u002Fuse-compass","eos\u002Fhow-to\u002Fuse-compass",{"title":170,"path":171,"stem":172},"How to use Fallow","\u002Feos\u002Fhow-to\u002Fuse-fallow","eos\u002Fhow-to\u002Fuse-fallow",{"title":174,"path":175,"stem":176},"How to use incremental mutation tests","\u002Feos\u002Fhow-to\u002Fuse-incremental-mutation-tests","eos\u002Fhow-to\u002Fuse-incremental-mutation-tests",{"title":178,"path":179,"stem":180},"How to use Scout","\u002Feos\u002Fhow-to\u002Fuse-scout","eos\u002Fhow-to\u002Fuse-scout",{"title":97,"path":182,"stem":183,"children":184,"page":43},"\u002Feos\u002Freference","eos\u002Freference",[185,189,193,197],{"title":186,"path":187,"stem":188},"Compass CLI","\u002Feos\u002Freference\u002Fcompass-cli","eos\u002Freference\u002Fcompass-cli",{"title":190,"path":191,"stem":192},"EOS marketplace skills","\u002Feos\u002Freference\u002Fmarketplace-skills","eos\u002Freference\u002Fmarketplace-skills",{"title":194,"path":195,"stem":196},"Nx task execution and cache","\u002Feos\u002Freference\u002Fnx-task-execution","eos\u002Freference\u002Fnx-task-execution",{"title":198,"path":199,"stem":200},"Scout CLI","\u002Feos\u002Freference\u002Fscout-cli","eos\u002Freference\u002Fscout-cli",{"title":202,"path":203,"stem":204,"children":205},"Product engineering","\u002Fproduct-engineering","product-engineering\u002FREADME",[206],{"title":14,"collapsed":15,"path":207,"stem":208,"children":209,"page":43},"\u002Fproduct-engineering\u002Fadrs","product-engineering\u002Fadrs",[210],{"title":211,"path":212,"stem":213},"Codify Engineering Standards as Skills","\u002Fproduct-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills","product-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills",[215,268],{"nav":216,"source":265},[217],{"title":218,"path":219,"stem":220,"children":221},"Ember","\u002Fember","ember",[222,225,257,261],{"title":223,"path":219,"stem":224},"StoreFront Documentation","ember\u002Findex",{"title":14,"path":226,"stem":227,"children":228,"page":43},"\u002Fember\u002Fadrs","ember\u002Fadrs",[229,233,237,241,245,249,253],{"title":230,"path":231,"stem":232},"Add Infection as a non-blocking mutation testing tool for Ember","\u002Fember\u002Fadrs\u002F0001-infection-mutation-testing","ember\u002Fadrs\u002F0001-infection-mutation-testing",{"title":234,"path":235,"stem":236},"Process DELETE scheduled changes before CREATE_UPDATE at the same instant","\u002Fember\u002Fadrs\u002F0002-scheduled-change-processing-order","ember\u002Fadrs\u002F0002-scheduled-change-processing-order",{"title":238,"path":239,"stem":240},"Standard rate scheduling is permanent until overridden","\u002Fember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent","ember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent",{"title":242,"path":243,"stem":244},"Promotions require an existing standard rate","\u002Fember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate","ember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate",{"title":246,"path":247,"stem":248},"UTC datetime contract between Storefront and Hub","\u002Fember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub","ember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub",{"title":250,"path":251,"stem":252},"Elapsed unprocessed scheduled changes do not block rate changes","\u002Fember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes","ember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes",{"title":254,"path":255,"stem":256},"ADR-0007: Delete ConfigureTenantAuth routing command once OIDC setup migrates to Hub","\u002Fember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command","ember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command",{"title":258,"path":259,"stem":260},"Domain Overview","\u002Fember\u002Fdomain_overview","ember\u002Fdomain_overview",{"title":262,"path":263,"stem":264},"Main Flows","\u002Fember\u002Fkey_flows","ember\u002Fkey_flows",{"collectionName":266,"label":267,"prefix":220},"external_ember","StoreFront (Ember)",{"nav":269,"source":441},[270],{"title":271,"path":272,"stem":273,"children":274},"Core","\u002Fcore","core",[275,278,306,310,332,336,346,363,420,424],{"title":276,"path":272,"stem":277},"Documentation Index","core\u002Findex",{"title":14,"path":279,"stem":280,"children":281,"page":43},"\u002Fcore\u002Fadrs","core\u002Fadrs",[282,286,290,294,298,302],{"title":283,"path":284,"stem":285},"ADR-XXXX: Short, descriptive title","\u002Fcore\u002Fadrs\u002F0000-template","core\u002Fadrs\u002F0000-template",{"title":287,"path":288,"stem":289},"ADR-1: Promotions endpoint","\u002Fcore\u002Fadrs\u002F0001-add-promotions-endpoint","core\u002Fadrs\u002F0001-add-promotions-endpoint",{"title":291,"path":292,"stem":293},"ADR-2: EOM partner report job dispatch","\u002Fcore\u002Fadrs\u002F0002-eom-report-job-dispatch","core\u002Fadrs\u002F0002-eom-report-job-dispatch",{"title":295,"path":296,"stem":297},"ADR-3: Replace PB fee waive flag with a Zero scheme override","\u002Fcore\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme","core\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme",{"title":299,"path":300,"stem":301},"ADR-4: No processor Digital Top-up capability gate in Reloadable Commercials","\u002Fcore\u002Fadrs\u002F0004-no-processor-top-up-capability-gate","core\u002Fadrs\u002F0004-no-processor-top-up-capability-gate",{"title":303,"path":304,"stem":305},"ADR-5: Sparse polymorphic sale fee override reason stamp","\u002Fcore\u002Fadrs\u002F0005-sale-fee-override-reason-stamp","core\u002Fadrs\u002F0005-sale-fee-override-reason-stamp",{"title":307,"path":308,"stem":309},"Agent Workflow","\u002Fcore\u002Fai-workflow","core\u002Fai-workflow",{"title":311,"path":312,"stem":313,"children":314},"Backend Guide","\u002Fcore\u002Fbackend","core\u002Fbackend\u002Findex",[315,316,320,324,328],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319},"Backend AI Tooling","\u002Fcore\u002Fbackend\u002Fai-tooling","core\u002Fbackend\u002Fai-tooling",{"title":321,"path":322,"stem":323},"Backend Linting and Formatting","\u002Fcore\u002Fbackend\u002Flinting-and-formatting","core\u002Fbackend\u002Flinting-and-formatting",{"title":325,"path":326,"stem":327},"Backend Setup","\u002Fcore\u002Fbackend\u002Fsetup","core\u002Fbackend\u002Fsetup",{"title":329,"path":330,"stem":331},"Backend Testing","\u002Fcore\u002Fbackend\u002Ftesting","core\u002Fbackend\u002Ftesting",{"title":333,"path":334,"stem":335},"Documentation Health","\u002Fcore\u002Fdoc-health","core\u002Fdoc-health",{"title":337,"path":338,"stem":339,"children":340},"Frontend Guide","\u002Fcore\u002Ffrontend","core\u002Ffrontend\u002Findex",[341,342],{"title":337,"path":338,"stem":339},{"title":343,"path":344,"stem":345},"Frontend Development","\u002Fcore\u002Ffrontend\u002Fdevelopment","core\u002Ffrontend\u002Fdevelopment",{"title":347,"path":348,"stem":349,"children":350,"page":43},"Modules","\u002Fcore\u002Fmodules","core\u002Fmodules",[351,355],{"title":352,"path":353,"stem":354},"Connect API","\u002Fcore\u002Fmodules\u002Fconnect-api","core\u002Fmodules\u002Fconnect-api",{"title":356,"path":357,"stem":358,"children":359,"page":43},"Secure Links","\u002Fcore\u002Fmodules\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links",[360],{"title":356,"path":361,"stem":362},"\u002Fcore\u002Fmodules\u002Fsecure-links\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links\u002Fsecure-links",{"title":364,"path":365,"stem":366,"children":367,"page":43},"Processors","\u002Fcore\u002Fprocessors","core\u002Fprocessors",[368,372,376,380,384,388,392,396,400,404,408,412,416],{"title":369,"path":370,"stem":371},"Amazon Processor and API","\u002Fcore\u002Fprocessors\u002Famazon","core\u002Fprocessors\u002Famazon",{"title":373,"path":374,"stem":375},"Amilon Processor and API","\u002Fcore\u002Fprocessors\u002Familon","core\u002Fprocessors\u002Familon",{"title":377,"path":378,"stem":379},"Cadooz Processor and API","\u002Fcore\u002Fprocessors\u002Fcadooz","core\u002Fprocessors\u002Fcadooz",{"title":381,"path":382,"stem":383},"Choice Digital Processor and API","\u002Fcore\u002Fprocessors\u002Fchoice-digital","core\u002Fprocessors\u002Fchoice-digital",{"title":385,"path":386,"stem":387},"Diggecard processor reference","\u002Fcore\u002Fprocessors\u002Fdiggecard","core\u002Fprocessors\u002Fdiggecard",{"title":389,"path":390,"stem":391},"ePay Processor and API","\u002Fcore\u002Fprocessors\u002Fepay","core\u002Fprocessors\u002Fepay",{"title":393,"path":394,"stem":395},"GoGift v2 Processor and API","\u002Fcore\u002Fprocessors\u002Fgo-gift-v2","core\u002Fprocessors\u002Fgo-gift-v2",{"title":397,"path":398,"stem":399},"InComm Processor and API","\u002Fcore\u002Fprocessors\u002Fincomm","core\u002Fprocessors\u002Fincomm",{"title":401,"path":402,"stem":403},"Ogloba Processor and API","\u002Fcore\u002Fprocessors\u002Fogloba","core\u002Fprocessors\u002Fogloba",{"title":405,"path":406,"stem":407},"SVSECard Processor and API","\u002Fcore\u002Fprocessors\u002Fsvs-ecard","core\u002Fprocessors\u002Fsvs-ecard",{"title":409,"path":410,"stem":411},"Vananam Processor and API","\u002Fcore\u002Fprocessors\u002Fvananam","core\u002Fprocessors\u002Fvananam",{"title":413,"path":414,"stem":415},"Vouchers Depot processor reference","\u002Fcore\u002Fprocessors\u002Fvouchers-depot","core\u002Fprocessors\u002Fvouchers-depot",{"title":417,"path":418,"stem":419},"You Got a Gift Processor and API","\u002Fcore\u002Fprocessors\u002Fyou-got-a-gift","core\u002Fprocessors\u002Fyou-got-a-gift",{"title":421,"path":422,"stem":423},"Development Quickstart","\u002Fcore\u002Fsetup","core\u002Fsetup",{"title":425,"path":426,"stem":427,"children":428,"page":43},"Workflows","\u002Fcore\u002Fworkflows","core\u002Fworkflows",[429,433,437],{"title":430,"path":431,"stem":432},"Hub Endpoint Workflow","\u002Fcore\u002Fworkflows\u002Fhub-endpoints","core\u002Fworkflows\u002Fhub-endpoints",{"title":434,"path":435,"stem":436},"OpenAPI Tooling","\u002Fcore\u002Fworkflows\u002Fopenapi-tooling","core\u002Fworkflows\u002Fopenapi-tooling",{"title":438,"path":439,"stem":440},"Processor Integration Workflow","\u002Fcore\u002Fworkflows\u002Fprocessors","core\u002Fworkflows\u002Fprocessors",{"collectionName":442,"label":271,"prefix":273},"external_core",{"page":444,"surround":2861},{"id":445,"title":377,"body":446,"config":2856,"description":452,"extension":2857,"meta":2858,"navigation":15,"path":378,"seo":2859,"stem":379,"__hash__":2860},"external_core\u002Fcore\u002Fprocessors\u002Fcadooz.md",{"type":447,"value":448,"toc":2835},"minimark",[449,453,458,461,464,555,562,566,628,642,646,649,654,661,954,957,961,964,1105,1123,1127,1130,1228,1232,1239,1513,1523,1527,1530,1683,1693,1696,1741,1744,1748,1751,1908,1914,1917,1921,1924,2102,2105,2389,2393,2397,2403,2496,2499,2503,2506,2514,2531,2534,2538,2541,2607,2610,2628,2638,2642,2645,2679,2682,2738,2744,2748,2751,2754,2758,2831],[450,451,452],"p",{},"This page explains the Cadooz integration from an operations and customer-service perspective: how an order moves through the system, which settings control it, and what evidence is useful when investigating a failed or delayed gift-card order.",[454,455,457],"h2",{"id":456},"what-cadooz-does","What Cadooz does",[450,459,460],{},"Cadooz is an asynchronous, SKU-per-denomination gift-card processor. It supplies digital vouchers through the Cadooz Business Order SOAP API. The application does not receive the voucher code in the initial order response; it first receives a Cadooz order number and retrieves the voucher in a later request.",[450,462,463],{},"The processor is configured as:",[465,466,467,480],"table",{},[468,469,470],"thead",{},[471,472,473,477],"tr",{},[474,475,476],"th",{},"Property",[474,478,479],{},"Behaviour",[481,482,483,492,500,512,520,527,541],"tbody",{},[471,484,485,489],{},[486,487,488],"td",{},"Processor type",[486,490,491],{},"SKU per denomination; a denomination-specific product mapping is required",[471,493,494,497],{},[486,495,496],{},"Processing",[486,498,499],{},"Asynchronous order creation followed by voucher retrieval",[471,501,502,505],{},[486,503,504],{},"Delivery",[486,506,507,511],{},[508,509,510],"code",{},"DOWNLOAD"," digital voucher; provider e-card link is retained when returned",[471,513,514,517],{},[486,515,516],{},"Balance lookup",[486,518,519],{},"Unsupported",[471,521,522,525],{},[486,523,524],{},"Cancellation",[486,526,519],{},[471,528,529,532],{},[486,530,531],{},"Order completion rule",[486,533,534,535,538,539],{},"Retrieval response has ",[508,536,537],{},"responseState=SUCCESS"," and a non-empty voucher ",[508,540,508],{},[471,542,543,546],{},[486,544,545],{},"Initial order states",[486,547,548,551,552],{},[508,549,550],{},"CREATED"," or ",[508,553,554],{},"QUEUED",[450,556,557,558,561],{},"An approved ",[508,559,560],{},"CreateOrder"," response means that Cadooz accepted or queued the order. It does not mean that the voucher is available or that the card is successful yet.",[454,563,565],{"id":564},"order-lifecycle","Order lifecycle",[567,568,569,573,584,593,609,616,625],"ol",{},[570,571,572],"li",{},"A partner orders a Cadooz-enabled brand and denomination through the normal gift-card API.",[570,574,575,576,579,580,583],{},"The processor formats the requested face value to two decimal places and resolves the brand attribute ",[508,577,578],{},"cadooz-denomination-sku-%.2f",". The attribute value is the Cadooz ",[508,581,582],{},"productNumber"," for that denomination.",[570,585,586,587,589,590,592],{},"The processor builds a SOAP ",[508,588,560],{}," request with the customer profile, product number, face value, currency, one order position, and ",[508,591,510],{}," delivery type.",[570,594,595,596,599,600,603,604,551,606,608],{},"Cadooz returns an ",[508,597,598],{},"orderNumber"," and an ",[508,601,602],{},"orderState"," of ",[508,605,550],{},[508,607,554],{},". The application stores the order number as the processor reference and keeps the card pending.",[570,610,611,612,615],{},"The asynchronous processor flow sends ",[508,613,614],{},"getVouchersForOrder"," using the stored order number and the configured customer profile.",[570,617,618,619,621,622,624],{},"If Cadooz returns ",[508,620,537],{}," with a non-empty voucher ",[508,623,508],{},", the application stores the code and any returned PIN, expiry date, serial number, and e-card link, then marks the card successful.",[570,626,627],{},"The provider response and the request\u002Fresponse exchange are available in the processor interaction audit for reconciliation and support investigation.",[450,629,630,633,634,637,638,641],{},[508,631,632],{},"WAITING",", ",[508,635,636],{},"PROCESSING",", and ",[508,639,640],{},"INTERNAL_ERROR"," are treated as retryable retrieval responses. Other unexpected states, missing XML segments, empty order numbers, or empty voucher codes are failures and should be investigated before another order is created.",[454,643,645],{"id":644},"example-api-order-flow","Example API order flow",[450,647,648],{},"The following examples are representative SOAP payloads with illustrative values. Voucher codes, PINs, credentials, and live URLs must be redacted in support evidence.",[650,651,653],"h3",{"id":652},"create-order-request","Create order request",[450,655,656,657,660],{},"The request is sent as an XML SOAP envelope to the URI configured by ",[508,658,659],{},"CADOOZ_URI",":",[662,663,668],"pre",{"className":664,"code":665,"language":666,"meta":667,"style":667},"language-xml shiki shiki-themes github-dark github-light","\u003Csoapenv:Envelope xmlns:soapenv=\"http:\u002F\u002Fschemas.xmlsoap.org\u002Fsoap\u002Fenvelope\u002F\" xmlns:web=\"webservices.cadooz.com\">\n  \u003Csoapenv:Header \u002F>\n  \u003Csoapenv:Body>\n    \u003Cweb:CreateOrder>\n      \u003Corder>\n        \u003CcustomerProfile>Tillo API\u003C\u002FcustomerProfile>\n        \u003CdeliveryAddress>\n          \u003Cemail>techteam@tillo.io\u003C\u002Femail>\n        \u003C\u002FdeliveryAddress>\n        \u003CorderPositions>\n          \u003Camount>1\u003C\u002Famount>\n          \u003CproductNumber>ABC-25-EUR\u003C\u002FproductNumber>\n          \u003Cvalue>\n            \u003Camount>25.00\u003C\u002Famount>\n            \u003Ccurrency>EUR\u003C\u002Fcurrency>\n          \u003C\u002Fvalue>\n          \u003CdeliveryType>DOWNLOAD\u003C\u002FdeliveryType>\n        \u003C\u002ForderPositions>\n      \u003C\u002Forder>\n    \u003C\u002Fweb:CreateOrder>\n  \u003C\u002Fsoapenv:Body>\n\u003C\u002Fsoapenv:Envelope>\n","xml","",[508,669,670,705,717,727,738,749,765,775,791,801,811,826,840,850,865,880,890,905,914,924,934,944],{"__ignoreMap":667},[671,672,675,679,683,687,690,694,697,699,702],"span",{"class":673,"line":674},"line",1,[671,676,678],{"class":677},"sQ3_J","\u003C",[671,680,682],{"class":681},"sZkSk","soapenv:Envelope",[671,684,686],{"class":685},"s-Z4r"," xmlns:soapenv",[671,688,689],{"class":677},"=",[671,691,693],{"class":692},"sg6BJ","\"http:\u002F\u002Fschemas.xmlsoap.org\u002Fsoap\u002Fenvelope\u002F\"",[671,695,696],{"class":685}," xmlns:web",[671,698,689],{"class":677},[671,700,701],{"class":692},"\"webservices.cadooz.com\"",[671,703,704],{"class":677},">\n",[671,706,708,711,714],{"class":673,"line":707},2,[671,709,710],{"class":677},"  \u003C",[671,712,713],{"class":681},"soapenv:Header",[671,715,716],{"class":677}," \u002F>\n",[671,718,720,722,725],{"class":673,"line":719},3,[671,721,710],{"class":677},[671,723,724],{"class":681},"soapenv:Body",[671,726,704],{"class":677},[671,728,730,733,736],{"class":673,"line":729},4,[671,731,732],{"class":677},"    \u003C",[671,734,735],{"class":681},"web:CreateOrder",[671,737,704],{"class":677},[671,739,741,744,747],{"class":673,"line":740},5,[671,742,743],{"class":677},"      \u003C",[671,745,746],{"class":681},"order",[671,748,704],{"class":677},[671,750,752,755,758,761,763],{"class":673,"line":751},6,[671,753,754],{"class":677},"        \u003C",[671,756,757],{"class":681},"customerProfile",[671,759,760],{"class":677},">Tillo API\u003C\u002F",[671,762,757],{"class":681},[671,764,704],{"class":677},[671,766,768,770,773],{"class":673,"line":767},7,[671,769,754],{"class":677},[671,771,772],{"class":681},"deliveryAddress",[671,774,704],{"class":677},[671,776,778,781,784,787,789],{"class":673,"line":777},8,[671,779,780],{"class":677},"          \u003C",[671,782,783],{"class":681},"email",[671,785,786],{"class":677},">techteam@tillo.io\u003C\u002F",[671,788,783],{"class":681},[671,790,704],{"class":677},[671,792,794,797,799],{"class":673,"line":793},9,[671,795,796],{"class":677},"        \u003C\u002F",[671,798,772],{"class":681},[671,800,704],{"class":677},[671,802,804,806,809],{"class":673,"line":803},10,[671,805,754],{"class":677},[671,807,808],{"class":681},"orderPositions",[671,810,704],{"class":677},[671,812,814,816,819,822,824],{"class":673,"line":813},11,[671,815,780],{"class":677},[671,817,818],{"class":681},"amount",[671,820,821],{"class":677},">1\u003C\u002F",[671,823,818],{"class":681},[671,825,704],{"class":677},[671,827,829,831,833,836,838],{"class":673,"line":828},12,[671,830,780],{"class":677},[671,832,582],{"class":681},[671,834,835],{"class":677},">ABC-25-EUR\u003C\u002F",[671,837,582],{"class":681},[671,839,704],{"class":677},[671,841,843,845,848],{"class":673,"line":842},13,[671,844,780],{"class":677},[671,846,847],{"class":681},"value",[671,849,704],{"class":677},[671,851,853,856,858,861,863],{"class":673,"line":852},14,[671,854,855],{"class":677},"            \u003C",[671,857,818],{"class":681},[671,859,860],{"class":677},">25.00\u003C\u002F",[671,862,818],{"class":681},[671,864,704],{"class":677},[671,866,868,870,873,876,878],{"class":673,"line":867},15,[671,869,855],{"class":677},[671,871,872],{"class":681},"currency",[671,874,875],{"class":677},">EUR\u003C\u002F",[671,877,872],{"class":681},[671,879,704],{"class":677},[671,881,883,886,888],{"class":673,"line":882},16,[671,884,885],{"class":677},"          \u003C\u002F",[671,887,847],{"class":681},[671,889,704],{"class":677},[671,891,893,895,898,901,903],{"class":673,"line":892},17,[671,894,780],{"class":677},[671,896,897],{"class":681},"deliveryType",[671,899,900],{"class":677},">DOWNLOAD\u003C\u002F",[671,902,897],{"class":681},[671,904,704],{"class":677},[671,906,908,910,912],{"class":673,"line":907},18,[671,909,796],{"class":677},[671,911,808],{"class":681},[671,913,704],{"class":677},[671,915,917,920,922],{"class":673,"line":916},19,[671,918,919],{"class":677},"      \u003C\u002F",[671,921,746],{"class":681},[671,923,704],{"class":677},[671,925,927,930,932],{"class":673,"line":926},20,[671,928,929],{"class":677},"    \u003C\u002F",[671,931,735],{"class":681},[671,933,704],{"class":677},[671,935,937,940,942],{"class":673,"line":936},21,[671,938,939],{"class":677},"  \u003C\u002F",[671,941,724],{"class":681},[671,943,704],{"class":677},[671,945,947,950,952],{"class":673,"line":946},22,[671,948,949],{"class":677},"\u003C\u002F",[671,951,682],{"class":681},[671,953,704],{"class":677},[450,955,956],{},"The face value is sent even though each denomination has its own product number. The delivery email is the technical integration address in the generated payload, not a partner's customer delivery address; downstream application delivery and presentation determine how the gift card is exposed.",[650,958,960],{"id":959},"create-order-response","Create order response",[450,962,963],{},"An accepted order has the following general shape:",[662,965,967],{"className":664,"code":966,"language":666,"meta":667,"style":667},"\u003Csoap:Envelope xmlns:soap=\"http:\u002F\u002Fschemas.xmlsoap.org\u002Fsoap\u002Fenvelope\u002F\">\n  \u003Csoap:Body>\n    \u003Cns2:CreateOrderResponse xmlns:ns2=\"webservices.cadooz.com\">\n      \u003Creturn>\n        \u003CorderNumber>CAD-123456\u003C\u002ForderNumber>\n        \u003CorderState>CREATED\u003C\u002ForderState>\n        \u003CdeliveryState>PROCESSING\u003C\u002FdeliveryState>\n        \u003Cmessage>Order was created and will be processed soon.\u003C\u002Fmessage>\n      \u003C\u002Freturn>\n    \u003C\u002Fns2:CreateOrderResponse>\n  \u003C\u002Fsoap:Body>\n\u003C\u002Fsoap:Envelope>\n",[508,968,969,985,994,1010,1019,1032,1045,1059,1073,1081,1089,1097],{"__ignoreMap":667},[671,970,971,973,976,979,981,983],{"class":673,"line":674},[671,972,678],{"class":677},[671,974,975],{"class":681},"soap:Envelope",[671,977,978],{"class":685}," xmlns:soap",[671,980,689],{"class":677},[671,982,693],{"class":692},[671,984,704],{"class":677},[671,986,987,989,992],{"class":673,"line":707},[671,988,710],{"class":677},[671,990,991],{"class":681},"soap:Body",[671,993,704],{"class":677},[671,995,996,998,1001,1004,1006,1008],{"class":673,"line":719},[671,997,732],{"class":677},[671,999,1000],{"class":681},"ns2:CreateOrderResponse",[671,1002,1003],{"class":685}," xmlns:ns2",[671,1005,689],{"class":677},[671,1007,701],{"class":692},[671,1009,704],{"class":677},[671,1011,1012,1014,1017],{"class":673,"line":729},[671,1013,743],{"class":677},[671,1015,1016],{"class":681},"return",[671,1018,704],{"class":677},[671,1020,1021,1023,1025,1028,1030],{"class":673,"line":740},[671,1022,754],{"class":677},[671,1024,598],{"class":681},[671,1026,1027],{"class":677},">CAD-123456\u003C\u002F",[671,1029,598],{"class":681},[671,1031,704],{"class":677},[671,1033,1034,1036,1038,1041,1043],{"class":673,"line":751},[671,1035,754],{"class":677},[671,1037,602],{"class":681},[671,1039,1040],{"class":677},">CREATED\u003C\u002F",[671,1042,602],{"class":681},[671,1044,704],{"class":677},[671,1046,1047,1049,1052,1055,1057],{"class":673,"line":767},[671,1048,754],{"class":677},[671,1050,1051],{"class":681},"deliveryState",[671,1053,1054],{"class":677},">PROCESSING\u003C\u002F",[671,1056,1051],{"class":681},[671,1058,704],{"class":677},[671,1060,1061,1063,1066,1069,1071],{"class":673,"line":777},[671,1062,754],{"class":677},[671,1064,1065],{"class":681},"message",[671,1067,1068],{"class":677},">Order was created and will be processed soon.\u003C\u002F",[671,1070,1065],{"class":681},[671,1072,704],{"class":677},[671,1074,1075,1077,1079],{"class":673,"line":793},[671,1076,919],{"class":677},[671,1078,1016],{"class":681},[671,1080,704],{"class":677},[671,1082,1083,1085,1087],{"class":673,"line":803},[671,1084,929],{"class":677},[671,1086,1000],{"class":681},[671,1088,704],{"class":677},[671,1090,1091,1093,1095],{"class":673,"line":813},[671,1092,939],{"class":677},[671,1094,991],{"class":681},[671,1096,704],{"class":677},[671,1098,1099,1101,1103],{"class":673,"line":828},[671,1100,949],{"class":677},[671,1102,975],{"class":681},[671,1104,704],{"class":677},[450,1106,1107,1109,1110,1112,1113,551,1115,1117,1118,551,1120,1122],{},[508,1108,554],{}," is also a valid initial state. Neither state contains the final voucher code, so the ",[508,1111,598],{}," must be preserved for retrieval. A response with a missing or empty ",[508,1114,598],{},[508,1116,602],{},", or an order state other than ",[508,1119,550],{},[508,1121,554],{},", is not accepted by the processor.",[650,1124,1126],{"id":1125},"retrieve-voucher-request","Retrieve voucher request",[450,1128,1129],{},"Retrieval uses the Cadooz order number stored as the processor reference:",[662,1131,1133],{"className":664,"code":1132,"language":666,"meta":667,"style":667},"\u003Csoapenv:Envelope xmlns:soapenv=\"http:\u002F\u002Fschemas.xmlsoap.org\u002Fsoap\u002Fenvelope\u002F\" xmlns:web=\"webservices.cadooz.com\">\n  \u003Csoapenv:Header \u002F>\n  \u003Csoapenv:Body>\n    \u003Cweb:getVouchersForOrder>\n      \u003CcustomerProfile>Tillo API\u003C\u002FcustomerProfile>\n      \u003CorderNumber>CAD-123456\u003C\u002ForderNumber>\n    \u003C\u002Fweb:getVouchersForOrder>\n  \u003C\u002Fsoapenv:Body>\n\u003C\u002Fsoapenv:Envelope>\n",[508,1134,1135,1155,1163,1171,1180,1192,1204,1212,1220],{"__ignoreMap":667},[671,1136,1137,1139,1141,1143,1145,1147,1149,1151,1153],{"class":673,"line":674},[671,1138,678],{"class":677},[671,1140,682],{"class":681},[671,1142,686],{"class":685},[671,1144,689],{"class":677},[671,1146,693],{"class":692},[671,1148,696],{"class":685},[671,1150,689],{"class":677},[671,1152,701],{"class":692},[671,1154,704],{"class":677},[671,1156,1157,1159,1161],{"class":673,"line":707},[671,1158,710],{"class":677},[671,1160,713],{"class":681},[671,1162,716],{"class":677},[671,1164,1165,1167,1169],{"class":673,"line":719},[671,1166,710],{"class":677},[671,1168,724],{"class":681},[671,1170,704],{"class":677},[671,1172,1173,1175,1178],{"class":673,"line":729},[671,1174,732],{"class":677},[671,1176,1177],{"class":681},"web:getVouchersForOrder",[671,1179,704],{"class":677},[671,1181,1182,1184,1186,1188,1190],{"class":673,"line":740},[671,1183,743],{"class":677},[671,1185,757],{"class":681},[671,1187,760],{"class":677},[671,1189,757],{"class":681},[671,1191,704],{"class":677},[671,1193,1194,1196,1198,1200,1202],{"class":673,"line":751},[671,1195,743],{"class":677},[671,1197,598],{"class":681},[671,1199,1027],{"class":677},[671,1201,598],{"class":681},[671,1203,704],{"class":677},[671,1205,1206,1208,1210],{"class":673,"line":767},[671,1207,929],{"class":677},[671,1209,1177],{"class":681},[671,1211,704],{"class":677},[671,1213,1214,1216,1218],{"class":673,"line":777},[671,1215,939],{"class":677},[671,1217,724],{"class":681},[671,1219,704],{"class":677},[671,1221,1222,1224,1226],{"class":673,"line":793},[671,1223,949],{"class":677},[671,1225,682],{"class":681},[671,1227,704],{"class":677},[650,1229,1231],{"id":1230},"retrieve-voucher-response","Retrieve voucher response",[450,1233,1234,1235,1238],{},"When the voucher is ready, Cadooz returns ",[508,1236,1237],{},"SUCCESS"," and the voucher fields:",[662,1240,1242],{"className":664,"code":1241,"language":666,"meta":667,"style":667},"\u003Csoap:Envelope xmlns:soap=\"http:\u002F\u002Fschemas.xmlsoap.org\u002Fsoap\u002Fenvelope\u002F\">\n  \u003Csoap:Body>\n    \u003Cns2:getVouchersForOrderResponse xmlns:ns2=\"webservices.cadooz.com\">\n      \u003Creturn>\n        \u003CresponseState>SUCCESS\u003C\u002FresponseState>\n        \u003CvoucherList>\n          \u003CserialNumber>987654321\u003C\u002FserialNumber>\n          \u003Ccode>[redacted]\u003C\u002Fcode>\n          \u003Cpin>[redacted]\u003C\u002Fpin>\n          \u003Cvalue>\n            \u003Camount>25.00\u003C\u002Famount>\n            \u003Ccurrency>EUR\u003C\u002Fcurrency>\n          \u003C\u002Fvalue>\n          \u003CproductName>Example Gift Card\u003C\u002FproductName>\n          \u003CcadoozProductNumber>ABC-25-EUR\u003C\u002FcadoozProductNumber>\n          \u003CecardLink>https:\u002F\u002F[redacted]\u002Fecard\u002F[redacted]\u003C\u002FecardLink>\n          \u003CeVoucherLink xsi:nil=\"true\" xmlns:xsi=\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\" \u002F>\n          \u003CexpirationDate>2027-08-21T00:00:00+00:00\u003C\u002FexpirationDate>\n        \u003C\u002FvoucherList>\n      \u003C\u002Freturn>\n    \u003C\u002Fns2:getVouchersForOrderResponse>\n  \u003C\u002Fsoap:Body>\n\u003C\u002Fsoap:Envelope>\n",[508,1243,1244,1258,1266,1281,1289,1303,1312,1326,1339,1352,1360,1372,1384,1392,1406,1419,1433,1458,1472,1480,1488,1496,1504],{"__ignoreMap":667},[671,1245,1246,1248,1250,1252,1254,1256],{"class":673,"line":674},[671,1247,678],{"class":677},[671,1249,975],{"class":681},[671,1251,978],{"class":685},[671,1253,689],{"class":677},[671,1255,693],{"class":692},[671,1257,704],{"class":677},[671,1259,1260,1262,1264],{"class":673,"line":707},[671,1261,710],{"class":677},[671,1263,991],{"class":681},[671,1265,704],{"class":677},[671,1267,1268,1270,1273,1275,1277,1279],{"class":673,"line":719},[671,1269,732],{"class":677},[671,1271,1272],{"class":681},"ns2:getVouchersForOrderResponse",[671,1274,1003],{"class":685},[671,1276,689],{"class":677},[671,1278,701],{"class":692},[671,1280,704],{"class":677},[671,1282,1283,1285,1287],{"class":673,"line":729},[671,1284,743],{"class":677},[671,1286,1016],{"class":681},[671,1288,704],{"class":677},[671,1290,1291,1293,1296,1299,1301],{"class":673,"line":740},[671,1292,754],{"class":677},[671,1294,1295],{"class":681},"responseState",[671,1297,1298],{"class":677},">SUCCESS\u003C\u002F",[671,1300,1295],{"class":681},[671,1302,704],{"class":677},[671,1304,1305,1307,1310],{"class":673,"line":751},[671,1306,754],{"class":677},[671,1308,1309],{"class":681},"voucherList",[671,1311,704],{"class":677},[671,1313,1314,1316,1319,1322,1324],{"class":673,"line":767},[671,1315,780],{"class":677},[671,1317,1318],{"class":681},"serialNumber",[671,1320,1321],{"class":677},">987654321\u003C\u002F",[671,1323,1318],{"class":681},[671,1325,704],{"class":677},[671,1327,1328,1330,1332,1335,1337],{"class":673,"line":777},[671,1329,780],{"class":677},[671,1331,508],{"class":681},[671,1333,1334],{"class":677},">[redacted]\u003C\u002F",[671,1336,508],{"class":681},[671,1338,704],{"class":677},[671,1340,1341,1343,1346,1348,1350],{"class":673,"line":793},[671,1342,780],{"class":677},[671,1344,1345],{"class":681},"pin",[671,1347,1334],{"class":677},[671,1349,1345],{"class":681},[671,1351,704],{"class":677},[671,1353,1354,1356,1358],{"class":673,"line":803},[671,1355,780],{"class":677},[671,1357,847],{"class":681},[671,1359,704],{"class":677},[671,1361,1362,1364,1366,1368,1370],{"class":673,"line":813},[671,1363,855],{"class":677},[671,1365,818],{"class":681},[671,1367,860],{"class":677},[671,1369,818],{"class":681},[671,1371,704],{"class":677},[671,1373,1374,1376,1378,1380,1382],{"class":673,"line":828},[671,1375,855],{"class":677},[671,1377,872],{"class":681},[671,1379,875],{"class":677},[671,1381,872],{"class":681},[671,1383,704],{"class":677},[671,1385,1386,1388,1390],{"class":673,"line":842},[671,1387,885],{"class":677},[671,1389,847],{"class":681},[671,1391,704],{"class":677},[671,1393,1394,1396,1399,1402,1404],{"class":673,"line":852},[671,1395,780],{"class":677},[671,1397,1398],{"class":681},"productName",[671,1400,1401],{"class":677},">Example Gift Card\u003C\u002F",[671,1403,1398],{"class":681},[671,1405,704],{"class":677},[671,1407,1408,1410,1413,1415,1417],{"class":673,"line":867},[671,1409,780],{"class":677},[671,1411,1412],{"class":681},"cadoozProductNumber",[671,1414,835],{"class":677},[671,1416,1412],{"class":681},[671,1418,704],{"class":677},[671,1420,1421,1423,1426,1429,1431],{"class":673,"line":882},[671,1422,780],{"class":677},[671,1424,1425],{"class":681},"ecardLink",[671,1427,1428],{"class":677},">https:\u002F\u002F[redacted]\u002Fecard\u002F[redacted]\u003C\u002F",[671,1430,1425],{"class":681},[671,1432,704],{"class":677},[671,1434,1435,1437,1440,1443,1445,1448,1451,1453,1456],{"class":673,"line":892},[671,1436,780],{"class":677},[671,1438,1439],{"class":681},"eVoucherLink",[671,1441,1442],{"class":685}," xsi:nil",[671,1444,689],{"class":677},[671,1446,1447],{"class":692},"\"true\"",[671,1449,1450],{"class":685}," xmlns:xsi",[671,1452,689],{"class":677},[671,1454,1455],{"class":692},"\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\"",[671,1457,716],{"class":677},[671,1459,1460,1462,1465,1468,1470],{"class":673,"line":907},[671,1461,780],{"class":677},[671,1463,1464],{"class":681},"expirationDate",[671,1466,1467],{"class":677},">2027-08-21T00:00:00+00:00\u003C\u002F",[671,1469,1464],{"class":681},[671,1471,704],{"class":677},[671,1473,1474,1476,1478],{"class":673,"line":916},[671,1475,796],{"class":677},[671,1477,1309],{"class":681},[671,1479,704],{"class":677},[671,1481,1482,1484,1486],{"class":673,"line":926},[671,1483,919],{"class":677},[671,1485,1016],{"class":681},[671,1487,704],{"class":677},[671,1489,1490,1492,1494],{"class":673,"line":936},[671,1491,929],{"class":677},[671,1493,1272],{"class":681},[671,1495,704],{"class":677},[671,1497,1498,1500,1502],{"class":673,"line":946},[671,1499,939],{"class":677},[671,1501,991],{"class":681},[671,1503,704],{"class":677},[671,1505,1507,1509,1511],{"class":673,"line":1506},23,[671,1508,949],{"class":677},[671,1510,975],{"class":681},[671,1512,704],{"class":677},[450,1514,618,1515,551,1517,1519,1520,1522],{},[508,1516,632],{},[508,1518,636],{},", the voucher is not ready and the asynchronous flow may retry. ",[508,1521,640],{}," is also retryable in the current processor, even though its name sounds final.",[454,1524,1526],{"id":1525},"response-mapping-and-validation","Response mapping and validation",[450,1528,1529],{},"The processor parses the XML after converting the provider response from ISO-8859-1 to UTF-8 and removing the known SOAP\u002FXML namespace prefixes. It validates the expected response structure before changing card state.",[465,1531,1532,1545],{},[468,1533,1534],{},[471,1535,1536,1539,1542],{},[474,1537,1538],{},"Provider field or condition",[474,1540,1541],{},"Internal result",[474,1543,1544],{},"Operational meaning",[481,1546,1547,1562,1577,1590,1603,1616,1629,1641,1654,1667],{},[471,1548,1549,1554,1559],{},[486,1550,1551],{},[508,1552,1553],{},"CreateOrderResponse.return.orderNumber",[486,1555,1556],{},[508,1557,1558],{},"processor_reference",[486,1560,1561],{},"Cadooz identifier required for subsequent retrieval",[471,1563,1564,1571,1574],{},[486,1565,1566,551,1569],{},[508,1567,1568],{},"orderState = CREATED",[508,1570,554],{},[486,1572,1573],{},"Pending\u002Frequested card",[486,1575,1576],{},"Cadooz accepted or queued the order; no voucher is available yet",[471,1578,1579,1584,1587],{},[486,1580,1581],{},[508,1582,1583],{},"getVouchersForOrderResponse.return.responseState = SUCCESS",[486,1585,1586],{},"Eligible for completion",[486,1588,1589],{},"Voucher data should be present",[471,1591,1592,1597,1600],{},[486,1593,1594],{},[508,1595,1596],{},"voucherList.code",[486,1598,1599],{},"Card code",[486,1601,1602],{},"Required and must be non-empty for success",[471,1604,1605,1610,1613],{},[486,1606,1607],{},[508,1608,1609],{},"voucherList.pin",[486,1611,1612],{},"Card PIN",[486,1614,1615],{},"Stored when present",[471,1617,1618,1623,1626],{},[486,1619,1620],{},[508,1621,1622],{},"voucherList.expirationDate",[486,1624,1625],{},"Card expiration date",[486,1627,1628],{},"Parsed and stored when present",[471,1630,1631,1636,1639],{},[486,1632,1633],{},[508,1634,1635],{},"voucherList.serialNumber",[486,1637,1638],{},"Card serial number",[486,1640,1615],{},[471,1642,1643,1648,1651],{},[486,1644,1645],{},[508,1646,1647],{},"voucherList.ecardLink",[486,1649,1650],{},"Third-party URL",[486,1652,1653],{},"Stored as the provider e-card link when present",[471,1655,1656,1661,1664],{},[486,1657,1658],{},[508,1659,1660],{},"voucherList.eVoucherLink",[486,1662,1663],{},"No direct card mapping",[486,1665,1666],{},"Retained only in the raw provider response\u002Faudit if returned",[471,1668,1669,1677,1680],{},[486,1670,1671,633,1674,1676],{},[508,1672,1673],{},"voucherList.value",[508,1675,872],{},", and product metadata",[486,1678,1679],{},"No direct completion rule",[486,1681,1682],{},"Useful for reconciliation against the sale and SKU",[450,1684,1685,1686,1689,1690,1692],{},"The application also sets the internal card URL from the sale's existing ",[508,1687,1688],{},"saleUrl","; this is distinct from the provider's ",[508,1691,1425],{},".",[450,1694,1695],{},"The following conditions are validation failures:",[1697,1698,1699,1702,1712,1720,1727,1733],"ul",{},[570,1700,1701],{},"The response is not valid XML.",[570,1703,1704,1705,1708,1709,1711],{},"The SOAP ",[508,1706,1707],{},"Body",", operation response, or ",[508,1710,1016],{}," segment is missing.",[570,1713,1714,1715,551,1717,1719],{},"A create response is missing ",[508,1716,598],{},[508,1718,602],{},", or either value is empty.",[570,1721,1722,1723,551,1725,1692],{},"A create response has an order state other than ",[508,1724,550],{},[508,1726,554],{},[570,1728,1729,1730,1732],{},"A retrieve response is missing ",[508,1731,1295],{},", or the value is empty or not recognised.",[570,1734,1735,1736,551,1738,1740],{},"A successful retrieve response is missing ",[508,1737,1309],{},[508,1739,1596],{},", or the code is empty.",[450,1742,1743],{},"Optional fields such as PIN, expiration date, serial number, and e-card link do not independently determine success.",[454,1745,1747],{"id":1746},"provider-states-and-retry-behaviour","Provider states and retry behaviour",[450,1749,1750],{},"The current processor distinguishes an accepted create request from a voucher-ready retrieval response:",[465,1752,1753,1769],{},[468,1754,1755],{},[471,1756,1757,1760,1763,1766],{},[474,1758,1759],{},"Operation",[474,1761,1762],{},"Provider state",[474,1764,1765],{},"Processor behaviour",[474,1767,1768],{},"Operational action",[481,1770,1771,1791,1814,1849,1868,1883],{},[471,1772,1773,1776,1782,1785],{},[486,1774,1775],{},"Create",[486,1777,1778,633,1780],{},[508,1779,550],{},[508,1781,554],{},[486,1783,1784],{},"Accepted; card remains pending",[486,1786,1787,1788,1790],{},"Preserve ",[508,1789,598],{}," and retrieve it later",[471,1792,1793,1795,1808,1811],{},[486,1794,1775],{},[486,1796,1797,633,1799,633,1802,633,1805],{},[508,1798,636],{},[508,1800,1801],{},"DELIVERED",[508,1803,1804],{},"INVOICED",[508,1806,1807],{},"DONE",[486,1809,1810],{},"Not a valid initial response",[486,1812,1813],{},"Reconcile the order with Cadooz before retrying",[471,1815,1816,1818,1843,1846],{},[486,1817,1775],{},[486,1819,1820,633,1823,633,1826,633,1828,633,1831,633,1834,633,1837,633,1840],{},[508,1821,1822],{},"CANCELED",[508,1824,1825],{},"RETURNED",[508,1827,640],{},[508,1829,1830],{},"ACCESS_DENIED",[508,1832,1833],{},"PRODUCT_NOT_AVAILABLE",[508,1835,1836],{},"UNKNOWN",[508,1838,1839],{},"VERIFICATION_FAILED",[508,1841,1842],{},"ALREADY_PROCESSED",[486,1844,1845],{},"Non-retryable processor failure",[486,1847,1848],{},"Inspect the response message and configuration; do not create a duplicate blindly",[471,1850,1851,1854,1862,1865],{},[486,1852,1853],{},"Retrieve",[486,1855,1856,633,1858,633,1860],{},[508,1857,632],{},[508,1859,636],{},[508,1861,640],{},[486,1863,1864],{},"Retryable processor failure",[486,1866,1867],{},"Allow the asynchronous retry flow to continue",[471,1869,1870,1872,1877,1880],{},[486,1871,1853],{},[486,1873,1874,1876],{},[508,1875,1237],{}," with a non-empty code",[486,1878,1879],{},"Successful card completion",[486,1881,1882],{},"Store the voucher data",[471,1884,1885,1887,1903,1905],{},[486,1886,1853],{},[486,1888,1889,633,1892,633,1895,633,1898,633,1901],{},[508,1890,1891],{},"INCORRECT_USAGE",[508,1893,1894],{},"UNKNOWN_CUSTOMER_PROFILE",[508,1896,1897],{},"UNKNOWN_GENERAION_PROFILE",[508,1899,1900],{},"ORDER_NOT_FOUND",[508,1902,1822],{},[486,1904,1845],{},[486,1906,1907],{},"Check request values, customer profile, and existing order",[450,1909,1910,1911,1913],{},"Any state not accepted by the current implementation is an error, including an empty or unknown state. Cadooz's published spelling ",[508,1912,1897],{}," is retained here for matching provider responses.",[450,1915,1916],{},"Transport errors, SOAP faults, malformed XML, and response validation errors are wrapped as processor exceptions and recorded in the interaction audit. Whether a transport failure is retried depends on the surrounding processor retry policy; a provider order must not be recreated until the existing create attempt has been reconciled.",[454,1918,1920],{"id":1919},"audit-comparison-fields","Audit comparison fields",[450,1922,1923],{},"Compare the create and retrieval interaction audits as one sequence. The processor enables interaction auditing with the internal sale UUID as the transaction reference. On retrieval, it updates the gift-card audit request value with the latest retrieval payload so the audit reflects the request actually sent to Cadooz.",[465,1925,1926,1942],{},[468,1927,1928],{},[471,1929,1930,1933,1936,1939],{},[474,1931,1932],{},"Field",[474,1934,1935],{},"Create order",[474,1937,1938],{},"Retrieve voucher",[474,1940,1941],{},"What to verify",[481,1943,1944,1959,1975,1988,2001,2017,2032,2051,2069,2084],{},[471,1945,1946,1948,1952,1956],{},[486,1947,1759],{},[486,1949,1950],{},[508,1951,560],{},[486,1953,1954],{},[508,1955,614],{},[486,1957,1958],{},"A new sale starts with create; retrieval reuses the existing Cadooz order",[471,1960,1961,1964,1969,1972],{},[486,1962,1963],{},"Endpoint",[486,1965,1966,1967],{},"Configured ",[508,1968,659],{},[486,1970,1971],{},"Same configured URI",[486,1973,1974],{},"The request was sent to the expected environment",[471,1976,1977,1980,1983,1985],{},[486,1978,1979],{},"Request\u002Fresponse timestamps",[486,1981,1982],{},"Audit request and response times",[486,1984,1982],{},[486,1986,1987],{},"The response follows its matching request and the sequence is chronological",[471,1989,1990,1993,1996,1998],{},[486,1991,1992],{},"Internal transaction reference",[486,1994,1995],{},"Sale UUID used for auditing",[486,1997,1995],{},[486,1999,2000],{},"Both audits belong to the same sale\u002Fworkflow",[471,2002,2003,2006,2010,2014],{},[486,2004,2005],{},"Customer profile",[486,2007,2008],{},[508,2009,757],{},[486,2011,2012],{},[508,2013,757],{},[486,2015,2016],{},"The same configured profile is used",[471,2018,2019,2022,2026,2029],{},[486,2020,2021],{},"Product mapping",[486,2023,2024],{},[508,2025,582],{},[486,2027,2028],{},"Not sent",[486,2030,2031],{},"The product number matches the brand and face value",[471,2033,2034,2037,2046,2048],{},[486,2035,2036],{},"Amount\u002Fcurrency",[486,2038,2039,2042,2043],{},[508,2040,2041],{},"value.amount"," and ",[508,2044,2045],{},"value.currency",[486,2047,2028],{},[486,2049,2050],{},"The requested amount and currency match the sale",[471,2052,2053,2056,2061,2066],{},[486,2054,2055],{},"Provider reference",[486,2057,2058,2060],{},[508,2059,598],{}," in response",[486,2062,2063,2065],{},[508,2064,598],{}," in request",[486,2067,2068],{},"Retrieval uses the original order, not a newly created order",[471,2070,2071,2073,2077,2081],{},[486,2072,1762],{},[486,2074,2075],{},[508,2076,602],{},[486,2078,2079],{},[508,2080,1295],{},[486,2082,2083],{},"Creation acceptance and voucher readiness are separate states",[471,2085,2086,2089,2092,2096],{},[486,2087,2088],{},"Voucher data",[486,2090,2091],{},"Not expected",[486,2093,2094],{},[508,2095,1309],{},[486,2097,2098,2099,2101],{},"A non-empty ",[508,2100,508],{}," is present before completion",[450,2103,2104],{},"A redacted comparison record can be represented as follows:",[662,2106,2110],{"className":2107,"code":2108,"language":2109,"meta":667,"style":667},"language-json shiki shiki-themes github-dark github-light","{\n  \"create\": {\n    \"operation\": \"CreateOrder\",\n    \"requestTimestamp\": \"2026-08-21T16:03:04Z\",\n    \"responseTimestamp\": \"2026-08-21T16:03:05Z\",\n    \"saleId\": \"sale-123e4567-e89b-12d3-a456-426614174000\",\n    \"transactionReference\": \"sale-123e4567-e89b-12d3-a456-426614174000\",\n    \"customerProfile\": \"Tillo API\",\n    \"productNumber\": \"ABC-25-EUR\",\n    \"amount\": \"25.00\",\n    \"currency\": \"EUR\",\n    \"orderNumber\": \"CAD-123456\",\n    \"orderState\": \"CREATED\",\n    \"voucherDataPresent\": false\n  },\n  \"retrieve\": {\n    \"operation\": \"getVouchersForOrder\",\n    \"requestTimestamp\": \"2026-08-21T16:05:04Z\",\n    \"responseTimestamp\": \"2026-08-21T16:05:05Z\",\n    \"saleId\": \"sale-123e4567-e89b-12d3-a456-426614174000\",\n    \"transactionReference\": \"sale-123e4567-e89b-12d3-a456-426614174000\",\n    \"customerProfile\": \"Tillo API\",\n    \"orderNumber\": \"CAD-123456\",\n    \"responseState\": \"SUCCESS\",\n    \"voucherDataPresent\": true\n  }\n}\n","json",[508,2111,2112,2117,2126,2140,2152,2164,2176,2187,2199,2211,2223,2235,2247,2259,2269,2274,2281,2292,2303,2314,2324,2334,2344,2354,2367,2377,2383],{"__ignoreMap":667},[671,2113,2114],{"class":673,"line":674},[671,2115,2116],{"class":677},"{\n",[671,2118,2119,2123],{"class":673,"line":707},[671,2120,2122],{"class":2121},"s0DvM","  \"create\"",[671,2124,2125],{"class":677},": {\n",[671,2127,2128,2131,2134,2137],{"class":673,"line":719},[671,2129,2130],{"class":2121},"    \"operation\"",[671,2132,2133],{"class":677},": ",[671,2135,2136],{"class":692},"\"CreateOrder\"",[671,2138,2139],{"class":677},",\n",[671,2141,2142,2145,2147,2150],{"class":673,"line":729},[671,2143,2144],{"class":2121},"    \"requestTimestamp\"",[671,2146,2133],{"class":677},[671,2148,2149],{"class":692},"\"2026-08-21T16:03:04Z\"",[671,2151,2139],{"class":677},[671,2153,2154,2157,2159,2162],{"class":673,"line":740},[671,2155,2156],{"class":2121},"    \"responseTimestamp\"",[671,2158,2133],{"class":677},[671,2160,2161],{"class":692},"\"2026-08-21T16:03:05Z\"",[671,2163,2139],{"class":677},[671,2165,2166,2169,2171,2174],{"class":673,"line":751},[671,2167,2168],{"class":2121},"    \"saleId\"",[671,2170,2133],{"class":677},[671,2172,2173],{"class":692},"\"sale-123e4567-e89b-12d3-a456-426614174000\"",[671,2175,2139],{"class":677},[671,2177,2178,2181,2183,2185],{"class":673,"line":767},[671,2179,2180],{"class":2121},"    \"transactionReference\"",[671,2182,2133],{"class":677},[671,2184,2173],{"class":692},[671,2186,2139],{"class":677},[671,2188,2189,2192,2194,2197],{"class":673,"line":777},[671,2190,2191],{"class":2121},"    \"customerProfile\"",[671,2193,2133],{"class":677},[671,2195,2196],{"class":692},"\"Tillo API\"",[671,2198,2139],{"class":677},[671,2200,2201,2204,2206,2209],{"class":673,"line":793},[671,2202,2203],{"class":2121},"    \"productNumber\"",[671,2205,2133],{"class":677},[671,2207,2208],{"class":692},"\"ABC-25-EUR\"",[671,2210,2139],{"class":677},[671,2212,2213,2216,2218,2221],{"class":673,"line":803},[671,2214,2215],{"class":2121},"    \"amount\"",[671,2217,2133],{"class":677},[671,2219,2220],{"class":692},"\"25.00\"",[671,2222,2139],{"class":677},[671,2224,2225,2228,2230,2233],{"class":673,"line":813},[671,2226,2227],{"class":2121},"    \"currency\"",[671,2229,2133],{"class":677},[671,2231,2232],{"class":692},"\"EUR\"",[671,2234,2139],{"class":677},[671,2236,2237,2240,2242,2245],{"class":673,"line":828},[671,2238,2239],{"class":2121},"    \"orderNumber\"",[671,2241,2133],{"class":677},[671,2243,2244],{"class":692},"\"CAD-123456\"",[671,2246,2139],{"class":677},[671,2248,2249,2252,2254,2257],{"class":673,"line":842},[671,2250,2251],{"class":2121},"    \"orderState\"",[671,2253,2133],{"class":677},[671,2255,2256],{"class":692},"\"CREATED\"",[671,2258,2139],{"class":677},[671,2260,2261,2264,2266],{"class":673,"line":852},[671,2262,2263],{"class":2121},"    \"voucherDataPresent\"",[671,2265,2133],{"class":677},[671,2267,2268],{"class":2121},"false\n",[671,2270,2271],{"class":673,"line":867},[671,2272,2273],{"class":677},"  },\n",[671,2275,2276,2279],{"class":673,"line":882},[671,2277,2278],{"class":2121},"  \"retrieve\"",[671,2280,2125],{"class":677},[671,2282,2283,2285,2287,2290],{"class":673,"line":892},[671,2284,2130],{"class":2121},[671,2286,2133],{"class":677},[671,2288,2289],{"class":692},"\"getVouchersForOrder\"",[671,2291,2139],{"class":677},[671,2293,2294,2296,2298,2301],{"class":673,"line":907},[671,2295,2144],{"class":2121},[671,2297,2133],{"class":677},[671,2299,2300],{"class":692},"\"2026-08-21T16:05:04Z\"",[671,2302,2139],{"class":677},[671,2304,2305,2307,2309,2312],{"class":673,"line":916},[671,2306,2156],{"class":2121},[671,2308,2133],{"class":677},[671,2310,2311],{"class":692},"\"2026-08-21T16:05:05Z\"",[671,2313,2139],{"class":677},[671,2315,2316,2318,2320,2322],{"class":673,"line":926},[671,2317,2168],{"class":2121},[671,2319,2133],{"class":677},[671,2321,2173],{"class":692},[671,2323,2139],{"class":677},[671,2325,2326,2328,2330,2332],{"class":673,"line":936},[671,2327,2180],{"class":2121},[671,2329,2133],{"class":677},[671,2331,2173],{"class":692},[671,2333,2139],{"class":677},[671,2335,2336,2338,2340,2342],{"class":673,"line":946},[671,2337,2191],{"class":2121},[671,2339,2133],{"class":677},[671,2341,2196],{"class":692},[671,2343,2139],{"class":677},[671,2345,2346,2348,2350,2352],{"class":673,"line":1506},[671,2347,2239],{"class":2121},[671,2349,2133],{"class":677},[671,2351,2244],{"class":692},[671,2353,2139],{"class":677},[671,2355,2357,2360,2362,2365],{"class":673,"line":2356},24,[671,2358,2359],{"class":2121},"    \"responseState\"",[671,2361,2133],{"class":677},[671,2363,2364],{"class":692},"\"SUCCESS\"",[671,2366,2139],{"class":677},[671,2368,2370,2372,2374],{"class":673,"line":2369},25,[671,2371,2263],{"class":2121},[671,2373,2133],{"class":677},[671,2375,2376],{"class":2121},"true\n",[671,2378,2380],{"class":673,"line":2379},26,[671,2381,2382],{"class":677},"  }\n",[671,2384,2386],{"class":673,"line":2385},27,[671,2387,2388],{"class":677},"}\n",[454,2390,2392],{"id":2391},"settings","Settings",[650,2394,2396],{"id":2395},"processor-settings","Processor settings",[450,2398,2399,2400,660],{},"The processor-level settings are environment-backed values in ",[508,2401,2402],{},"config\u002Fcadooz.php",[465,2404,2405,2418],{},[468,2406,2407],{},[471,2408,2409,2412,2415],{},[474,2410,2411],{},"Setting",[474,2413,2414],{},"Environment variable",[474,2416,2417],{},"Purpose",[481,2419,2420,2432,2444,2457,2470,2483],{},[471,2421,2422,2424,2429],{},[486,2423,2005],{},[486,2425,2426],{},[508,2427,2428],{},"CADOOZ_CUSTOMER_PROFILE_NAME",[486,2430,2431],{},"Cadooz profile included in create and retrieval requests",[471,2433,2434,2437,2441],{},[486,2435,2436],{},"API URI",[486,2438,2439],{},[508,2440,659],{},[486,2442,2443],{},"SOAP endpoint used for all Cadooz calls",[471,2445,2446,2449,2454],{},[486,2447,2448],{},"Namespace host",[486,2450,2451],{},[508,2452,2453],{},"CADOOZ_NAMESPACE_HOST",[486,2455,2456],{},"XML namespace used in generated SOAP payloads",[471,2458,2459,2462,2467],{},[486,2460,2461],{},"Timeout",[486,2463,2464],{},[508,2465,2466],{},"CADOOZ_TIMEOUT",[486,2468,2469],{},"HTTP client timeout",[471,2471,2472,2475,2480],{},[486,2473,2474],{},"Username",[486,2476,2477],{},[508,2478,2479],{},"CADOOZ_USERNAME",[486,2481,2482],{},"HTTP Basic Authentication username",[471,2484,2485,2488,2493],{},[486,2486,2487],{},"Password",[486,2489,2490],{},[508,2491,2492],{},"CADOOZ_PASSWORD",[486,2494,2495],{},"HTTP Basic Authentication password",[450,2497,2498],{},"The HTTP client sends the username and password as Basic Authentication. Verify the endpoint, namespace, customer profile, and credentials as a consistent environment-specific set. Do not enter processor credentials as brand settings or expose them in support responses.",[650,2500,2502],{"id":2501},"brand-settings","Brand settings",[450,2504,2505],{},"Each Cadooz-enabled brand must have a product-number attribute for every denomination that can be ordered. The attribute name is generated using the Cadooz format:",[662,2507,2512],{"className":2508,"code":2510,"language":2511,"meta":667},[2509],"language-text","cadooz-denomination-sku-%.2f\n","text",[508,2513,2510],{"__ignoreMap":667},[450,2515,2516,2517,2520,2521,2524,2525,2527,2528,2530],{},"For example, a ",[508,2518,2519],{},"25"," face-value request resolves ",[508,2522,2523],{},"cadooz-denomination-sku-25.00","; its stored value must be the matching Cadooz ",[508,2526,582],{},". The face value is also sent in the SOAP ",[508,2529,2041],{}," field and is rounded\u002Fformatted to two decimal places.",[450,2532,2533],{},"If the attribute is absent, the denomination format is wrong, or the value belongs to another product or market, the order can fail even when the processor credentials are valid. Confirm the brand, denomination, currency, and Cadooz product number together before enabling sales.",[454,2535,2537],{"id":2536},"catalog-operations","Catalog operations",[450,2539,2540],{},"The application exposes these Cadooz SOAP operations:",[465,2542,2543,2555],{},[468,2544,2545],{},[471,2546,2547,2549,2552],{},[474,2548,1759],{},[474,2550,2551],{},"Use",[474,2553,2554],{},"Request data",[481,2556,2557,2569,2581,2594],{},[471,2558,2559,2563,2566],{},[486,2560,2561],{},[508,2562,560],{},[486,2564,2565],{},"Start a voucher order",[486,2567,2568],{},"Customer profile, product number, amount, currency, and download delivery",[471,2570,2571,2575,2578],{},[486,2572,2573],{},[508,2574,614],{},[486,2576,2577],{},"Retrieve the voucher for an existing order",[486,2579,2580],{},"Customer profile and Cadooz order number",[471,2582,2583,2588,2591],{},[486,2584,2585],{},[508,2586,2587],{},"getAvailableCatalogs",[486,2589,2590],{},"Retrieve catalog data",[486,2592,2593],{},"Namespace host; the application requests extra content",[471,2595,2596,2601,2604],{},[486,2597,2598],{},[508,2599,2600],{},"getAvailableProducts",[486,2602,2603],{},"Retrieve products for a customer profile",[486,2605,2606],{},"Namespace host and customer profile",[450,2608,2609],{},"For local catalog inspection, run:",[662,2611,2615],{"className":2612,"code":2613,"language":2614,"meta":667,"style":667},"language-shell shiki shiki-themes github-dark github-light","php artisan catalog:generate-cadooz-catalog-csv\n","shell",[508,2616,2617],{"__ignoreMap":667},[671,2618,2619,2622,2625],{"class":673,"line":674},[671,2620,2621],{"class":685},"php",[671,2623,2624],{"class":692}," artisan",[671,2626,2627],{"class":692}," catalog:generate-cadooz-catalog-csv\n",[450,2629,2630,2631,2633,2634,2637],{},"The command is intentionally restricted to local environments. It calls ",[508,2632,2587],{}," with ",[508,2635,2636],{},"includeExtraContent=true"," and writes a timestamped CSV to local storage. The export includes product references, denomination-to-variation mappings, categories, English and German descriptions\u002Finstructions, redemption methods, expiry, quantity limits, and logo\u002Fvoucher\u002Fredemption URLs. It is a catalog inspection tool, not a per-sale retry mechanism.",[454,2639,2641],{"id":2640},"customer-service-investigation","Customer-service investigation",[450,2643,2644],{},"Collect the following before re-ordering or escalating:",[567,2646,2647,2650,2653,2659,2665,2668,2671],{},[570,2648,2649],{},"Internal sale UUID and transaction reference.",[570,2651,2652],{},"Brand slug, requested face value, currency, delivery method, and sale status.",[570,2654,2655,2656,2658],{},"The resolved ",[508,2657,578],{}," attribute name and redacted product number.",[570,2660,2661,2662,2664],{},"The processor reference, which should be the Cadooz ",[508,2663,598],{}," after creation.",[570,2666,2667],{},"Create and retrieval audit records, including request\u002Fresponse timestamps, SOAP operation, endpoint, redacted payloads, HTTP result or mapped exception, and provider state\u002Fmessage.",[570,2669,2670],{},"The configured customer profile and environment\u002Fcredential status, without exposing credentials.",[570,2672,2673,2674,2676,2677,1692],{},"Returned voucher-field presence, especially whether ",[508,2675,537],{}," included a non-empty ",[508,2678,508],{},[450,2680,2681],{},"Use the first provider operation to classify the issue:",[1697,2683,2684,2697,2708,2713,2719,2724,2732,2735],{},[570,2685,2686,2687,2689,2690,2633,2692,551,2694,2696],{},"If ",[508,2688,560],{}," returned an ",[508,2691,598],{},[508,2693,550],{},[508,2695,554],{},", treat the order as accepted\u002Fpending and retrieve that order; do not create another order.",[570,2698,2699,2700,633,2702,2704,2705,2707],{},"If retrieval returned ",[508,2701,632],{},[508,2703,636],{},", or ",[508,2706,640],{},", the order may still complete through the asynchronous retry flow.",[570,2709,2699,2710,2712],{},[508,2711,1237],{}," but no non-empty code, treat it as a response-validation or provider-completion issue and reconcile with Cadooz before repeating.",[570,2714,2715,2716,2718],{},"If creation returned ",[508,2717,1842],{},", first locate the existing order associated with the request; this state is not permission to submit a second purchase.",[570,2720,2715,2721,2723],{},[508,2722,1833],{},", compare the product number, denomination, currency, customer profile, and catalog record.",[570,2725,2715,2726,2728,2729,2731],{},[508,2727,1830],{}," or retrieval returned ",[508,2730,1897],{},", verify the environment credentials and customer profile with Cadooz.",[570,2733,2734],{},"If only a retrieval audit exists, verify that a preceding create audit exists and that the order number came from that create response.",[570,2736,2737],{},"If no provider audit exists, investigate processor selection, brand SKU resolution, configuration loading, and request dispatch before contacting Cadooz.",[450,2739,2740,2741,2743],{},"Do not manually retry by creating a new Cadooz order until the existing create attempt has been reconciled. A second ",[508,2742,560],{}," call can create a duplicate purchase; retrieval should continue using the existing processor reference.",[454,2745,2747],{"id":2746},"limitations-and-escalation-evidence","Limitations and escalation evidence",[450,2749,2750],{},"Cadooz balance and cancellation transactions are not implemented by this processor. A request for either operation must follow the applicable refund, cancellation, or balance-verification procedure rather than being sent through a Cadooz processor transaction.",[450,2752,2753],{},"Escalations should include the internal sale identifier, Cadooz order number if available, customer profile, timestamps, SOAP operation, endpoint, provider state\u002Fmessage, and redacted audit evidence. Never include Basic Authentication credentials, unredacted voucher codes, or PINs in a ticket.",[454,2755,2757],{"id":2756},"related-code","Related code",[1697,2759,2760,2766,2772,2778,2784,2790,2796,2802,2807,2813,2819,2825],{},[570,2761,2762,2765],{},[508,2763,2764],{},"app\u002FProcessors\u002FCadooz\u002FCadoozProcessor.php"," — order and voucher lifecycle, state validation, response parsing, and card mapping.",[570,2767,2768,2771],{},[508,2769,2770],{},"app\u002FHttp\u002FClients\u002FCadooz\u002FCadoozApi.php"," — authenticated SOAP transport and Cadooz operations.",[570,2773,2774,2777],{},[508,2775,2776],{},"app\u002FHttp\u002FClients\u002FCadooz\u002FRawCadoozResponseData.php"," — encoding conversion and XML parsing.",[570,2779,2780,2783],{},[508,2781,2782],{},"app\u002FHttp\u002FClients\u002FCadooz\u002FRequests\u002FCreateOrderRequestData.php"," — create-order SOAP payload and amount formatting.",[570,2785,2786,2789],{},[508,2787,2788],{},"app\u002FHttp\u002FClients\u002FCadooz\u002FRequests\u002FGetVouchersForOrderRequestData.php"," — voucher-retrieval SOAP payload.",[570,2791,2792,2795],{},[508,2793,2794],{},"app\u002FHttp\u002FClients\u002FCadooz\u002FRequests\u002FGetAvailableCatalogsRequestData.php"," — catalog SOAP payload.",[570,2797,2798,2801],{},[508,2799,2800],{},"app\u002FHttp\u002FClients\u002FCadooz\u002FRequests\u002FGetAvailableProductsRequestData.php"," — product SOAP payload.",[570,2803,2804,2806],{},[508,2805,2402],{}," — processor environment settings.",[570,2808,2809,2812],{},[508,2810,2811],{},"app\u002FConsole\u002FCommands\u002FGenerateCadoozCatalogCsv.php"," — local catalog export.",[570,2814,2815,2818],{},[508,2816,2817],{},"openapi\u002Fcadooz-business-order-v1.6.yaml"," — provider API contract included in the repository.",[570,2820,2821,2824],{},[508,2822,2823],{},"tests\u002FFeature\u002FProcessors\u002FCadooz\u002FCadoozProcessorTest.php"," — lifecycle, state, validation, and audit scenarios.",[570,2826,2827,2830],{},[508,2828,2829],{},"tests\u002FUnit\u002FApp\u002FHttp\u002FClients\u002FCadooz\u002FRequests\u002F"," — SOAP request payload tests.",[2832,2833,2834],"style",{},"html pre.shiki code .sQ3_J, html code.shiki .sQ3_J{--shiki-dark:#E1E4E8;--shiki-default:#24292E}html pre.shiki code .sZkSk, html code.shiki .sZkSk{--shiki-dark:#85E89D;--shiki-default:#22863A}html pre.shiki code .s-Z4r, html code.shiki .s-Z4r{--shiki-dark:#B392F0;--shiki-default:#6F42C1}html pre.shiki code .sg6BJ, html code.shiki .sg6BJ{--shiki-dark:#9ECBFF;--shiki-default:#032F62}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s0DvM, html code.shiki .s0DvM{--shiki-dark:#79B8FF;--shiki-default:#005CC5}",{"title":667,"searchDepth":719,"depth":719,"links":2836},[2837,2838,2839,2845,2846,2847,2848,2852,2853,2854,2855],{"id":456,"depth":707,"text":457},{"id":564,"depth":707,"text":565},{"id":644,"depth":707,"text":645,"children":2840},[2841,2842,2843,2844],{"id":652,"depth":719,"text":653},{"id":959,"depth":719,"text":960},{"id":1125,"depth":719,"text":1126},{"id":1230,"depth":719,"text":1231},{"id":1525,"depth":707,"text":1526},{"id":1746,"depth":707,"text":1747},{"id":1919,"depth":707,"text":1920},{"id":2391,"depth":707,"text":2392,"children":2849},[2850,2851],{"id":2395,"depth":719,"text":2396},{"id":2501,"depth":719,"text":2502},{"id":2536,"depth":707,"text":2537},{"id":2640,"depth":707,"text":2641},{"id":2746,"depth":707,"text":2747},{"id":2756,"depth":707,"text":2757},{},"md",{},{"title":377,"description":452},"eaajjGKapnnVXtK2oYUSpiTITvsixFEBwev_4lpZJsw",[2862,2863],{"title":373,"path":374,"stem":375,"children":-1},{"title":381,"path":382,"stem":383,"children":-1},1789777548881]