Prerequisites
Before you begin, make sure you have the following:
- An active Linkly Cloud account (sign up at cloud.linkly.com.au)
- A compatible EFTPOS terminal paired with Linkly Cloud
- Linkly Cloud API credentials (username & password)
- Odoo 17, 18, or 19 with the Point of Sale module installed
- A bank journal configured in Odoo for EFTPOS payments
Setup
Follow these steps to install and configure the module.
Install the Module
Upload the module ZIP to your Odoo instance (or extract it into your addons path). Go to Apps, click Update Apps List, then search for 'Linkly EFTPOS' and click Install.
Create a Linkly Payment Method
Navigate to Point of Sale → Configuration → Payment Methods. Create a new payment method and set the terminal type to 'Linkly'. Fill in the POS Name, POS Version, POS ID, and POS Vendor ID fields (these identify your POS system to Linkly).
Pair Your EFTPOS Terminal
On the payment method form, click the 'Pin Pad Pairing' button in the header. Enter your Linkly Cloud username, password, and the pair code shown on your physical EFTPOS terminal. Click Submit. On success, the module stores the authentication secret.
Configure User Access
On the payment method, add users to 'Allowed Users (Payments)' and 'Allowed Users (Refunds)' to control who can process each type of transaction. Leave empty to allow all users.
Add to POS Configuration
Go to Point of Sale → Configuration → Settings (or your POS config). Under Payment Methods, add your new Linkly payment method. Save and open a new POS session.
Configure a Bank Journal
For invoice payments, ensure you have a Bank-type journal with inbound and outbound payment methods enabled. This journal will be selected when paying invoices via the Linkly wizard.
Using in Point of Sale
How to take payments, process refunds, and reprint receipts at the POS.
Taking a POS Payment
At the POS checkout, select the Linkly payment method and enter the amount (or use the full order total). Click 'Send'. The amount is pushed to your EFTPOS terminal. The customer taps/inserts their card. Once approved, the payment is recorded and an EFTPOS receipt is generated.
Processing a POS Refund
From the POS, open the ticket/order to refund. Select the Linkly payment method for the refund amount. The module sends a refund transaction to the terminal referencing the original transaction. The customer presents their card and the refund is processed.
Reprinting an EFTPOS Receipt
On a completed POS payment line that was made via Linkly, click the print icon. The module calls the Linkly API to re-fetch the receipt text from the terminal session and displays it.
Using with Invoices & Credit Notes
Pay invoices and process credit note refunds directly from the Odoo backend.
Paying an Invoice via Linkly
Open a posted customer invoice. Click 'Pay with Linkly' in the header. A wizard appears with the invoice amount pre-filled. Select your Linkly payment method and bank journal. Optionally tick 'AMEX Card' for a surcharge. Click Confirm. The amount is sent to your terminal, and once approved, a payment is created and reconciled with the invoice.
Refunding a Credit Note via Linkly
Open a posted credit note. Click 'Refund with Linkly'. Enter the refund amount, select the payment method and journal, and optionally provide the original transaction reference. Click Confirm. The terminal processes the refund and Odoo creates and reconciles the outbound payment.
Transaction Management
View history and query transaction status.
Viewing Transaction History
Navigate to Point of Sale → Linkly EFTPOS → Transactions. Here you can see every transaction with its state (draft, pending, done, cancelled, failed), amounts, references, and full request/response data.
Querying Transaction Status
Go to Point of Sale → Linkly EFTPOS → Transaction Status. Select a payment method and optionally enter a transaction reference (leave blank to fetch the last transaction). Click 'Fetch Status' to retrieve the current status from the terminal.
💡 Tips & Best Practices
Use Test Mode first — toggle 'Linkly Test Mode' on the payment method to use the sandbox environment until you're confident everything works.
Keep your Linkly Cloud credentials secure — the pairing secret is stored on the payment method record and used for all API authentication.
Check the transaction log if something goes wrong — every API request and response is stored on the linkly.transaction record for debugging.
AMEX surcharges are applied at the payment level, not the invoice level — the original invoice amount is reconciled correctly while the surcharge is handled separately.
If the terminal shows 'Busy' (code BY), wait for the current transaction to complete or cancel it on the terminal before retrying.
Ready to get started?
Purchase the module and have it running in minutes.