{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-vas/vas.sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Design considerations","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"design-considerations"},"children":["Design considerations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A number of business and technical decisions must be made before integrating with the Electrum Digital Vouchers Service. The outcome of these decisions will impact the design of the originating system, and how the Electrum platform needs to be configured. The following sections outline various items that need to be considered with respect to online transaction switching and back-office processing. For further details of the product features and available options, read the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/vas/public/digital-vouchers/product-overview"},"children":["Product Overview"]}," page."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Important"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the design decisions have been made, these need to be documented and shared with Electrum in a Business Requirements Document."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your design may require support for an option that is not specified here, for example, an additional service provider, payment provider, or routing rule. If this is the case, then raise a feature request with Electrum to facilitate the necessary development."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"online-transaction-processing"},"children":["Online Transaction Processing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The table below summarises the choices that determine how the Electrum Switch is configured for processing requests from an originating system in real time."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Feature"},"children":["Feature"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Options"},"children":["Options"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Decisions and Actions"},"children":["Decisions and Actions"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Service providers"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Netcare"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Stellr"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Lottostar"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Hollywoodbets"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Supabets"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OTT"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Yoyo"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Blu Voucher"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Betway"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Flash"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Decide which service providers you wish to interact with."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Discuss commercial agreements directly with the selected service providers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Channels"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Point of sale (POS)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Digital"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Decide which transaction initiation channels you will be supporting."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ensure your channel development teams are familiar with the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://docs.electrumsoftware.com/openapi/suv/swagger"},"children":["Electrum Single Use Vouchers Service Interface"]}," and implementation guidelines."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Product list (catalogue)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You can maintain your list of available products through Electrum's catalogue management feature or you can use your own catalogue system."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Decide on whether you want to manage your product list via Electrum's catalogue management feature."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["If you decide to use Electrum's catalogue then you will need to implement product lookup transactions."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional transactions"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Product lookups (if using Electrum's catalogue management feature)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Voucher lookups and redemptions"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Decide which optional transactions you wish to implement."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Messaging"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Single messaging"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Dual messaging"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["This will depend on the channels used and on business needs."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Connectivity and security"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HTTPS using basic authentication or OAuth2"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HTTPS using basic authentication or OAuth2 with mTLS1.2+"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Connection via VPN"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Decide on which method you wish to use for securing communication between the originating system and the Electrum API."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"electrums-catalogue-management"},"children":["Electrum's Catalogue Management"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["It is important to maintain an up-to-date catalogue listing the full array of digital voucher products offered, especially where there are many products offered by one or more service providers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Electrum can help you set up your initial product catalogue. The catalogue lists the full range of voucher products and their associated codes, and also indicates the mappings where a single product has different client and service provider product codes."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If there are changes to the product list (e.g., a service provider adds additional products to their offering and you want to offer these to your customers) the service provider can notify you. You can access your catalogue via the Electrum Console and make changes as required."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In order for you to retrieve your built-in list of products, you will need to perform a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lookupProducts"]}," call. This can be done frequently or infrequently depending on circumstances:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If your system is not able to save the catalogue, then you will need to perform the call each time you need to access the catalogue."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If there are frequent updates to the product list then you will need to perform this call frequently to ensure you have the latest product list."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the product list has not changed and your system is able to save the catalogue then you do not need to perform this call again – you can simply refer to the stored catalogue."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"electrum-finance"},"children":["Electrum Finance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Processes that happen after transactions have been completed in real time include reconciliation, reporting, and settlement. The items listed below need to be considered to inform how Electrum Finance is configured for handling these processes."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Input file specifications for transaction matching"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Transaction matching rules"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Reporting requirements"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Details of the parties involved in each process,"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Time-based rules (e.g., reconciliation period, automatic exception resolution, transaction expiry)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Settlement posting requirements to finance system"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure that the requirements for the above have been agreed upon with Electrum before proceeding with your implementation. Read more about the Electrum Finance processes ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/vas/public/electrum-finance/electrum-finance-overview"},"children":["here"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"potential-financial-risks"},"children":["Potential Financial Risks"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Important"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Electrum's APIs, and those of many providers, are not idempotent. This means that provision or purchase (financially impacting) transactions that fail or time out cannot be repeated without potentially incurring further financial obligations."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Stellr does not support ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/vas/public/advanced-topics/reversals-and-refunds"},"children":["reversals"]},". Once a voucher is issued it is considered to be exposed (and therefore must be paid for). If Stellr issues a voucher and a timeout occurs downstream, then the originating system will not receive the voucher – however the originating system may still be liable for the cost depending on the commercial contract between the two parties."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This risk can be mitigated through commercial agreements between the originating system and service provider – stating, for example, that discrepancies can be settled during mark-up/mark-off reconciliation in favour of one party or the other, or a mix."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Recommendation"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We recommend that originating systems implement ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/vas/public/advanced-topics/reversals-and-refunds#retries"},"children":["retries"]},". In the event of a timeout, the originating system can retry the transaction for as many times as required to retrieve the voucher that was issued but not received. Retries are idempotent, meaning that they do not create new transactions (with associated financial liability), but rather try to retrieve a previous transaction."]}]}]},"headings":[{"value":"Design considerations","id":"design-considerations","depth":1},{"value":"Online Transaction Processing","id":"online-transaction-processing","depth":2},{"value":"Electrum's Catalogue Management","id":"electrums-catalogue-management","depth":2},{"value":"Electrum Finance","id":"electrum-finance","depth":2},{"value":"Potential Financial Risks","id":"potential-financial-risks","depth":2}],"frontmatter":{"seo":{"title":"Design considerations"}},"lastModified":"2026-01-28T10:41:29.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/vas/public/digital-vouchers/integrate-your-channel/design-considerations","userData":{"isAuthenticated":false,"teams":["anonymous"]}}