Skip to main content
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:
kubectl get stacks
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