Ad account connections
The ad account time zone differs from your reporting time zone
“Account timezone [account time zone] differs from reporting timezone [your time zone]. Ad account and store must use the same timezone, or daily profit would split days in the wrong place.”
Balanik matches ad spend to your sales day by day, so both must use the same time zone. Your reporting time zone shows at the end of the tab bar, next to your currency. Connect an ad account that uses that same time zone.
Meta access expired or was revoked
“Meta access expired or was revoked. Reconnect the account.”
For other platforms the message is “Access denied or expired. Check the account connection.” The dashboard also shows a needs reconnecting warning with a Reconnect account button. Profit keeps using the spend saved so far, which may be out of date.
Create a new token with access to the ad account. For Meta, use a system user token with ads_read and expiry set to Never. Then open Ad spend, choose Replace access token and paste it. Your saved history stays. See Connect Meta Ads.
The provider’s rate limit was reached
“Provider rate limit reached. Wait a few minutes before retrying.”
The ad platform has had too many requests in a short time. Wait a few minutes and import again. Nothing is lost.
The provider could not be reached
“Provider could not be reached. Saved data has been kept.”
Your server couldn’t connect to the ad platform. This is often a short outage, so try again later. If it keeps happening, ask your host whether your site may make outgoing HTTPS requests.
A request failed with an HTTP code
“Provider request failed (HTTP [code]). Check account access and API version.”
Check that the account ID is right and that the token can read reports for that account. Also check that the API version in the connection form is one the platform still supports. Meta versions look like v25.0.
The account currency or time zone changed
“Account currency or timezone changed. Review the connection before importing.”
The ad account no longer matches what Balanik saved when you connected it. If the time zone changed, it must match your reporting time zone again. If the currency changed, save the connection again with a fresh token. If the new currency differs from your store’s, add an exchange rate in Costs.
Google Ads Script
The script’s replies appear in its log in Google Ads, next to the script.
The status says “Waiting for first run”
Your site hasn’t received anything from the script yet. In Google Ads, open the script, press Preview once, then Run. Set the frequency to Hourly. When spend arrives, the status changes to Receiving.
“Unknown or revoked token.”
The key inside the script doesn’t match the one your site expects. This happens after you create a new script, which switches the old key off. Copy the newest script into Google Ads, or press Create a new script and replace the old one.
“One push per minute. Schedule the script hourly.”
The script ran twice within a minute. Set its frequency to Hourly. The next run goes through.
If the log says the Google Ads account time zone differs from the store time zone, see the time zone fix above.
Spend feeds and CSV files
The spend feed could not be reached
“The spend feed could not be reached. Saved spend is kept.”
Your server couldn’t load the feed. Open the link yourself to check it still works, then import again.
The spend feed refused access
“The spend feed refused access. Check the link or API key.”
For Windsor.ai, copy the API key from your Windsor account again and save a new feed. For a Google Sheet, make sure it is published to the web as a CSV.
The spend feed answered with an HTTP code
“The spend feed answered with HTTP [code]. Saved spend is kept.”
The feed’s server returned an error. A 404 usually means the link has changed. Other codes often clear up on their own, so try again later.
If the file loads but the columns aren’t recognized, you’ll see “The spend file needs a date column, a spend column and a campaign column.”
The CSV upload asks for columns
“Expected columns: date,campaign_id,campaign_name,currency,spend”
The first row of an uploaded CSV must be exactly that header, in that order and in lowercase. Dates use YYYY-MM-DD. Amounts use a decimal point and no thousands separator. A file can have up to 5,000 rows and 1 MB. Each campaign can appear once per date.
Costs and currencies
Product costs are missing
The headline shows Incomplete · costs missing, and the ledger says some order lines have no product cost. Balanik leaves those lines out rather than count them as free.
Open Products. The card Add missing product costs lists the products concerned. Enter a unit cost and the date it applies from. You can also record costs in your cost-of-goods plugin. Costs are also missing when you have no default cost rule dated on or before an order. See Product costs.
Orders in another currency are excluded
An order explanation says “This order uses another currency and is excluded from reporting.” The calculation notes count these as foreign-currency records.
Balanik reports in one currency, the store currency at activation. Orders in other currencies are left out. This version doesn’t support multi-currency checkout.
Ad spend in another currency works, but it needs a dated exchange rate first. Without one you’ll see “Add an exchange rate for [currency] on or before [date].” Add it in Costs.
Live view and email
Live totals are paused
“More than 200 orders or refunds since yesterday: live totals are paused to avoid showing a partial number. Overview has the full report.”
The live view reads up to 200 paid orders since the start of yesterday and 200 refunds today. On busier days, open Overview and choose Today.
The summary email doesn’t arrive
Tick Send a test email now and save. If you see “The test email could not be sent. Check that this site can send email.”, check your site’s email delivery. An SMTP plugin or email sending service usually fixes it. Also look in your spam folder. See Summary email and background refresh.
Figures don’t match your payouts
Balanik measures something different from your payment provider’s payouts. Check these points:
- Tax. Revenue excludes tax. It includes the shipping and fees customers paid, after discounts.
- Which orders. Processing, completed and refunded orders count, on the day they were paid. Other statuses are left out.
- Refunds. A refund lowers revenue on the day you refund it, not on the day of the order.
- Timing. Payouts arrive on the provider’s schedule, after its fees. Compare the same dates, in your reporting time zone.
- Profit. Profit also takes off product costs, shipping, ads and overhead. It is an estimate before income tax, not your accounts.
To see where one order’s figures come from, open it in Orders.