Time Entries & Disputes
Time Entries & Disputes
Time entries from companies you work with are synchronised into your Freelancer Node as NodeTimeEntry records. These are separate from the self-initiated entries you create via the Time Clock. This article explains how to review company-synced entries, understand the approval workflow, and raise disputes when something is incorrect.
Viewing time entries
Company-synced time entries appear in the Time Clock history section. Each entry shows:
- company_name — The company that recorded the entry.
- project_name — The project or job you were assigned to.
- clock_in and clock_out — The recorded start and end times.
- total_hours — Calculated working hours, excluding breaks.
- break_duration_minutes — Total break time deducted from the shift.
- hourly_rate — The rate locked at clock-in time.
- total_pay — The calculated payment for this entry.
- status — The current state of the entry (see below).
GPS data is also available when captured: clock_in_location and clock_out_location arrays contain latitude and longitude coordinates, and clock_in_photo_url / clock_out_photo_url link to any attendance photos.
Entry statuses
Each NodeTimeEntry moves through the following statuses, tracked by the status field:
- clocked_in — The shift is currently active. The timer is still running.
- clocked_out — The shift has ended and hours have been calculated. Awaiting company review.
- approved — The company has reviewed and approved the entry. No further changes can be made by either party. The entry is locked.
- disputed — You have raised a dispute against this entry. Under review.
Approval workflow (company side)
Understanding how companies process your time entries helps set expectations:
- After you clock out, the entry appears in the company’s system with a clocked_out status, ready for review.
- A manager reviews the entry on the Crew member detail page, Timesheet tab. They see your GPS data, photos, and hours.
- The manager either approves or rejects the entry. Rejection requires a reason in the notes field.
- Bulk approval is available — managers can select multiple entries and approve them in one action.
- Once approved, the entry is locked. Neither you nor the company can edit the hours or pay.
If an entry is rejected, it returns to a reviewable state. The company may ask you to submit a corrected entry or discuss the discrepancy.
Dispute workflow (freelancer side)
If you disagree with the hours or pay on a company-synced entry, you can raise a dispute:
- Raise the dispute — Click the dispute button on the entry and provide a dispute_reason explaining the issue. The dispute(reason) method sets is_disputed to true, dispute_status to pending, records the disputed_at timestamp, and changes the entry status to disputed.
- Company reviews — The company receives a notification and reviews your dispute reason alongside the GPS and photo evidence.
- Resolution — The company calls resolveDispute(resolvedByUserId, notes, accepted) which:
- If accepted: sets dispute_status to resolved, records resolution_notes and dispute_resolved_at, and returns the entry to clocked_out status for correction.
- If rejected: sets dispute_status to rejected, records resolution_notes and dispute_resolved_at, and returns the entry to approved status (original hours stand).
Dispute statuses
The dispute_status field tracks the progress of any dispute:
- none — No dispute has been raised. Default state.
- pending — A dispute is active and awaiting company review.
- resolved — The company accepted the dispute. The entry may be corrected.
- rejected — The company rejected the dispute. The original entry stands.
Filtering time entries
The NodeTimeEntry model provides several scopes for filtering your entries:
- forCompany(coreTenantId) — Show entries for a specific company.
- disputed — Show only entries where is_disputed is true.
- pendingDisputes — Show entries with dispute_status of pending.
- thisWeek — Entries with clock_in within the current week.
- thisMonth — Entries with clock_in within the current month.
- forDateRange(start, end) — Entries within a custom date range.
Overtime rules
Overtime is calculated based on the company’s configured threshold. By default, hours exceeding 8 in a single shift trigger a 1.5× multiplier on the hourly_rate. This threshold is configurable per company — some may set it at 10 or 12 hours. The multiplier is applied automatically when pay is calculated.
Day rate calculation
For freelancers on day rates, hours are rounded to half-day increments. The roundToHalfDay() method applies the following logic:
- Less than 50% of the configured hours threshold = 0.5 days.
- 50% or more of the configured hours threshold = 1.0 day.
- For multi-day entries, full days are counted first, then the remainder is rounded to the nearest half-day.
Timesheet export
You can export your time entries in CSV or Excel format for payroll and accounting purposes. The export includes all entry fields: dates, hours, breaks, rates, pay, status, and company details. Use the date range filter to export a specific period, such as a calendar month.
Company-side view
For context, companies see your time entries on the Crew member detail page under the Timesheet tab. Each entry has approve and reject buttons. Managers can also view your GPS coordinates on a map and review attendance photos. This transparency works both ways — you can see the same data they can.
Formatted duration
The formatted_duration attribute displays hours in a human-readable format. For example, 7.5 hours appears as “7h 30m”. Active entries (where you are still clocked in) display the elapsed time with an “(active)” suffix.
Tips
- Review your time entries weekly. Catching errors early makes disputes easier to resolve.
- Dispute promptly if hours are incorrect — do not wait until payroll day.
- Provide clear, specific reasons when raising a dispute. “Hours are wrong” is less effective than “I clocked out at 18:30, not 17:00 — see GPS data.”
- Use the thisMonth filter at month end to verify all entries before the company runs payroll.
- Keep your own notes on shifts in case you need to reference them during a dispute.
Was this article helpful?