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.0014
Controller Execution Time ( Jobseekers / Job )  0.0148
Total Execution Time  0.0171
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,512,392 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.0067 seconds)  (Hide)
0.0006   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1697692
 LIMIT 1 
0.0006   SELECT *
FROM `employers`
WHERE `employer_id` = 791234
 LIMIT 1 
0.0006   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.0006   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.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1697692 
0.0009   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=2' WHERE job_id'1697692'  
0.0008   UPDATE employer_jobs SET monthly_hits '***Jul-2026=1651***Aug-2026=757***Sep-2026=2' WHERE job_id'1697692'  
0.0004   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1697692' AND status LIKE 'sent%' ORDER BY id DESC  
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1697692 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '791234'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)