AnchorAnchor
Settings

Online store

Connect Shopify or paste WooCommerce keys, post a daily summary or one invoice per order, and categorise the bank deposit to clearing.

Shopify or WooCommerce can post store sales into Anchor. The usual result is one journal per closed day per payment gateway: gross sales and output VAT on the sale date, and the balance on a clearing account. The money that later hits the bank is categorised to that clearing account, not to sales.

Stock is not pushed back to the store. A gateway settlement file is not imported. An organisation has one store.

Where to manage

Settings → Online store (Integrations). The page heading is Online store.

The sidebar item is shown only while connectors are allowed. If they are off, the page says Online store connectors are turned off. New connections are not accepted. Nothing is fetched or posted. A site administrator turns this on under Admin → Site Settings → Commerce connectors, switch Allow Shopify fetch and post. That switch covers WooCommerce as well.

You need permission to manage integrations (manage:integrations). In support view the page says Support view is read-only. Mappings and keys cannot be changed.

Connect Shopify

  1. Open Settings → Online store.
  2. Under Shopify, enter Shop domain as shop.myshopify.com (your shop’s myshopify.com host, not a custom domain).
  3. Optionally set Start date.
  4. Click Connect Shopify.

If the start you asked for is older than Shopify will return, Anchor does not leave for Shopify yet. It shows this sentence and changes the button to Continue to Shopify:

Shopify is only returning orders from the last 60 days. Older history needs a later app review.

Start date is filled with the clamped day. Click Continue to Shopify and approve the app. Leaving Start date empty asks for 90 days, so you will see that sentence and must click Continue to Shopify. A start date on or after 60 days ago goes straight to Shopify.

The page that comes back is titled Shopify connected. It names the shop and the date orders are read from. When history was clamped, it repeats the 60-day sentence. Back to Anchor returns to the dashboard. If webhook registration did not finish, the same page says backfill can still run. The shop is still connected.

Older than 60 days is not imported on this connection. That is a Shopify limit on the first install, not a promise of 90 days.

One organisation, one store. A second store is refused until the first is disconnected. There is no Disconnect button on this page. Uninstall the Shopify app, or use the MCP tool disconnect_commerce_connection (see API and MCP below). A shop already used by a different organisation cannot be connected here.

Paste WooCommerce keys

Create a WooCommerce REST API key with read access. On Online store, under WooCommerce:

FieldWhat to enter
Site URLPublic https:// address of the shop. No username or password in the URL.
Consumer keyThe WooCommerce key
Consumer secretThe WooCommerce secret
Start dateOptional first day to read

Click Store keys.

The form says Keys are stored after the site address is checked. This does not download orders. The success toast is WooCommerce keys stored. Orders are not pulled from this screen. Paid orders, including WooCommerce orders that are processing once they have a paid date, are pulled on a later sync. Clicking Store keys does not download them.

The address must be a public HTTPS site. A private address, a missing host, or a URL with a username or password is rejected. After a save, the key and secret fields are cleared. The store shows as active.

If the site later rejects the keys, the store becomes disconnected. Anchor emails the owner (WooCommerce store disconnected) and does not post new WooCommerce sales until you connect again. Journals already posted stay.

If webhooks fail repeatedly, the page says Webhooks are off after repeated delivery failures. Catch-up still polls. This is not a disconnected store.

Daily summary or one invoice per order

On the connected store, Posting is Daily summary unless you change it. That is one journal per gateway for each civil day that has already closed in Timezone. South African organisations start as Africa/Johannesburg. Today’s sales wait until that day has closed. The page line reads daily summary per gateway.

Daily summary does not raise a tax invoice per order. Gross sales, output VAT, and any fee the order actually carried are on that journal. The other side is the gateway clearing account (for example PayFast clearing).

One invoice per order is optional and stays off until you set it:

  1. Set Posting to One invoice per order.
  2. Set Per-order cutoff to tomorrow or later in the shop timezone. The hint under the field is: Orders before this date stay on the daily summary. The date has to be tomorrow or later. Summary stays the default.
  3. Click Save settings.

Orders before the cutoff stay on the daily summary. Orders on or after the cutoff become a tax invoice, and a refund becomes a credit note. Already posted history is not rewritten. Saving without a cutoff shows Per-order posting needs a cutoff date.

Per-order invoices use your document numbering. If numbering is not set up, that order is not posted. Each order also needs exactly one customer. If the customer is missing, or the email or phone matches two contacts, that order is not invoiced. Anchor does not pick one and does not merge them.

Save settings also stores Start date, Timezone, Tips (Liability or Income), and Separate POS. Separate POS uses two clearing accounts for the same gateway (online and POS).

Categorise the deposit to clearing

The gateway pays the net into the bank. That line is not sales, and it is not a customer payment against an invoice.

Do not use Match invoice. That increases the bank and reduces debtors. Do not code the deposit to a sales account.

On the bank line:

  1. Click Categorize. The sheet title is Assign to a category.
  2. Set Category to the gateway clearing account. The first post creates one if you have not mapped it: an asset coded 1360–1399, named after the gateway, such as PayFast clearing. It is not a bank account.
  3. Set Tax to No tax. A rate would split the deposit into sales plus output VAT and count VAT twice. Clearing accounts are created with no default tax, so check the field anyway.
  4. Click Assign to category.

You can map the account yourself before the first post. Under Mappings → Gateway clearing, click Add, then type the gateway name, pick an asset in 1360–1399, and click Save mappings. No name field is shown until you click Add. Gateway fees is the same: click Add before typing the name. The mappings note says clearing accounts use codes 1360–1399, and changing an account does not reclass journals already posted. If the previous account still has a posted balance, the page warns and shows that balance in cents.

