Contents
What is this integration?
The Adaco integration (Adaco is the procurement and inventory system for hospitality) connects Golfmanager's stock and sales with Adaco, automatically and in both directions:
Adaco → Golfmanager: product stock levels are updated in Golfmanager based on the quantities held in Adaco. In addition, new products that exist in Adaco but not yet in Golfmanager are created automatically.
Golfmanager → Adaco: the sales made in Golfmanager are sent to Adaco (as a file) so the system can track consumption.
This way, Adaco acts as the single source of truth for inventory, while Golfmanager keeps it informed of what gets sold. You carry on selling as usual in Golfmanager; inventory and purchasing are managed in Adaco.
"Reconciling stock" means adjusting a product's stock in Golfmanager so it matches the actual quantity reported by Adaco. The integration does this for you: it works out the difference between what Adaco reports and what Golfmanager holds, and applies that adjustment.
What problem does it solve?
Keeps stock up to date without manual counts: Golfmanager automatically mirrors Adaco's quantities.
Avoids entering sales twice: what you sell in Golfmanager reaches Adaco on its own.
Automatically creates new products that exist in Adaco but aren't in Golfmanager yet, complete with price, VAT, barcode and subfamily.
Leaves a trail of every sync: the adjustments, the sales exports and any errors are all recorded in two log screens.
Which systems does it connect, and which way does the data flow?
It connects Golfmanager with Adaco through two automatic daily flows, each over a different technical channel:
Stock sync (Adaco → Golfmanager): Golfmanager connects to Adaco with an API username and password, reads the products and their stock levels per warehouse (Location ID + Site ID), and adjusts the stock. It runs every night, automatically, at around 02:00.
Sales export (Golfmanager → Adaco): Golfmanager generates a CSV file with the day's sales and uploads it to Adaco over SFTP (a secure file-exchange folder). It runs every night, automatically, at around 23:00.
Both flows can also be run manually whenever you need them (see How it works day to day). The flows are independent: if one fails, it doesn't affect the other.
What information is exchanged?
Information | Direction | Purpose |
Products and stock (PLU, description, selling price, VAT, barcode, category and stock quantity per warehouse) | Adaco → Golfmanager | Create any missing products and reconcile (adjust) stock |
Sales (revenue center, category/subfamily, PLU, description, units and amount before taxes) | Golfmanager → Adaco | Let Adaco track consumption and inventory |
Products are identified by their PLU (Adaco's product code), which in Golfmanager corresponds to the product's SKU (reference). Adaco's categories are linked to Golfmanager's subfamilies through the Adaco Category ID. Each warehouse is linked to an Adaco location through its Location ID and Site ID.
Prerequisites (before turning the integration on)
Have an Adaco account with API access (for stock) and SFTP access (for sales).
Have the Adaco module installed in your Golfmanager, along with the warehouse/stock module. If you don't, contact support.
The credentials Adaco provides: the API username and password, and the SFTP details (URL with port, username, password and upload folder).
The Adaco identifiers: the Location ID and Site ID of each warehouse, and the Category ID of each category you want to link to a subfamily.
Matching references: each product's SKU in Golfmanager must be the same as that product's PLU in Adaco.
The right permissions: configuring the integration and viewing the logs requires the manage billing permission.
How to set it up in Golfmanager (step by step)
Setup has four parts: the API credentials, the SFTP details, the identifiers on each warehouse, and linking the subfamilies. The credentials go on the Adaco settings screen; the identifiers go on each warehouse and each subfamily.
Step 1 — API credentials (for the stock sync)
Log in to Golfmanager.
Go to Settings > Adaco, to the Adaco API Credentials section.
Enter the Adaco API Username.
Enter the Adaco API Password.
Save your changes.
Without these details, Golfmanager cannot read stock from Adaco. They are stored encrypted.
Step 2 — SFTP details (for the sales export)
On the same Settings > Adaco screen, go to the Adaco SFTP Details section.
Enter the SFTP URL with port (the address of Adaco's secure server, including the port).
Enter the SFTP Username and Password.
Enter the Upload directory name (the folder on the server where the file is dropped).
Enter the File name. Golfmanager automatically appends the date and the
.csvextension, so each day gets a unique name.Save your changes.
The SFTP username and password are also stored encrypted.
Step 3 — Configure each warehouse
Open the record of each warehouse.
Fill in the Adaco Location ID field with the Adaco location identifier.
Fill in the Adaco Site ID field with the Adaco site identifier.
Save your changes.
⚠️ Important: a warehouse that has no Location ID or Site ID is skipped entirely in the sync (and noted in the error log). If a warehouse isn't updating its stock, check these two fields first.
Step 4 — Link the subfamilies
Open each product subfamily you want to link.
Fill in the Adaco Category ID field with the matching Adaco category.
Save your changes.
This way, the new products the integration creates are filed under the correct subfamily. If an Adaco category isn't linked to any subfamily, the product is still created, but with no subfamily.
Step 5 — Match the references (SKU = PLU)
The integration matches each product by its Adaco PLU against the product's SKU (reference) in Golfmanager. Check that, for every product, the SKU in Golfmanager is exactly the same as the PLU in Adaco. If they don't match, stock won't be adjusted on the right product (and if the PLU doesn't exist in Golfmanager, a new product will be created).
Each configuration field explained
Below, one by one, is every field involved in the integration: what it is, how it affects the system, how it behaves, and an example of use showing what happens when you use it.
API Username
Field name: Username, in the Adaco API Credentials section (Settings > Adaco).
Description: the user Golfmanager identifies itself with to Adaco's API in order to read stock.
System impact: it's one of the two keys to the API. Without it (or if it's wrong), Golfmanager cannot read Adaco's stock and the stock sync fails.
System behavior: it's sent (encrypted) on every API call to Adaco alongside the password.
Example of use / what happens: you enter the username Adaco gives you and save. From then on, the nightly stock sync and the reconcile button can authenticate correctly.
API Password
Field name: Password, in the Adaco API Credentials section.
Description: the password tied to the Adaco API username.
System impact: it completes the API authentication. If it's wrong, Adaco rejects the connection and no stock is read.
System behavior: it's stored encrypted and travels with the username on every request to Adaco.
Example of use / what happens: you enter it, save, and the API connection is ready. If Adaco changes your password, you'll need to update it here or the sync will start failing.
SFTP URL with port
Field name: SFTP URL with port, in the Adaco SFTP Details section.
Description: the address of Adaco's secure SFTP server where the sales file is dropped, including the port number.
System impact: it's the destination for the sales export. Without it (or if it's wrong), the file can't be uploaded and the sales export fails.
System behavior: Golfmanager connects to this address over SFTP to deposit the day's CSV file.
Example of use / what happens: you enter the address with its port (for example,
sftp.adaco.com:22). When sales are sent, the file is uploaded to that server.
SFTP Username
Field name: Username, in the Adaco SFTP Details section.
Description: the user Golfmanager authenticates with on Adaco's SFTP server.
System impact: without a valid user, the SFTP server rejects the connection and sales aren't uploaded.
System behavior: it's stored encrypted and used on every SFTP connection.
Example of use / what happens: you enter it and save. The next sales export (automatic or manual) connects with this user.
SFTP Password
Field name: Password, in the Adaco SFTP Details section.
Description: the password for the SFTP user.
System impact: it completes the SFTP authentication. If it's wrong, the sales export fails and is recorded as failed.
System behavior: it's stored encrypted and accompanies the username on the SFTP connection.
Example of use / what happens: you enter it, save, and the export is ready to run. If Adaco changes it, update it here.
Upload directory name
Field name: Upload directory name, in the Adaco SFTP Details section.
Description: the folder on the SFTP server where Adaco expects to receive the sales file.
System impact: it determines where the file is dropped on the server. If you leave it empty, the file is uploaded to the server root; if you fill it in, it's uploaded inside that folder.
System behavior: Golfmanager builds the destination path by combining this folder with the file name.
Example of use / what happens: if you set
salesand the day's file isSales06222026.csv, the file ends up atsales/Sales06222026.csv. It must match the folder Adaco told you to use.
File name
Field name: File name, in the Adaco SFTP Details section.
Description: the base name of the sales file uploaded to Adaco.
System impact: it defines what each file is called. Golfmanager automatically appends the date and the
.csvextension, so each day produces a differently named file and they don't overwrite each other.System behavior: on export, Golfmanager takes this base name, appends the export date and the extension, and uploads the result.
Example of use / what happens: if you set
Sales, the file for 22 June 2026 will beSales06222026.csv(the date is in month-day-year format).
Adaco Location ID (on each warehouse)
Field name: Adaco Location ID, on the warehouse record.
Description: the identifier of the Adaco location that this Golfmanager warehouse corresponds to.
System impact: together with the Site ID, it's what allows the warehouse's stock to be read from Adaco. If it's missing, the warehouse is skipped across the whole sync.
System behavior: Golfmanager uses the Location ID + Site ID pair to ask Adaco for the products and stock of that specific location.
Example of use / what happens: you fill in the Location ID Adaco gives you for that warehouse. On the next sync, that warehouse starts receiving its stock; while it's empty, the warehouse stays out and appears in the error log.
Adaco Site ID (on each warehouse)
Field name: Adaco Site ID, on the warehouse record.
Description: the identifier of the Adaco site tied to that warehouse.
System impact: it's the second essential identifier. Without it, the warehouse is skipped even if it has a Location ID.
System behavior: it's combined with the Location ID to pinpoint exactly which Adaco location the stock is read from.
Example of use / what happens: you fill in the Site ID Adaco provides and save. With a correct Location ID and Site ID, the warehouse is included in the nightly sync and in the manual reconcile.
Adaco Category ID (on each subfamily)
Field name: Adaco Category ID, on the subfamily record.
Description: the identifier of the Adaco category linked to that Golfmanager subfamily.
System impact: it serves two purposes. (1) When creating new products from Adaco, it files them under the correct subfamily. (2) When exporting sales, it's used as the product's category identifier in the file.
System behavior: when Adaco sends a product with a category, Golfmanager looks for the subfamily whose Category ID matches and assigns it; if it finds none, the product is created with no subfamily.
Example of use / what happens: you link Adaco's "Drinks" category to your "Drinks" subfamily by entering its Category ID. New soft drinks the integration creates will land directly under "Drinks".
Product SKU / Reference (= Adaco PLU)
Field name: SKU (Reference), on the product record.
Description: the product's reference in Golfmanager. It's the field that must match the PLU (product code) in Adaco.
System impact: it's the key that links each Adaco product to its Golfmanager counterpart. It determines which product stock is adjusted on, and which PLU is sent with the sales.
System behavior: on sync, Golfmanager looks for the product whose SKU equals the PLU received. If it finds one, it adjusts its stock; if not, it creates a new product with that SKU.
Example of use / what happens: if water has PLU
WATER50in Adaco, setWATER50as the SKU of water in Golfmanager. From then on, its stock reconciles correctly and its sales travel with that PLU. If the codes don't match, stock isn't adjusted where it should be.
How it works day to day
Once it's set up, the integration runs on its own: each night it syncs the stock (around 02:00) and sends the day's sales (around 23:00). You don't have to do anything. Even so, you can run both processes by hand whenever you need to.
Reconciling stock manually
Open the record of the warehouse you want to update.
Click the Regularize stock using Adaco button.
You'll see the message "Stock regularization started. This may take a few minutes. Check the Adaco error log later for results."
After a few minutes, check the Adaco error log for the result and any issues.
What happens / system behavior: Golfmanager connects to Adaco, reads that warehouse's products and stock, adjusts the stock of the products that match by reference, creates the new products that meet the requirements, and records in the error log anything it couldn't process.
Sending sales manually
Go to Adaco > List sales.
Pick the date range with the period selector (defaults to today). The table shows the sales that will be sent, with columns: Revenue center code, Product name, SKU, Subfamily ID, Units and Total before taxes.
Click Upload sales to Adaco.
If all goes well, you'll see the message "Sales details successfully sent to Adaco". The export is recorded in the sales export log.
What happens / system behavior: Golfmanager takes the sales for the period (stock-controlled products only), builds the CSV file, uploads it over SFTP to the configured folder under the day's name, and records the export. If there are no sales in the period, it warns you with "There is no sales data to export" and uploads nothing.
How to check it's working
Go to Settings > Adaco and confirm the API credentials and SFTP details are saved.
Confirm at least one warehouse has its Location ID and Site ID.
Confirm the subfamilies you want to link have their Category ID.
Open that warehouse and click Regularize stock using Adaco.
Wait a few minutes and open the Adaco error log: if there are no serious issues, the stock will have been adjusted.
Go to Adaco > List sales, leave the period on "today", click Upload sales to Adaco, and confirm that "Sales details successfully sent to Adaco" appears, along with a new entry in the sales export log with a success status.
Reviewing the logs
The Adaco menu includes two logs for reviewing what happened on each sync:
Error Logs: issues from the stock sync. Each entry shows the date, the error type, the warehouse, the affected product's PLU, the Location ID and Site ID, the reason, and whether it was automatic or manual. Errors affecting several products are grouped, showing how many products were affected, with the detail of each one.
Sales Export Logs: each sales export to Adaco, with the date, the status (success, failed or skipped), whether it was automatic or manual, how many sales were sent, the file name, the path on the server, and the error message if there was one.
These are the first screens to check when stock or sales didn't turn out as expected.
Limitations to keep in mind
Warehouses need a Location ID and a Site ID. Without both, that warehouse is skipped entirely.
Products are linked by reference (SKU = PLU). If they don't match exactly, stock isn't adjusted on the right product.
To create a new product from Adaco, three things are required: a PLU, a name, and a VAT rate that already exists in Golfmanager. If any is missing, the product isn't created and is noted in the error log.
Products with no stock or zero stock are skipped in the reconcile.
The sales export only includes stock-controlled products. Sales of products that don't manage stock don't travel in the file.
It depends on external services: if Adaco's API or SFTP isn't reachable, the sync or the export will fail and be recorded.
The sync isn't instant: the automatic processes run once a day (stock around 02:00, sales around 23:00); the rest of the time, stock may differ until the next sync (or until you run it by hand).
The automatic reconcile processes warehouses one at a time, with a pause between them so as not to overload Adaco; with many warehouses, the whole process can take a while.
There's no stock return to Adaco: Golfmanager reports sales, but inventory adjustments and purchasing are handled in Adaco.
Frequently asked questions
What is the PLU, and why does it have to match the SKU?
The PLU is the code Adaco uses to identify each product. In Golfmanager that code corresponds to the product's SKU (reference). The integration relies on that equality to know which Golfmanager product each Adaco product is: it looks for the product whose SKU equals the PLU. If the codes don't match exactly, stock won't be adjusted on the right product, and if the PLU doesn't exist as an SKU in Golfmanager, a new product will be created.
How often is stock updated, and at what time?
The stock sync (Adaco → Golfmanager) runs automatically every night, at around 02:00. Between one sync and the next, Golfmanager's stock may differ from Adaco's. If you need to update it sooner, use the Regularize stock using Adaco button on the warehouse record.
How often are sales sent, and at what time?
The sales export (Golfmanager → Adaco) runs automatically every night, at around 23:00, and includes the day's sales. You can also send them by hand at any time from Adaco > List sales, choosing whatever period you want.
Can I run the sync by hand without waiting for the night?
Yes. For stock, open the warehouse record and click Regularize stock using Adaco. For sales, go to Adaco > List sales, choose the period and click Upload sales to Adaco. Both processes are logged just like the automatic ones, marked as "manual".
A warehouse isn't updating its stock. Why?
The most common cause is that the warehouse is missing its Adaco Location ID or Adaco Site ID. A warehouse without both identifiers is skipped entirely in the sync and noted in the error log with the reason "Invalid LocationId or siteId. Skipping stock regularization". Open the warehouse record, fill in both fields, and save.
The log says "N products do not have a PLU". What does it mean, and what do I do?
It means Adaco sent products with no PLU code, and without a PLU the integration can't identify or reconcile them, so it skips them. The fix is on the Adaco side: review those products and assign their PLU. In the log detail you can see which products are involved.
I see "N products have no tax rate". How do I resolve it?
This appears when the integration tries to create a new product from Adaco but the VAT rate Adaco reports doesn't exist as a tax rate in Golfmanager. Without an equivalent VAT rate, the product isn't created. The fix is to create or adjust the matching tax rate in Golfmanager so its percentage matches the one Adaco sends; on the next sync the product will be able to be created.
I see "N products have no name". What's happening?
These are products Adaco sends with no description. Since a product needs a name to be created, the integration skips them during creation. Add the description for those products in Adaco and they'll be processed again on the next sync.
I see "N products have no stock or have zero stock". Is that an error?
It's not a serious error: it's simply a notice that those products arrive with zero or no stock from Adaco, so they're skipped in the reconcile (nothing is adjusted on them). If you expected them to have stock, check their stock in Adaco.
One particular product's stock isn't adjusting, but the rest are. Why?
Almost always it's because that product's SKU in Golfmanager doesn't match its PLU in Adaco. With no exact match, the integration doesn't adjust its stock (and if the PLU doesn't exist as an SKU, it may have created a new duplicate product). Correct the reference (SKU) so it's identical to the PLU.
I see "No products were found in Adaco for locationId... siteId...". What does it mean?
It means the warehouse's Location ID and Site ID combination is valid enough to connect, but Adaco returned no products for that location. Check in Adaco that those identifiers correspond to the right location and that the location actually has products.
I see "No warehouses were found in Golfmanager". What should I check?
It means no warehouse is configured with a Location ID and Site ID, so the sync has nowhere to apply stock. Configure at least one warehouse with its two Adaco identifiers.
Does the integration create new products on its own? What does it need to create them?
Yes. If Adaco sends a product whose PLU doesn't exist as an SKU in Golfmanager, the integration creates it automatically. To create it, three details are needed: a PLU, a name (description), and a VAT rate that already exists in Golfmanager. If any of the three is missing, it isn't created and the issue is noted in the error log. When it does create the product, it also assigns the selling price and barcode coming from Adaco, and marks it as stock-controlled.
Which subfamily does a new product created from Adaco end up in?
In the subfamily whose Adaco Category ID matches the category Adaco sends. If the Adaco category isn't linked to any subfamily (because you haven't filled in its Category ID), the product is still created, but with no subfamily. That's why it's worth linking all the categories you use.
What price and VAT are assigned to the new product?
The selling price is taken from the price Adaco sends (if none comes through, it stays at 0 and you'll need to review it). The VAT is assigned by finding, among Golfmanager's tax rates, the one matching the percentage Adaco reports; if there's no equivalent, the product isn't created at all (see the "no tax rate" question).
What information travels in the sales file uploaded to Adaco?
For each sales line, the file includes: the revenue center (the POS where it was sold), the category identifier (the subfamily's Category ID), the PLU (the product's SKU), the product description, the units sold, and the amount before taxes. Only stock-controlled products are included.
Some sales don't appear in the file. Why?
The sales export only includes stock-controlled products. Sales of products that don't manage stock (for example, certain services) aren't included in the Adaco file, because Adaco manages inventory. If you expected a product and it's not there, check whether that product has stock control enabled.
What is the uploaded file called, and why does it change every day?
The name is formed from the base name you configured, plus the export date, plus the .csv extension. For example, if the base name is Sales, the file for 22 June 2026 will be Sales06222026.csv (the date is in month-day-year format). It changes every day so exports don't overwrite each other.
When I upload sales I get "There is no sales data to export". What's going on?
It means there are no sales to send in the selected period (for stock-controlled products). No file is uploaded. Check that the selector's period includes days with sales; remember it defaults to "today".
I get "Error sending sales details to Adaco". What should I check?
It means Golfmanager couldn't upload the file over SFTP. The usual cause is that the SFTP URL with port, username, password or upload folder is wrong, or that Adaco's server isn't reachable at that moment. Check those details in Settings > Adaco and try again; the failure detail is kept in the sales export log.
Where do I confirm the sales were actually sent?
In the Sales Export Logs under the Adaco menu. Each export appears with its status (success, failed or skipped), whether it was automatic or manual, how many sales were sent, the file name, the path, and the error message if there was one. It's the reliable way to confirm an export went through.
In the sales log I see an export with a "skipped" status. Is that a problem?
No. The skipped status appears when the automatic export ran but there were no sales to send that day (the recorded reason is "No export sales were found"). No file was generated simply because there was nothing to send.
What happens if Adaco is unavailable when a sync is due?
If the stock API or the sales SFTP doesn't respond, that process fails and is recorded (in the error log or the sales export log, depending on the case). Nothing is lost: on the next automatic run, or by launching it manually, it's tried again.
Can I resend sales from a previous day or a specific period?
Yes. In Adaco > List sales, use the date selector to choose whatever period you want (a single day, several days, a range) and click Upload sales to Adaco. The file with that period's sales will be generated and uploaded.
Does the automatic reconcile take a long time if I have many warehouses?
It can. To avoid overloading Adaco, the automatic sync processes warehouses one at a time with a pause between them. With many warehouses configured, the whole nightly process can take a while; that's not a fault, it's the deliberately controlled pace of the calls.
What permissions do I need to configure the integration and view the logs?
You need the manage billing permission. With it, you can access the Adaco settings screen and both logs (errors and sales export).
Are the credentials I enter stored securely?
Yes. The API username and password and the SFTP username and password are stored encrypted. They aren't shown in plain text once saved.
I changed a product's PLU in Adaco. What happens in Golfmanager?
Since the integration links by the SKU = PLU equality, if you change the PLU in Adaco and don't update the SKU in Golfmanager, the integration will stop finding the existing product and, seeing a "new" PLU, may create a duplicate product. If you change a PLU in Adaco, also update the SKU of the same product in Golfmanager to keep them matched.
Recommended best practices
Match the references before you start: make sure each product's SKU in Golfmanager exactly matches its PLU in Adaco.
Configure every warehouse with its Location ID and Site ID, and every subfamily you use with its Category ID.
Make sure Adaco's VAT rates exist in Golfmanager before the first sync, so new products can be created without problems.
After go-live, review the logs for the first few days to spot products with no VAT, no name or no PLU, and fix them in Adaco.
Use the manual export when you need to catch up a specific period without waiting for the nightly process.
If you change credentials or identifiers in Adaco, update them in Golfmanager too so the integration doesn't start failing.
