I've conducted several tests and determined that the PayPal module isn't updating FOSSBilling following a transaction.
Following the instructions in PayPal's guide (https://www.paypal.com/us/cshelp/article/how-do-i-use-paypals-auto-return-feature-HELP197), I configured the 'Return URL' in the PayPalEmail payment module to match the 'IPN Callback URL'.
The URL I used was https://my.domain.com/ipn.php?bb_gateway_id=23.
Additionally, I adjusted the 'Live Webhook' in the PayPal API Credentials section.
I created and purchased a test product priced at 0.50p using the PayPalEmail payment module to test. I selected the payment method via a radio button in the cart or chose the "Pay now with a one-time payment" button on the invoice page at https://my.domain.com/invoice/X. Both did not work.
When selecting PayPal as the payment method, I was redirected to PayPal's site for the transaction. After making the payment, I received a confirmation email from PayPal and was then redirected back to my FOSSBilling site at https://my.domain.com/invoice/thank-you/X.
A message and a green loading bar appeared on the' Thank you' page, indicating that the payment was submitted and would be processed soon. It also stated that the invoice would be marked as paid shortly, and I would be redirected back to the invoice page after one minute.
However, upon being redirected back to the invoice at https://my.domain.com/invoice/X, the invoice still showed as 'Unpaid'.
Checking the admin section at https://my.domain.com/admin/invoice/transactions revealed no recorded transaction.
No errors were logged in the data/log/php_error.log or the PayPal system.