The same deposit can be accepted from the row menu Find & match (any record). The Gateway clearing block says the bank line hits that gateway’s clearing account, not sales, and shows the open balance.

  • Accept is offered only when the bank amount is within R1.00 of that clearing balance. The toast is Deposit categorised to clearing.
  • Otherwise the row stays, and it says to categorise the deposit amount yourself: accept is only within R1.00 of the clearing balance. Do not hide the row. Do not wait for it to match yesterday’s journal exactly. Several deposits a day, or one deposit that covers many days, is normal. You are clearing the balance, not pairing one journal to one bank line.

When the fee is missing

If the order did not include a fee, the health list says:

A gateway fee was missing. Clearing was debited for the gross, and the difference stays there.

The journal debits clearing for the gross. The bank received the net. Categorising that net to clearing leaves a debit on clearing equal to the unknown fee. Leave that residual. Do not invent a fee percent. Do not park it in suspense. It is expected until a settlement file exists, and this connector does not import one. Accept will usually not appear, because the difference is more than R1.00. Categorise the deposit amount yourself.

When the order did include a fee, the fee goes to an expense such as Merchant fees — PayFast, and clearing is debited for the net. Accept can then apply if the deposit is within R1.00 of the clearing balance.

WooCommerce fee lines are separate. Under Woo fee lines, Add fee maps a fee name to Expense or Income, then Save mappings. An unmapped fee line is not the same thing as the missing-gateway-fee residual above.

Output VAT is the VAT report, not SARS eFiling

Output VAT on the store journal is the movement on your Output VAT control account. The Online store page shows that account’s code and name and links to Control accounts. Map the role under Settings → Control Accounts if it says the output VAT account is not mapped. The usual code is 2200. Do not create a second VAT payable for the store.

Tax → VAT Report reads that movement as F4 (output tax). A refund reduces F4. This prepares the figure. It is not a SARS VAT201, and Anchor does not eFile. Export the report and submit it on SARS eFiling yourself. See the VAT report.

Categorising the bank deposit to clearing with Tax set to No tax does not move F4 again. VAT was already recorded on the sale date, which is often not the payout date.

Daily summary does not add those sales to invoice totals (S1). An empty S1 beside a non-zero F4 can be correct for summary mode. One invoice per order does create invoices, so S1 moves as well. Do not also categorise the deposit to sales.

If the organisation uses cash VAT, the page says This organisation uses cash VAT. These journals do not appear on a cash-basis VAT report. The same journals are still posted. They do not show on a cash-basis VAT report, because the clearing account is not a bank account.

Uninstall stops posting

There is no Disconnect button on Online store.

Uninstall the app in Shopify. The status becomes disconnected. Anchor emails the organisation owner with the subject Shopify store disconnected: the shop was uninstalled, and Anchor will not post new Shopify sales until the shop is connected again. Journals already posted stay in the books. They are not reversed. Uninstalling again while the store is already disconnected does not send another email.

To disconnect without uninstalling, use the MCP tool disconnect_commerce_connection. That stops posting and removes the stored keys. Nothing already in the books is reversed. It is not a button on this page.

While the store is disconnected, the connect form is shown again.

What is stored about the customer

A Daily summary journal does not create a contact. One invoice per order does, when there is exactly one match. If the customer is missing, or the email or phone matches two contacts, that order is not invoiced. Anchor does not pick one and does not merge them.

The saved contact, and the canonical customer on the order, keep only:

  • Name
  • Email
  • Phone, when the order has one (email is tried first, then phone)
  • Billing address, when the order has one

Those records omit marketing consent, notes, store tags, and a tax number. The raw order body stored on the event can still contain them.

Customer privacy requests (Shopify)

Shopify passes on privacy requests from shoppers and store owners. Anchor handles them within a few minutes and emails the organisation owner each time:

Email subjectWhat Anchor did
Shopify customer data requestNothing changed. The email lists what Anchor stored about that Shopify customer (contact, order ids, dates, and customer details on the order). Send it to the customer if they or Shopify ask for it.
Shopify customer data erasedName, email, phone, and billing address were removed from that customer's stored orders. A contact with no invoices, credit notes, bills, or payments is renamed Redacted customer and loses its email, phone, and address. A contact that has any of those keeps its name and address for your tax records and loses its email and phone.
Shopify store data erasedSent about 48 hours after the app is uninstalled. Stored keys and customer details on every stored order for that shop were removed. You can still connect the shop again later.

Posted journals, invoices, and credit notes are never deleted or reversed by a privacy request.

WooCommerce has no privacy webhook. Ask support to erase a WooCommerce customer; the same erase runs.

API and MCP

Permission is manage:integrations.

Connection health omits money. Mapping warnings carry previousBalanceCents, and event rows carry sourceGrossCents. Both are integer cents.

  • GET /api/v1/commerce/connections
  • PATCH /api/v1/commerce/connections/{id}
  • PUT /api/v1/commerce/connections/{id}/mappings

MCP: list_commerce_connections, get_commerce_connection, list_commerce_events, update_commerce_connection_settings, update_commerce_mappings.

Disconnect and replay are the MCP tools disconnect_commerce_connection and replay_commerce_event. There is still no Disconnect button on Online store, and those two operations are not on-screen tools. Disconnect stops posting and removes the stored keys. Journals already posted stay. Replay queues the event again. It does not post a journal by itself. The next sync posts.

per_order is accepted only together with a cutoff date.

On this page