# Job fees

Built-in tools for automatically calculating job fees based on project data.

# Custom fees

The most basic form of fee calculation is to simply specify a fee and a currency for each job. This can also be done through batch editing or even setting the fee in advance in a joblist template.

Also note that when a [Resource matrix](https://docs.plint.com/books/plint-end-user-documentation/page/calculating-job-fees-with-a-resource-matrix) is used, and a job is accepted or grabbed by a user, the calculated fee will automatically be converted into a Custom fee and stored for that job.

[![2022-03-07-19_53_09-Job-–-Plint.png](https://docs.plint.com/uploads/images/gallery/2022-03/scaled-1680-/2022-03-07-19_53_09-Job-%E2%80%93-Plint.png)](https://docs.plint.com/uploads/images/gallery/2022-03/2022-03-07-19_53_09-Job-%E2%80%93-Plint.png)

# Calculating Job fees with a Resource matrix

Resource matrices use the same basic idea as [Price groups](https://docs.plint.com/books/plint-end-user-documentation/page/price-groups-%28%22the-old-way%22%29), but they have a number of advantages.

- Like Price groups, they depend on **Job type** and **Number of units** for calculating the fee
- But they also support multiple **currencies** and exceptions on **language** level

##### *When* are they used?

When the job's price calculation is set to "Use Resource Matrix", as shown below. (Like all job settings, this can be preset using a joblist template).

[![2022-03-07 19_28_52-Job -- Plint.png](https://docs.plint.com/uploads/images/gallery/2022-06/scaled-1680-/2022-03-07-19-28-52-job-plint.png)](https://docs.plint.com/uploads/images/gallery/2022-06/2022-03-07-19-28-52-job-plint.png)

##### Creating/editing a Resource matrix

- Go to *Tools &amp; Data* / *Project matrices*
- Select the *Resource matrix* tab
- Edit or create new? 
    - To simplify admin work, strive to create as few matrices as possible. Remember that multiple currencies and exceptions for different languages can be handled within a single matrix.
- Add a specification for each *relevant* job type, unit type and currency. 
    - I.e., only add the combinations you actually use. You can always add more specifications later on, when new target languages, currencies, units or job types come into play.

##### Specification types and how they complement each other

There are three types of specification:

[![2022-03-07 19_21_22-Edit -- Plint.png](https://docs.plint.com/uploads/images/gallery/2022-06/scaled-1680-/2022-03-07-19-21-22-edit-plint.png)](https://docs.plint.com/uploads/images/gallery/2022-06/2022-03-07-19-21-22-edit-plint.png)

- Fee 
    - This type is multiplied with the number of units 
        - E.g. "10 USD per Minute"
- Static fee 
    - For jobs where number of units aren't relevant, or for starting fees.
    - You can combine Fee and Static fee 
        - E.g. "100 USD (Static) + 10 USD per minute (Fee)"
- Minimum fee 
    - These are used to ensure that small jobs are also paid a worthy salary. 
        - If the unit-based fee doesn't reach this number, the Minimum fee is used
        - If it *does*, the Minimum fee is *ignored*. It's job is done, so to speak.
    - E.g. 
        - The Minimum fee is 100 USD, the Fee per minute is 10 USD  
            
            - For a 1-minute film, or 5-minute film, the fee is 10 USD
            - For an 11-minute film, the fee is 110 USD

##### Finding the right matrix *and* specification

- Calculating the fee for a job starts by determining which **matrix** to use 
    - If a Resource matrix has been selected for the *project*, it will automatically be used for all jobs on that project
    - If not, Plint will look for the "System default" matrix 
        - There can be only one. There is a checkbox for it.
    - If neither can be found, the calculation will fail
- Within the selected matrix, the system will then look for the right **specification**, based on the following:  
    
    - What's the job type?
    - What's the number of units? 
        - This information comes from the *part* which the job is connected to
    - What unit type is used? 
        - Minutes? Words? This is determined by the *project* (on the Price &amp; Internal information tab)
    - What is the language? 
        - Here, a hierarchy is used:
        - Is there a specification for the language in question? 
            - This is typically used for exceptions. If all languages have the same fee, go with a "General rule" (see below)
        - If not, is there a specification for the Language group? 
            - A middle ground between general and specific, language groups can bundle together selected languages and a fee can be specified for the whole group. E.g. "Nordic languages"
        - If not, is there a "General rule"? 
            - This often serves as a catch-all to cover all languages with the same fee
    - What **currency** should the fee be calculated in? 
        - If the project allows and there is a "Default currency" specified for the *user*, it will be used 
            - If the project is set to "Force currency" on the other hand, the currency used for the *Client fee* will also be used for all jobs.
        - If neither is specified, the *Base currency* will be used 
            - Yes, there can be only one, and yes, there is a checkbox for it
        - If there isn't even a Base currency, the *Main system currency* will be used as the default

---

*Adding an exception for a certain language after specifying default fees in two currencies:*

[![2022-03-07 19_22_21-Edit -- Plint.png](https://docs.plint.com/uploads/images/gallery/2022-06/scaled-1680-/2022-03-07-19-22-21-edit-plint.png)](https://docs.plint.com/uploads/images/gallery/2022-06/2022-03-07-19-22-21-edit-plint.png)

##### Applying fees and making them static

One strength of Resource matrix fees is that they are dynamic and can offer fees in different currencies depending on user preferences. However, once a job has been accepted or self-assigned, you typically want this fee to become static. The system is also designed in this way.

- User A sees an offered job on their Dashboard
- User A has USD as default currency, and their is a specification for this currency
- User A confirms the job by selecting Reply / Yes
- The fee is now automatically stored as a Custom fee for this job and is after this point no longer affected by changes in the matrix, project or any other external factor

##### Currency conversion

Besides adding multiple fee specifications, there is another way to add support in multiple currencies. It requires certain settings on site level, under Tools &amp; Data / Currencies.

- Select a "Base currency" 
    - This is the only currency you need to add specifications in.
    - It will also serve as the default for all users who don't have a default currency.
- For the currency you want to convert fees into: 
    - Select "Allow automatic conversion"
    - Make sure there is a currency rate specified.

**The following example explains how it works:**

- User A sees a job offer or a job in the Job tank.
- User A has default currency USD
- If there is no specification in USD for the job type and unit: 
    - the system checks for a specification in the Base currency
    - if one is found, this fee is converted into USD based on the currency rates
    - this fee is shown to the user
    - If the user grabs or accepts this job, the converted fee and currency are stored for the job
    - The job history will also show that the fee was converted

##### Adjusting the fee with a percentage value

When multiple currencies can be used, specifying a change in the fee can be tricky. The field "Price adjustment (%)" can solve this. It will adjust the fee by a percentage once it has been calculated into the correct currency.

Tip: Negative values can be used to *lower* the fee.

[![Screenshot 2023-05-23 at 17.28.35.png](https://docs.plint.com/uploads/images/gallery/2023-05/scaled-1680-/screenshot-2023-05-23-at-17-28-35.png)](https://docs.plint.com/uploads/images/gallery/2023-05/screenshot-2023-05-23-at-17-28-35.png)

##### Forcing exceptions after jobs have been grabbed or confirmed

In the real world, the example above is sometimes problematic. What if the running time of an episode is updated in the project data *after* work has begun, and the fee of a hundred already assigned jobs needs to be updated? Or perhaps the fees have recently been updated in the matrix itself and these jobs ought to have been included? Luckily, there is a tool for that.

- In the joblist, filter out the jobs you want to update
- Go to *Batch edit / Calculate job fees*
- In many cases, you can now simply click *Recalculate*
    - This will redo the calculation for the selected jobs, based on the new data
    - By default, unassigned jobs will be excluded. Their fees haven't already been converted into static fees, so it makes sense to keep them dynamic. You can include them as well, however, by simply unchecking the checkbox.

*Finding the "Calculate job fees" option*

[![2022-03-07 19_38_22-Example subtitling project (trailers) -- Plint.png](https://docs.plint.com/uploads/images/gallery/2022-06/scaled-1680-/2022-03-07-19-38-22-example-subtitling-project-trailers-plint.png)](https://docs.plint.com/uploads/images/gallery/2022-06/2022-03-07-19-38-22-example-subtitling-project-trailers-plint.png)

*Calculate job fees again*

[![2022-03-07 19_39_00-Example subtitling project (trailers) -- Plint.png](https://docs.plint.com/uploads/images/gallery/2022-06/scaled-1680-/2022-03-07-19-39-00-example-subtitling-project-trailers-plint.png)](https://docs.plint.com/uploads/images/gallery/2022-06/2022-03-07-19-39-00-example-subtitling-project-trailers-plint.png)

---

##### Troubleshooting: when calculation fails

If a single required piece of information is missing for the job, user or project, the whole calculation will fail. Here are some tips for spotting the problem.

- - The "Job fee" tab, found when editing a job, will usually give you a clue about what's missing. 
        - See screenshot below
    - You can also look at the job info page itself. 
        - E.g. A certain user is offered a job. The user's default currency is USD. There are only specifications in EUR. No fee can be calculated for this user.
        - Possible solutions: 
            - enable [currency conversion](https://docs.plint.com/books/plint-end-user-documentation/page/calculating-job-fees-with-a-resource-matrix#bkmrk-forcing-exceptions-a) for USD
            - add a specification in USD
            - force the project to use EUR for all jobs
            - manually calculate the fee for the job, if this is a rare exception, and store it as a [Custom fee](https://docs.plint.com/books/plint-end-user-documentation/page/custom-fees)

[![2022-03-08 08_05_55-Job -- Plint.png](https://docs.plint.com/uploads/images/gallery/2022-06/scaled-1680-/2022-03-08-08-05-55-job-plint.png)](https://docs.plint.com/uploads/images/gallery/2022-06/2022-03-08-08-05-55-job-plint.png)

# Price groups ("the old way")

Price groups offer a basic way of linking job fees to job types. The logic is quite simple:

- For relevant Job types and Units, you specify a fee 
    - See screenshot below
- The fee is then automatically calculated based on, for example, the running time of the part

[![2022-03-07 18_13_29-Edit fees -- Plint.png](https://docs.plint.com/uploads/images/gallery/2022-06/scaled-1680-/2022-03-07-18-13-29-edit-fees-plint.png)](https://docs.plint.com/uploads/images/gallery/2022-06/2022-03-07-18-13-29-edit-fees-plint.png)

#### How to use

- Create a Price group (under Tools &amp; Data / Price groups) 
    - This is the unchanging unit which you can connect to users
- Add at least one price list to the price group 
    - By using price groups, you can update the fees over time and specify a point in time when the new fees are used.
    - The jobs, as a consequence, need a Delivery date in order for the fee to be calculated
- Attach Price groups to users/people 
    - Here, as well, you can specify a date. These dates allow you to swap price groups for users over time without affecting the fees of old jobs.
- Specify that the jobs should use this form of calculation 
    - This is done on the "Job fee" tab, under Price list calculation: 
        - "Use project data" will combine project data such as the number of units for the part with a price group
        - "Use specifications" will let you specify, for example, a different number of units, but still make use of a price group. 
            - Example: the running time of the part is 100 minutes, but the freelancer only translated half of it.

#### Limitations

- A price group only supports a single currency
- Exceptions cannot be made for different target languages
- Prices remain dynamic even after jobs are accepted or grabbed
- All of these issues are addressed by using a [Resource matrix](https://docs.plint.com/books/plint-end-user-documentation/page/calculating-job-fees-with-a-resource-matrix) instead.