Finance & Operations Assistant

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Any

SALARY

$800/Month

HOURS PER WEEK

20

DATE UPDATED

Jul 28, 2026

JOB OVERVIEW

# Finance & Operations Assistant (Part-Time, 20 hrs/week)

**Two jobs, both daily: watch our orders and supplier closely, and keep our numbers current. Around 2-3 hours a day, Monday to Saturday.**

If you like finding the one number that doesn't match, this is a good fit. If you want strategy work or a management track, it isn't.

## About us

We run health and wellness supplement brands selling direct to customers in the US, UK, Canada and New Zealand. We're on Shopify with a subscription model. Small team, fully remote, everyone works async.

## What you'll do every day

**Supply chain (about 1.5 hours)**
- Pull the Shopify order export and compare it line by line against the supplier's invoice
- Flag every mismatch: wrong quantity, wrong SKU, wrong price, orders billed that were cancelled, orders shipped that never got billed
- Go through tracking on open orders and spot anything abnormal: no scan since dispatch, stuck in transit, stuck in customs, returned to sender, delivered but the customer says otherwise, or a shipment that never got a tracking number at all
- Raise every issue with the supplier the same day you find it
- Follow up until each issue is closed, not just reported once. Keep a running list of what's open and how long it's been open

**Finance (about 30 minutes)**
- Update the daily gross profit tracker: revenue, refunds, COGS, shipping and payment fees, so we know the real margin on the day rather than waiting for month end
- Update the P&L sheet from the bank statements and expense receipts we send you
- Categorise transactions and flag anything you can't place instead of guessing
- At month end, close the books properly: all miscellaneous costs and operating expenses in, everything categorised, nothing sitting unexplained, ready to hand to our accountant

**Daily report (about 15 minutes)**

One message at the end of your day covering both sides:

- Orders checked, invoice checked, mismatches found
- Tracking abnormalities found, what you told the supplier, what they said back
- Open issues still unresolved and how many days they've been open
- Revenue, refunds and gross profit for the day, plus gross profit month to date

Send it every working day, including days when everything matches. "Checked 340 orders against invoice #4471, all matched, no tracking issues" is a complete and welcome report.

## What we're looking for

**Required**

- Previous bookkeeping or finance experience. This is not a first finance job
- You double check your own work before you send it. You would rather look twice than be wrong once
- Precise by nature. Small details bother you until they're resolved
- Comfortable with numbers. Percentages, margins, currency conversion and unit costs should be easy for you, not something you look up
- Strong Excel or Google Sheets. VLOOKUP or XLOOKUP, filters and pivot tables
- Good written English. We'll read your reports every day, so a clean list beats a long paragraph
- Reliable availability at the same time each day, so the work lands before we start ours

**Preferred**

- Experience with Shopify, especially checking and reconciling orders
- Experience in ecommerce or DTC
- Xero or QuickBooks

## What you won't do

You won't have access to send payments. You prepare and flag, we approve and send. Bank access is read-only. This is standard and it protects both of us.

## Hours and pay

- **$800 per month**, paid twice a month ($400 on the 15th and $400 at month end)
- 20 hours per week, Monday to Saturday, around three hours a day
- Long-term role. We're looking for someone who wants to stay, not a short project

**Where this role goes**

We want this to grow. The next step is owning subscription revenue forecasting: projecting recurring revenue off active subscriber counts and churn, forecasting demand, and driving reorder timing from that. It's more hours, more responsibility and a substantial pay increase.

We're not asking you to do that on day one and we're not expecting you to already know how. But if that's the direction you want to go, say so in your application. We'd rather grow someone into it than hire a second person later.

## How to apply

Send us:

1. A short note about the most tedious reconciliation work you've done and what you caught
2. Your daily availability in your local time, including Saturday
3. Whether you want to grow into the forecasting side later
4. The word **RECONCILE** somewhere in your message so we know you read this

Shortlisted applicants get a **paid test task** (one hour, paid regardless of outcome): a real week of orders, a supplier invoice, a tracking export and a batch of transactions. Find what's wrong, write the message you'd send the supplier, and write the daily report as you would send it to us. That test d ---------- who we hire, not the CV.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0011
Controller Execution Time ( Jobseekers / Job )  0.0266
Total Execution Time  0.0283
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,512,808 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Finance-Operations-Assistant-1697692
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0136 seconds)  (Hide)
0.0007   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0010   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1697692
 LIMIT 1 
0.0005   SELECT *
FROM `employers`
WHERE `employer_id` = 791234
 LIMIT 1 
0.0013   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1697692
AND `misc`.`idIS NULL 
0.0012   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-09-02',ej.date_added) duration_daysDATEDIFF('2026-09-02',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-09-02',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1697692' 
0.0015   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1697692 
0.0010   UPDATE employer_jobs SET hit_counts '***Jul-28-2026=1143***Jul-29-2026=309***Jul-30-2026=116***Jul-31-2026=84***Aug-01-2026=71***Aug-02-2026=46***Aug-03-2026=64***Aug-04-2026=30***Aug-05-2026=53***Aug-06-2026=20***Aug-07-2026=23***Aug-08-2026=22***Aug-09-2026=20***Aug-10-2026=26***Aug-11-2026=22***Aug-12-2026=32***Aug-13-2026=18***Aug-14-2026=27***Aug-15-2026=32***Aug-16-2026=23***Aug-17-2026=24***Aug-18-2026=16***Aug-19-2026=20***Aug-20-2026=18***Aug-21-2026=23***Aug-22-2026=21***Aug-23-2026=7***Aug-24-2026=11***Aug-25-2026=19***Aug-26-2026=21***Aug-27-2026=12***Aug-28-2026=22***Aug-29-2026=11***Aug-30-2026=1***Aug-31-2026=2***Sep-02-2026=1' WHERE job_id'1697692'  
0.0013   UPDATE employer_jobs SET monthly_hits '***Jul-2026=1651***Aug-2026=757***Sep-2026=1' WHERE job_id'1697692'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1697692' AND status LIKE 'sent%' ORDER BY id DESC  
0.0006   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1697692 
0.0026   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '791234'
AND `date_added` >= '2022-06-08' 
0.0006   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)