-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.example
More file actions
122 lines (111 loc) · 4.91 KB
/
Copy pathenv.example
File metadata and controls
122 lines (111 loc) · 4.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Allowed website origins
ALLOWED_ORIGINS=https://payeeproof.com,http://localhost:5500
PUBLIC_DEMO_ORIGINS=https://payeeproof.com,http://localhost:5500
# API access controls
# Example:
# API_KEYS_JSON=[{"key":"pp_live_client_1","client":"Acme Treasury","label":"Acme Treasury · production","tenant_id":"acme","environment":"production","role":"client","plan":"growth","usage_limit_monthly":5000,"limits":{"monthly_preflight_checks":4500,"monthly_recovery_checks":500,"monthly_records_reads":10000},"policy":{"allowed_origins":["https://app.acme.com"],"allowed_ip_cidrs":["203.0.113.0/24"],"allowed_networks":["ethereum","base"],"allowed_assets_by_network":{"ethereum":["USDT","USDC"],"base":["USDC"]},"require_reference_id_on":["preflight","recovery"],"records_max_page_size":50},"scopes":["preflight","recovery","records"],"active":true,"webhook_url":"https://client.example.com/payeeproof/webhook","webhook_secret":"whsec_live_example","webhook_events":["preflight_run","recovery_run"]}]
API_KEYS_JSON=
# Optional plan-level defaults for billing caps
# Example: {"pilot":{"monthly_checks":1000,"monthly_records_reads":2000},"enterprise":{}}
PLAN_LIMITS_JSON=
DEFAULT_RECORDS_MAX_PAGE_SIZE=100
ANON_API_RATE_LIMIT=20
ANON_API_RATE_WINDOW_SEC=300
KEYED_API_RATE_LIMIT=180
KEYED_API_RATE_WINDOW_SEC=300
PILOT_RATE_LIMIT=4
PILOT_RATE_WINDOW_SEC=3600
PILOT_DUPLICATE_TTL_SEC=43200
PILOT_MIN_FILL_SEC=3
PILOT_MAX_NOTES_LEN=2500
MAX_CONTENT_LENGTH_BYTES=32768
# Database
# Preferred on Render Free: set DATABASE_URL to your Render Postgres internal URL
DATABASE_URL=
# Optional local SQLite fallback for local development only
DB_PATH=/tmp/payeeproof.db
# Timeouts / cache
RPC_TIMEOUT_SEC=3.5
EMAIL_TIMEOUT_SEC=10
ADDRESS_CACHE_TTL_SEC=600
# Observability / minimal alerts
OBSERVABILITY_WINDOW_SEC=900
OBSERVABILITY_MIN_REQUESTS=8
ALERT_ERROR_RATE_THRESHOLD=0.35
ALERT_TIMEOUT_RATE_THRESHOLD=0.20
ALERT_COOLDOWN_SEC=600
# Chain RPC endpoints
ETHEREUM_RPC_URL=
ARBITRUM_RPC_URL=
BASE_RPC_URL=
POLYGON_RPC_URL=
BSC_RPC_URL=
SOLANA_RPC_URL=
# Optional JSON object with address overrides for public destination classes
# Example:
# KNOWN_DESTINATIONS_JSON={"ethereum":{"0x123...":{"classification":"bridge_router","label":"Bridge / router","explanation":"Known routing contract."}}}
KNOWN_DESTINATIONS_JSON=
# Resend email notification for pilot requests
RESEND_API_BASE=https://api.resend.com
RESEND_API_KEY=
RESEND_FROM=PayeeProof <alerts@notify.payeeproof.com>
RESEND_TO=hello@payeeproof.com
PILOT_AUTO_WELCOME_ENABLED=1
PILOT_WELCOME_REPLY_TO=hello@payeeproof.com
PILOT_WELCOME_NEXT_STEP_HOURS=24
WEEKLY_SUMMARY_ENABLED=1
WEEKLY_SUMMARY_DEFAULT_TO=hello@payeeproof.com
WEEKLY_SUMMARY_REPLY_TO=hello@payeeproof.com
WEEKLY_SUMMARY_DEFAULT_PERIOD=7d
WEEKLY_SUMMARY_MAX_EXAMPLES=5
# CRM intake automation light
# Point this to a simple webhook / Apps Script / Make / n8n endpoint.
CRM_INTAKE_ENABLED=1
CRM_INTAKE_URL=
CRM_INTAKE_SECRET=
CRM_INTAKE_AUTH_HEADER=X-PayeeProof-CRM-Secret
CRM_INTAKE_TIMEOUT_SEC=6
CRM_INTAKE_EVENT_NAME=pilot_request_created
# Integration layer / webhooks
PUBLIC_API_BASE=https://payeeproof-api.onrender.com
WEBHOOK_DELIVERY_TIMEOUT_SEC=10
# Keep webhook delivery out of the customer-facing request path by default.
# Set to 1 only for local/manual debugging where immediate delivery status is required.
WEBHOOK_INLINE_FIRST_ATTEMPT_ENABLED=0
WEBHOOK_RETRY_SCHEDULE_SEC=60,300,1800,7200
WEBHOOK_PROCESS_BATCH_SIZE=5
WEBHOOK_PROCESS_MIN_INTERVAL_SEC=5
# Monerium integration
MONERIUM_API_BASE=https://api.monerium.dev
MONERIUM_AUTH_CLIENT_ID=
MONERIUM_CLIENT_SECRET=
MONERIUM_REDIRECT_URI=https://payeeproof-api.onrender.com/api/integrations/monerium/callback
MONERIUM_INCLUDE_RESPONSE_TYPE=1
MONERIUM_INCLUDE_CHAIN_IN_AUTH_URL=0
MONERIUM_USE_CLIENT_SECRET_FOR_AUTH_CODE=0
# Local sandbox convenience only. Keep disabled in production so Monerium endpoints
# cannot fall back to the most recently stored connection when connection_id is missing.
MONERIUM_ALLOW_LATEST_CONNECTION_FALLBACK=0
# NOWPayments checkout
NOWPAYMENTS_ENABLED=0
NOWPAYMENTS_API_KEY=
NOWPAYMENTS_IPN_SECRET=
NOWPAYMENTS_BASE_URL=https://api.nowpayments.io/v1
NOWPAYMENTS_SUCCESS_URL=https://payeeproof.com/payment-success.html
NOWPAYMENTS_CANCEL_URL=https://payeeproof.com/payment-cancelled.html
NOWPAYMENTS_IPN_PATH=/api/payments/nowpayments/ipn
NOWPAYMENTS_CREATE_RATE_LIMIT=8
NOWPAYMENTS_CREATE_RATE_WINDOW_SEC=300
NOWPAYMENTS_DEFAULT_PRODUCT_SKU=pilot_399
NOWPAYMENTS_POSTPAY_EMAILS_ENABLED=1
NOWPAYMENTS_POSTPAY_NEXT_STEP_HOURS=24
NOWPAYMENTS_POSTPAY_REPLY_TO=hello@payeeproof.com
NOWPAYMENTS_SUPPORT_EMAIL=hello@payeeproof.com
NOWPAYMENTS_POSTPAY_CRM_ENABLED=1
NOWPAYMENTS_POSTPAY_CRM_URL=
NOWPAYMENTS_POSTPAY_CRM_SECRET=
NOWPAYMENTS_POSTPAY_CRM_AUTH_HEADER=X-PayeeProof-CRM-Secret
NOWPAYMENTS_POSTPAY_CRM_TIMEOUT_SEC=6
NOWPAYMENTS_POSTPAY_CRM_EVENT_NAME=payment_confirmed
# Example: {"pilot_399":{"amount_usd":399,"title":"PayeeProof Pilot","description":"30-day pilot setup and access"}}
NOWPAYMENTS_PRODUCTS_JSON=