Environment variables
Source:
references/env.md. This is the same file the agent reads.
paymentsConfigFromEnv() (TS) and config_from_env() (Python) enable a provider when its required variables are set. *_ENV is sandbox (default) or production (live also accepted).
| Provider | Required | Optional |
|---|---|---|
| eSewa | ESEWA_PRODUCT_CODE, ESEWA_SECRET_KEY |
ESEWA_ENV, ESEWA_INTENT_PRODUCT_CODE, ESEWA_INTENT_ACCESS_KEY, ESEWA_INTENT_BASE_URL (production Intent host from eSewa) |
| Khalti | KHALTI_SECRET_KEY, KHALTI_WEBSITE_URL |
KHALTI_ENV; KHALTI_PUBLIC_KEY for mobile SDK builds only |
| Fonepay | FONEPAY_MERCHANT_CODE, FONEPAY_SECRET_KEY |
FONEPAY_ENV, FONEPAY_USERNAME, FONEPAY_PASSWORD (needed for txnVerification + Dynamic QR) |
| connectIPS | CONNECTIPS_MERCHANT_ID, CONNECTIPS_APP_ID, CONNECTIPS_PRIVATE_KEY_PEM |
CONNECTIPS_ENV, CONNECTIPS_APP_NAME, CONNECTIPS_APP_PASSWORD |
| CyberSource SA | CYBERSOURCE_PROFILE_ID, CYBERSOURCE_ACCESS_KEY, CYBERSOURCE_SECRET_KEY |
CYBERSOURCE_ENV, CYBERSOURCE_CURRENCY (NPR) |
| CyberSource REST (SDK) | CYBERSOURCE_MERCHANT_ID, CYBERSOURCE_KEY_ID, CYBERSOURCE_SHARED_SECRET |
|
| NPS | NPS_MERCHANT_ID, NPS_SECRET_KEY |
NPS_ENV, NPS_MERCHANT_NAME, NPS_API_USERNAME, NPS_API_PASSWORD |
| IME Pay | IMEPAY_MERCHANT_CODE, IMEPAY_USERNAME |
IMEPAY_ENV, IMEPAY_PASSWORD, IMEPAY_MODULE |
.env.example (sandbox values that are public in provider docs; everything else blank):
APP_PUBLIC_URL=https://shop.example.com # used to build return URLs; must be reachable by the payer's browser
ESEWA_ENV=sandboxESEWA_PRODUCT_CODE=EPAYTESTESEWA_SECRET_KEY=8gBm/:&EnhH.1/qESEWA_INTENT_PRODUCT_CODE=INTENTESEWA_INTENT_ACCESS_KEY=LB0REg8HUSw3MTYrI1s6JTE8Kyc6JyAqJiA3MQ==
KHALTI_ENV=sandboxKHALTI_SECRET_KEY= # test-admin.khalti.com → Keys (login OTP 987654)KHALTI_WEBSITE_URL=https://shop.example.com
FONEPAY_ENV=sandboxFONEPAY_MERCHANT_CODE=NBQM # public dev sample from Fonepay's specFONEPAY_SECRET_KEY=a7e3512f5032480a83137793cb2021dcFONEPAY_USERNAME=FONEPAY_PASSWORD=
CONNECTIPS_ENV=sandboxCONNECTIPS_MERCHANT_ID=CONNECTIPS_APP_ID=CONNECTIPS_APP_NAME=CONNECTIPS_APP_PASSWORD=CONNECTIPS_PRIVATE_KEY_PEM= # PKCS#8 PEM; "\n" escapes allowed
CYBERSOURCE_ENV=sandboxCYBERSOURCE_PROFILE_ID=CYBERSOURCE_ACCESS_KEY=CYBERSOURCE_SECRET_KEY=
NPS_ENV=sandboxNPS_MERCHANT_ID=NPS_MERCHANT_NAME=NPS_API_USERNAME=NPS_API_PASSWORD=NPS_SECRET_KEY=
IMEPAY_ENV=sandboxIMEPAY_MERCHANT_CODE=IMEPAY_USERNAME=IMEPAY_PASSWORD=IMEPAY_MODULE=Rules:
- Commit
.env.exampleonly. Production secrets live in the platform’s secret store (Vercel/Render/Fly env,wrangler secret put, AWS/GCP Secret Manager, Kubernetes secrets). - Never expose these to the client. In Next.js, no
NEXT_PUBLIC_prefix; in Vite, noVITE_prefix; in Expo, noEXPO_PUBLIC_prefix. The only value a client may hold is the Khalti public key for its mobile SDK. - Fail fast at boot when a provider is half-configured in production (e.g.
*_ENV=productionwith a sandbox product code likeEPAYTEST).