{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["tabs","tab","admonition"]},"type":"markdown"},"seo":{"title":"Getting started","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":"getting-started","__idx":0},"children":["Getting started"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Medicare Easyclaim lets a practice submit a Medicare claim from the practice management system"," ","(PMS) and have the Tyro terminal send it to Medicare. Before you begin, review the certification"," ","criteria, which set out the minimum requirements for certifying integrated Medicare Easyclaim with"," ","Tyro: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/assets/certification_criteria_iclient_health.de1992aad6cd97914bb43e39084a8a4b289408d46faa21d159ccd3f2dd420298.d564e73d.pdf"},"children":["Certification Criteria for iClient Health"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The claim types are the same on both libraries. The sections below describe how each one works."," ","Then pick your library for the methods and sample code."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"bulk-bill","__idx":1},"children":["Bulk bill"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the PMS, the staff select the doctor and patient and build up a list of services provided to the patient. Once complete the PMS should determine if the claim can be sent via Easyclaim (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.servicesaustralia.gov.au/medicare-benefits-for-health-professionals?utm_campaign=transformation&utm_content=medicare&utm_medium=website&utm_source=redirect#N10054"},"children":["services not accepted through Medicare"]},"). If it can, invoke the library passing in the bulk bill XML payload. The terminal will then attempt to have the claim validated by Medicare and if validated, the library will ask the practice to accept the amount of the claim and if accepted, the terminal will ask the patient to 'Assign their right to benefit?'. Once the patient presses 'YES' the terminal will return the bulk bill XML response to the PMS. Please note that bulk bill claims are not assessed in real time and as such bulk bill claims will need to be reconciled via Medicare's Bulk Bill Integrated Reconciliation."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"fully-paid","__idx":2},"children":["Fully paid"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the PMS, the staff select the doctor and patient and build up a list of services provided to the patient. Once complete allow the patient to pay for the services provided in full. Once paid ask the patient if they would like to claim the rebate from Medicare in the practice. Ensure that the patient has an EFTPOS card (Cheque or Savings). Invoke the library passing in the fully paid XML payload. The terminal will then attempt to have the claim approved by Medicare and if approved, the terminal will display the benefit amount on the screen and asks the patient to swipe their EFTPOS card followed by selecting CHQ or SAV followed by their PIN. Once approved, the terminal will return the fully paid XML response to the PMS and the rebate is in the patients account in around 11 seconds."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"part-paid","__idx":3},"children":["Part paid"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the PMS, the staff select the doctor and patient and build up a list of services provided to the patient. Once complete allow the patient to pay for part or all of the gap. Once paid invoke the library passing in the part paid XML payload. The terminal will then attempt to have the claim approved by Medicare and if approved, the terminal will return the part paid XML response to the PMS indicating that the claim is approved PDVC."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"bulk-bill-integrated-reconciliation","__idx":4},"children":["Bulk bill integrated reconciliation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Please see the page on ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/medicare-easyclaim/bir-workflow"},"children":["BIR workflow"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"implementation","__idx":5},"children":["Implementation"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"JS library","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Please refer to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/assets/iclient-api.57e262928075df78cfa8a01bd63db2f4b79b8d58736bbb024a56daa62cd686fe.fbf1555a.zip"},"children":["JS library API"]}," for sample EasyClaim code. After"," ","downloading the zip folder, unzip it and click on the iclient-api folder, and then index. At the"," ","top left corner underneath the APIs, click on Classes, and then click on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TYRO.IClientWithUI"]},","," ","scroll down until you see the index and method tabs, then click on index."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Medicare Easyclaim payload specifications are available in the"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/assets/easyclaim_logic_pack_users_guide_v2.0.003bab43fa2ce0a444affe01b081d61c51108243221e99c9d233be4ac10e7b48.d564e73d.pdf"},"children":["EasyClaim Logic Pack Users Guide V2"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"demo","__idx":6},"children":["Demo"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Below is a JS Fiddle demo for Fully Paid, Part Paid, and Bulk Bill Claim."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://jsfiddle.net/IntegrationSupport/tq5v3xp7/14/"},"children":["Demo - JS Fiddle"]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Don't click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]}," if you make changes in the JS Fiddle sample app. Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Run"]}," instead."," ","Clicking Save may break the fiddle's functionality."]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":".NET library","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Medicare Easyclaim payload specifications are available in the"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/assets/easyclaim_logic_pack_users_guide_v2.0.003bab43fa2ce0a444affe01b081d61c51108243221e99c9d233be4ac10e7b48.d564e73d.pdf"},"children":["EasyClaim Logic Pack Users Guide V2"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"methods","__idx":7},"children":["Methods"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Integrated receipts are not supported for Medicare Easyclaims."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Tyro.Integ.Domain.ITransactionResult BulkBillClaim(string payload, bool rightsAssigned)"]},": To commence a bulk bill claim. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}," parameter is the Medicare Easyclaim XML payload for the claim. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rightsAssigned"]}," parameter specifies whether the patient assigned their right to the benefit before seeing the doctor or during the claim process. This feature is for large practices whose workflow is where the patient signs for the claim prior to seeing the doctor and where the patient does not return to reception after being seen by the doctor."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Tyro.Integ.Domain.ITransactionResult BulkBillClaimMidTid(string merchantID, string terminalID, string payload, bool rightsAssigned)"]},": Same as above, but allowing a specific Merchant ID and Terminal ID to be specified, for multi-merchant capable terminals."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Tyro.Integ.Domain.ITransactionResult FullyPaidClaim(string payload)"]},": To commence a fully paid claim. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}," parameter is the Medicare Easyclaim XML payload for the claim."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Tyro.Integ.Domain.ITransactionResult FullyPaidClaimMidTid(string merchantID, string terminalID, string payload)"]},": Same as above, but allowing a specific Merchant ID and Terminal ID to be specified, for multi-merchant capable terminals."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Tyro.Integ.Domain.ITransactionResult PartPaidClaim(string payload)"]},": To commence a part paid claim. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}," parameter is the Medicare Easyclaim XML payload for the claim."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Tyro.Integ.Domain.ITransactionResult PartPaidClaimMidTid(string merchantID, string terminalID, string payload)"]},": Same as above, but allowing a specific Merchant ID and Terminal ID to be specified, for multi-merchant capable terminals."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"return-value","__idx":8},"children":["Return value"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransactionResult"]}," interface contains the following methods:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["boolean ErrorOccurred()"]},": This method returns a flag that indicates whether an error occurred during the transaction. The asynchronous interface will conclude a transaction by either raising a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TransactionCompleted"]}," or an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ErrorOccurred"]}," event, which respectively either indicates that it was possible for the .NET library to discover what the result of the transaction was on the terminal, or that there was some error that prevented the .NET library from discovering what that conclusion was. The synchronous interface supports these interface semantics through this method, which allows the caller to determine whether or not the .NET library was able to follow the transaction to conclusion on the terminal or not. If this flag is false, then the caller should call the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GetTransaction()"]}," method on this object to learn of the final state of the transaction. If the flag is true, then the caller should call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GetError()"]}," to learn of why the transaction failed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransaction GetTransaction()"]},": Call this method if the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ErrorOccurred()"]}," method returned false, meaning that the transaction has completed on the terminal. It returns an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransaction"]}," object with the following methods:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string[] GetReceipts()"]},": A string array of all of the receipts for this transaction, in the order in which they were produced by the terminal. This is always empty for Medicare Easyclaim transactions as integrated receipts are not supported for Medicare Easyclaim transactions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetStatus()"]},": The status of the transaction, as a String. Can be either \"PENDING\" or \"COMPLETE\"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetTransactionReference()"]},": Not used in Medicare Easyclaim transactions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetTipCompletionReference()"]},": Deprecated. Not used in Medicare Easyclaim transactions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetTipAmount()"]},": Not used in Medicare Easyclaim transactions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetAuthorisationCode()"]},": Not used in Medicare Easyclaim transactions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetResult()"]},": The result of this transaction, as a block of XML. Can be also be \"SYSTEM ERROR\" in the case of a system error or \"TRANSACTION CANCELLED\" if the transaction was cancelled."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetCardType()"]},": The card type used in the refund component of the transaction. Currently only EFTPOS cards are acceptable for the refund so this field will always be \"EFTPOS\"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetID()"]},": The identifier for this transaction on the Tyro Terminal."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetEasyclaimTransactionID()"]},": The Medicare Easyclaim transaction ID used. (Only for Medicare Easyclaim integration)."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IError GetError()"]},": Call this method if the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ErrorOccurred()"]}," method returned true, meaning that the .NET library could not determine if the transaction had completed on the Tyro terminal. It returns an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IError"]}," object with the following methods:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetErrorMessage()"]},": A plain English description of the error."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["boolean IsTransactionStarted()"]},": An indication of whether the .NET library has sent the request to commence the transaction. If this is false, then the POS operator does not need to be concerned with finding the final status of the transaction."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string GetTransactionID()"]},": The identifier for this transaction on the Tyro Terminal."]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The .NET library comes with sample applications that show how to use it to integrate with Medicare Easyclaim."]}]}]}]},"headings":[{"value":"Getting started","id":"getting-started","depth":1},{"value":"Bulk bill","id":"bulk-bill","depth":2},{"value":"Fully paid","id":"fully-paid","depth":2},{"value":"Part paid","id":"part-paid","depth":2},{"value":"Bulk bill integrated reconciliation","id":"bulk-bill-integrated-reconciliation","depth":2},{"value":"Implementation","id":"implementation","depth":2},{"value":"Demo","id":"demo","depth":3},{"value":"Methods","id":"methods","depth":3},{"value":"Return value","id":"return-value","depth":3}],"frontmatter":{"title":"Getting started","seo":{"title":"Getting started"}},"lastModified":"2026-10-02T05:06:47.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/in-person-payments/pay-in-person/features/medicare-easyclaim/getting-started","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}