Payment status not updated after paypal payment

I am working with a fresh Indico 3.0 installation. To test the paypal payment method, I created a conference with a fee of 0.1 Euro. After registration of a test participant, I proceed to checkout and pay with paypal, but the registration status stays at “not paid” although I have received a payment confirmation mail from paypal. If I try to pay again, the paypal site tells me that this invoice is already paid. So, paypal knows that it is paid, but the indico status is still “awaiting payment”.

I have configured the paypal plugin with the email address of our business paypal account. In the conference settings, I first had the bank transfer option enabled, later, I also enabled the paypal option and disabled the bank transfer option.

Is your indico instance available on the public internet (and using a trusted TLS certificate)? Paypal needs to send a request to Indico to update the payment status.

PS: You might want to use Paypal’s sandbox for testing instead of making real payments :wink:

Yes, my site is public and I use a certificate issued by letsencrypt.
In the nginx log I see a request from paypal:

POST /event/1/registrations/1/payment/response/paypal/ipn?token=... HTTP/1.1" 200 0 "-" "PayPal IPN ( )"

Is there anything in indico.log related to that request?

Yes, there is a warning

2021-08-25 10:26:39,363 WARNING 5bc395b526a949ae - indico.plugin.payment_paypal Paypal IPN string […] did not validate (INVALID)

Any umlauts in the name of the person who paid? If yes make sure paypal is set to use UTF8 encoding for its requests. IIRC you can configure this somewhere in your paypal account…

Yes, I have an Umlaut in my name.

Try this then: why did-i-get-the-error-paypal-cannot-process-this-transaction-because-of-a-problem-with-the-seller's-website

Thanks a lot! I will ask somebody in my company to apply this change.