I found a workaround by creating custom contact (rather than participant) fields, as it is possible to add tokens for custom contact fields to the Contribution Invoice Receipt template.
Here is the process for other non-developers like me:
- Create the necessary custom fields (select Contacts in the Used For field)
- Create a profile that includes the new custom fields
- Add the profile to the Fees section of the Event configuration. Now when delegates register they can complete the new fields.
- Add a token for the custom field to the Contribution Invoice Receipt template (the format for the custom fields is {contact.custom_12} where 12 is the ID of the custom data field. To find the ID, go Administer > Customize Data & Screens > Custom Fields and click ‘edit’ on the field you want to use. Look at the URL. The last part of the URL will be an equal sign and a number (=12). The number (12 in this example) is the id of that custom field.) (Thanks Joe Murray for that bit of help)
Caveat: The workaround is not ideal as the PO number is likely to change every time the person makes a new registration so the history will not be retained.