Payments Module v16 Docker Keeps installing Dev

New to Frappe & ERPNext. Trying to install the Payments module for a Docker Self-hosted Production install.

I had ERPNext up and running. Everything was working great. Then I tried to install Payments for cc processing, and now I keep getting the dreaded Internal Server Error. When I check which sites I have installed I see:

frappe 16.52.0 UNVERSIONED
erpnext 16.50.0 UNVERSIONED
payments 0.0.1 develop

I had ERPNext installed and running. But I did a docker build no-cache. I think my issue is that I’m installing the dev version of payments instead of my desired version-16. I have the following in my apps.json and installing with --secret=id=apps_json,src=apps.

“url”: " GitHub - frappe/payments: A payments app for frappe · GitHub ",
“branch”: “version-16”

Been fighting it for awhile and getting nowhere. Appreciate the help from the experts in this forum as I get up to speed. Thanks!

A few things to check:

  1. “UNVERSIONED” is normal. Docker builds often strip the git metadata, so frappe and erpnext show that. The real concern is payments 0.0.1 develop, which says the build used the develop branch and not version-16.

  2. Check the branch exists. Run git ls-remote --heads GitHub - frappe/payments: A payments app for frappe · GitHub and look for version-16. If it isn’t there, use develop or whichever branch matches your Frappe version.

  3. Check your apps.json. It must be plain JSON with straight quotes and no spaces in the URL. The forum may have turned your quotes into smart quotes, so check the actual file:
    [
    {“url”: “GitHub - frappe/erpnext: Free and Open Source Enterprise Resource Planning (ERP) · GitHub”, “branch”: “version-16”},
    {“url”: “GitHub - frappe/payments: A payments app for frappe · GitHub”, “branch”: “version-16”}
    ]
    Include erpnext in the list too, with the same branch.

  4. Check how it’s passed to the build. The secret src= must point to the real file (for example src=apps.json, not src=apps). If the path is wrong, the build can silently fall back to default behaviour. Then rebuild with --no-cache.

  5. After rebuilding, recreate the containers and run bench --site yoursite migrate. Then confirm with bench version that payments shows version-16.

For the Internal Server Error itself, look at the backend container logs (docker compose logs backend) or the site’s error log. The traceback will tell us whether it’s a version mismatch or something else, so please post it if the error continues.