Trip types

Business trips, workations and assignments — and why the type you choose is load-bearing.

Every trip has a type, fixed when the trip is created. It is the single biggest determinant of how premote handles the trip.

TypeWhat it is
BUSINESS_TRIPA work trip to another country — client visits, conferences, site work
WORKATIONRemote work from another country, at the employee's own initiative
ASSIGNMENTA long-term posting abroad, managed as a multi-phase HR process

Why the type matters

Type is not a label. It selects, at creation time:

  • Which policy applies. Policies are defined per trip type. If no policy matches the type, destination and dates, creation fails with 404 — nothing is created.
  • Which fields are required. GET /trip-fields?tripType=BUSINESS_TRIPAPI Reference — returns the fields for a given type. Sending values for fields that don't apply is pointless; omitting required ones fails completeness.
  • Which approval rules run. Approval chains are configured per trip type, so the same traveler and destination can need one approver as a business trip and three as a workation.
  • Whether a risk assessment runs. Risk assessment is switched on or off separately for business trips and workations.
  • Which compliance obligations are evaluated. A1 coverage, posted-worker notification duties and the rest are assessed differently for a client visit than for self-directed remote work.
🚧

Type is immutable in practice

There is no "change the type" operation. If a trip was created with the wrong type, cancel it and create a new one — otherwise it keeps the policy, fields and approval chain of the wrong type.

Check a set of draft values against a type before committing to it with POST /trips/completeness/USERIDAPI Reference.


Assignments work differently

ASSIGNMENT trips are the exception to everything on the Trip statuses page.

📘

An assignment's status stays PENDING for its whole life

Do not read trip.status to track an assignment — it will not move. The real lifecycle lives in assignmentPhase.

Fetch an assignment with GET /assignments/{tripId}API Reference.

Phases

assignmentPhase runs through:

PhaseMeaning
DRAFTBeing set up, not yet submitted
EXPLORATIONFeasibility being assessed — cost, tax, immigration
PENDING_CONFIRMATIONAwaiting the go/no-go decision
PRE_DEPARTUREConfirmed; visas, permits and paperwork in progress
ON_ASSIGNMENTThe employee is in the host country
START_REPATRIATIONReturn process started
OFFBOARDINGBeing offboarded from the host country
POST_ASSIGNMENTHome and closed out

Submitting a draft (POST /assignments/{tripId}/submitAPI Reference) moves it to EXPLORATION. A phase can also be set directly with PUT /assignments/{tripId}/phaseAPI Reference.

Separately, AssignmentStatus is a coarse rollup with just two values: IN_PROGRESS and COMPLETED.

Steps

Each phase contains steps from your company's assignment workflow — GET /assignments/trip/{tripId}/stepsAPI Reference. Each step carries its own status:

Step statusMeaning
PENDINGNot started
IN_PROGRESSBeing worked on
COMPLETEDDone
SKIPPEDDeliberately not applicable to this assignment
REJECTEDRejected — needs attention before the phase can advance

Advance one with PUT /assignments/step/{instanceId}/statusAPI Reference — or route it to an owner with PUT /assignments/step/{instanceId}/assignAPI Reference.


Recap

TaskEndpoint
Fields for a trip typeGET /trip-fields?tripType=…
Validate values against a typePOST /trips/completeness/USERID
Read an assignmentGET /assignments/{tripId}
Read its stepsGET /assignments/trip/{tripId}/steps
Submit an assignment draftPOST /assignments/{tripId}/submit
Set the phasePUT /assignments/{tripId}/phase
Update a stepPUT /assignments/step/{instanceId}/status


Did this page help you?