This guide shows you how to deploy a fully working Formance stack for testing using the unified formance Helm chart with the CE demo profile.
What Gets Deployed
The CE demo profile layers on top of ce-minimal.yaml and adds:
- Bundled PostgreSQL — single-node Bitnami database for all modules
- A
demo-demo stack — pre-configured via regions.stacks with Gateway and Ledger modules (version v3.1)
- Settings — PostgreSQL URI, resource requests, and replica count configured automatically via
regions.settings
- Each module runs with 2 replicas and minimal resources (50m CPU, 500Mi memory)
Default host: formance.localhost
Install the Demo
helm upgrade --install formance oci://ghcr.io/formancehq/helm/formance \
--version 1.0.1 \
--namespace formance-system \
--create-namespace \
-f https://raw.githubusercontent.com/formancehq/helm/main/charts/formance/profiles/ce-minimal.yaml \
-f https://raw.githubusercontent.com/formancehq/helm/main/charts/formance/profiles/ce-demo.yaml
The demo deployment uses a bundled PostgreSQL without persistent storage. Do not use in production.
Profiles are layered using multiple -f flags. The ce-demo.yaml profile adds demo stacks and settings on top of the operator-only ce-minimal.yaml.
Verify the Installation
Check that the operator and PostgreSQL pods are running:
kubectl get pods -n formance-system
Check that the stack has been created:
You should see a demo-demo stack. Wait for all stack modules to become ready:
kubectl get pods --all-namespaces -l formance.com/stack
Access the Demo
Port-forward the Gateway to access the stack API locally:
kubectl port-forward -n demo-demo svc/gateway 8080:8080
Verify the stack is responding:
curl http://localhost:8080/versions
What’s Inside the CE Demo Profile
The ce-demo.yaml profile configures the following Helm values:
global:
serviceHost: "formance.localhost"
regions:
settings:
postgres-uri:
key: "postgres.*.uri"
value: "postgresql://formance:formance@postgresql.formance-system.svc:5432?disableSSLMode=true"
resource-requests:
key: "deployments.*.containers.*.resource-requirements.requests"
value: "cpu=50m,memory=500Mi"
replicas:
key: "deployments.*.replicas"
value: "2"
stacks:
demo-demo:
debug: true
versionsFromFile: "v3.1"
modules:
gateway: {}
ledger: {}
This creates:
- A
Stack CRD named demo-demo with the v3.1 module versions
Settings CRDs for PostgreSQL URI, resource requests, and replica count
Create Your Own Demo Stack
Instead of using the profile, define a custom demo stack directly in your values:
# custom-demo.yaml
regions:
settings:
postgres-uri:
key: "postgres.*.uri"
value: "postgresql://formance:formance@postgresql.formance-system.svc:5432?disableSSLMode=true"
stacks:
my-test-stack:
versionsFromFile: "v3.1"
modules:
gateway: {}
ledger: {}
payments: {}
helm upgrade --install formance oci://ghcr.io/formancehq/helm/formance \
--version 1.0.1 \
--namespace formance-system \
--create-namespace \
-f custom-demo.yaml
Clean Up
To remove the demo deployment:
helm uninstall formance -n formance-system
Next Steps