How-To: Migrate to the new Per Diem feature

Ted Harris
Ted Harris Expensify Success Coach - Admin, Expensify Team, Expensify Student Ambassador Posts: 359 Expensify Team
edited June 2021 in How-to Docs

The new and upgraded Per Diem feature was announced in February 2020. If you had Per Diem enabled before February 2020 then you will retain the old version of the feature until you make the switch.

How do I know which version I'm using?

The old version only has three fields, Per Diem Name, Rate and Currency. The new version adds the option to set a Destination and Subrate.

Bellow is a screenshot of the new version in the Policy editor. Note the Destination column, upon which all Subrates are now dependent visible in the policy editor:

Or you can view it as a Per Diem claimant in the new Per Diem expense creation view:

I don't see that? How do I get it?

To update to the new version, simply toggle your Per Diem OFF and then ON again from Settings > Policies > Group [Policy Name] > Per Diem. You'll see the brand new Per Diem rates with every Destination added as "International".

Note: You cannot return to the old version of Per Diem after this change.

Making your rates match...

Most of the time, this will really just be a case of splitting that old Per Diem Name to create a Destination and SubRate. So lets start by Exporting your rates to a CSV file:

Once you have your rates exported, refresh the policy page and head to your spreadsheet software. Here, we'll want to split out your Per Diem Name into the newly required Destination and Subrates.

You can do this easily in your spreadsheet software of choice, but here we'll split the Per Diem Name easily next to the rateID's which exported with your CSV file in Google Sheets, in two newly inserted columns right after the old Name header:

Obviously, the above will entirely depend on what your existing delimiter is. Here, we've used " - ", but this could just as easily be ", " or "; " or ": ". We've also used the formula: =ARRAYFORMULA(IFERROR(SPLIT(C2:C," - ",FALSE,TRUE),""))to output the SPLIT here, but you could just as easily do this in each column with the LEFT and MID formulas:

  • Destination: =ARRAYFORMULA(IFERROR(LEFT(C2:C,search(" - ",C2:C)),""))
  • Subrate: =ARRAYFORMULA(IFERROR(MID(C2:C,search(" - ",C2:C)+3,1000),""))

The ARRAYFORMULA simply saves time from having to drag down a formula in this instance, so it's not entirely necessary to include if you don't want to.

Once you've managed to neatly split these, make sure you've saved the text in those columns as values and delete the old Per Diem Names from column B and C.

Next, we'll want to clear out the existing rates. Don't forget this bit, otherwise you'll probably end up with a lot of duplicates that you don't need!

Now, let's upload our new rates now, by clicking Import From Spreadsheet:

Assign each column the correct header (don't worry, the first line with your headers won't import as its own Destination+Rate) and click Import at the bottom.

Voilà! You're done. You're ready to go with Per Diem once again. Users can begin submitting their new Per Diem claims and you can continue to approve the old ones on the same policy. If you need to reject any, they'll have to be recreated as new Per Diem claims.


  • Ted Harris
    Ted Harris Expensify Success Coach - Admin, Expensify Team, Expensify Student Ambassador Posts: 359 Expensify Team


    How can I go back to the old Per Diem?

    You cannot. Once you've enabled the new Per Diem, you cannot return to the old set of rates under any circumstances.

    How does the setup work? How do employees create these? What even is Per Diem?

    All great questions! Check out the Related Articles below for more on all of this.

    We only have a single or few Per Diem rates? Do we still need to migrate?

    You don't have to, but Expensify will migrate these for you after the end of April 2020. This means your single or few Per Diem rates will show with the Destination of "International". So instead of users creating a single Per Diem claim for "3 x [Rate Name] @ [Rate Amount]", they'll create a Per Diem claim for "International - Dates chosen" with these individual rates shown in the receipt.

    We don't need this new iteration? How can we retain the current version of Per Diem?

    Expensify will be moving all users to this new version after the end of April 2020. You cannot retain the existing version, but you can easily modify your current practices to use the new Per Diem system to support your existing rates. Expensify has not removed support for single or few rates, it has simply built support for the most common Per Diem use cases around the existing functionality.

    What are the exact differences between this version and the new version?

    There are a few main differences.

    1. All Per Diem rates now come with a parent "Destination". This is a free form text field and you can name the "Destination" whatever you like, be it "Angola", "Zimbabwe" or just "Local".
    2. You can only upload rates in a spreadsheet, rather than create them one-by-one now. Once uploaded, you can edit all fields. (Note that changing the parent "Destination" will change the "Destination" for all of those rates.)
    3. You can now "Clear Rates" from the Per Diem settings
    4. When creating a Per Diem rates, you must choose a "Destination" and set a start and end date and time for your trip. This defaults to todays date and 00:00 as the time.
    5. When creating a Per Diem expense, Expensify will create a receipt showing the breakdown of rates you chose and the cost per rate.
    6. If you add no Description in the rate, Expensify will populate this with the rate breakdown as well. Admins can export this with the {expense:comment} formula.
    7. There is no "Attendee" field for Per Diem rates anymore
    8. All Per Diem expenses are reimbursable, always.

    See the image in the FAQ for "We only have a single or few Per Diem rates? Do we still need to migrate?" for a quick overview of these changes!

    Why would I want to migrate if you will do it for me anyway?

    This is purely so you can either test the new functionality out and ask questions before this is live for everyone and so that you can manage messaging to your employees. They will notice the difference immediately when they create a new Per Diem expense, so they may come to you with questions and you'll want the answers on hand!

    We don't use Per Diem at all. What should I do? Why am I receiving this email?

    One of the policies you own has Per Diem enabled. Head to each of those policies and check the Per Diem settings. Toggle this off to prevent future emails about this new feature.

    Why can't you provide me with a spreadsheet of my country's rates?

    We would love to! We covered this briefly here. We just haven't committed to collating these yet. There's no API to automatically pull these rates from and each jurisdiction stores them differently. So far, there are two examples within the "How-to: Set up your Per Diem rates" help post. We'll be sure to add more as and when we find them.

    Why didn't you build this iteration to do X thing I really want it to do?

    It's all a question of resources. There's obviously more than can always be improved. We'd love to take your ideas. Start by sharing them in the thread for our announcement of this feature - if you think people like them, why not create an Idea here about it yourself too?

    Related Articles: