To charge a registration fee for a race, add a Fee Field to your registration form by clicking the Add a Form Element button at the bottom of the Edit Form tab on your registration:

and then click the Add a Custom Element button:

If all racers pay the same fee
Select the Fixed Fee element type:

You must enter a label for each fee: If you only have one fee, you can enter something generic like “Race Fee”, but if you have two days of races that people can sign up for, or other options that people can select then you should give it a descriptive name. For example, if your event has a Saturday race and a Sunday race, you can add one fixed fee labelled “Saturday Race Fee” and another one labelled “Sunday Race Fee” to help your registrants choose the correct options.

For a single race fee that everybody has to pay, you will want to make the fee mandatory so that registrants cannot continue until they have checked the box and agreed to pay the fee. If registrants can choose different races, or if people who aren’t racers will be signing up on the same form (for example, some events have coaches sign up on the same form), you won’t want to make the race fee mandatory.
You can also set a limit on each fee so it is marked as sold out after a certain number of people have registered. If you would like to cap your registration, enter the maximum number of people in the “Limit” box.
When you’re happy with the configuration you have entered for the fee, click the “Save” button to add it to the form. The race fee will appear on the public registration form as a checkbox that the registrant must check:

Charging early or late registration fees
If your event has different price levels based on registration date, you can enter the date(s) at which fees change in the Payment Settings tab. Once you have price change dates configured, you will see two additional options when you add a fee to the registration form. Instead of just “Price”, you will see “Price before (date)” and “Price after (date)” options to set the price during the early registration period, and the price during the late registration period:

If different categories or races pay different fees
It’s common for races to have different fees for different races – for example, an running event might include a 5k fun run and a marathon, with the fun run costing $10 and the marathon costing $100. In this case, you would add an Option Fee to your registration form:

Under the Field Options section, add an option for each fee you want to charge by clicking the Add another Option button. Enter an option name so your registrants know what they are selecting, and then set the price:

Click the Save button at the bottom to add these fees to your form. The option fee will appear on the public registration form as a list of options with circles beside them, clicking the circle to fill it in will select that fee:

Charging early or late registration fees
If you have set up price change dates on the Payment Settings tab, click on the Edit button beside each option to reveal more settings for each option, including the price for each date range:

Restricting Options
If some options are only available to certain genders or age groups, and your registration form includes a gender and birthdate field, you can set restrictions on each option. For example, if the “fun run” option in the previous example is only for kids, you can set the Age Range of that option to be 0-12 and the option will be automatically hidden from anybody who enters a birthdate that indicates they are older than 12.