> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blnkfinance.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration Reference

> Review required fields and default values for Blnk configuration.

export const CtaCallout = props => {
  const {title, buttonLabel, href, trackingEvent, buttonTarget, rel = "noopener noreferrer", children} = props;
  const handleCtaClick = () => {
    if (typeof window === "undefined" || !trackingEvent) {
      return;
    }
    try {
      window.dispatchEvent(new CustomEvent("blnk:docs-cta", {
        detail: {
          name: trackingEvent,
          href
        }
      }));
    } catch {}
    try {
      window.posthog?.capture?.(trackingEvent, {
        href
      });
    } catch {}
    const gaPayload = {
      cta_href: href
    };
    try {
      window.gtag?.("event", trackingEvent, gaPayload);
    } catch {}
    try {
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({
        event: trackingEvent,
        ...gaPayload
      });
    } catch {}
  };
  const isExternal = typeof href === "string" && (/^https?:\/\//i).test(href);
  const target = buttonTarget ?? (isExternal ? "_blank" : undefined);
  const linkRel = isExternal ? rel : undefined;
  return <section className="cta-callout not-prose relative my-8 w-full min-w-0 overflow-hidden rounded-xl border border-zinc-200 p-5 dark:border-white/10">
      <div className="cta-callout-noise" aria-hidden="true" />
      <div className="cta-callout-layout">
        {title ? <div className="cta-callout-title-row">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="14" height="14" className="cta-callout-icon shrink-0 text-zinc-800 dark:text-zinc-200" aria-hidden="true">
              <g fill="none" fillRule="nonzero">
                <path d="M28 0v28H0V0h28ZM14.691833333333335 27.134333333333334l-0.012833333333333334 0.0023333333333333335 -0.08283333333333333 0.04083333333333334 -0.023333333333333334 0.004666666666666667 -0.016333333333333335 -0.004666666666666667 -0.08283333333333333 -0.04083333333333334c-0.011666666666666667 -0.004666666666666667 -0.022166666666666668 -0.0011666666666666668 -0.028000000000000004 0.005833333333333334l-0.004666666666666667 0.011666666666666667 -0.019833333333333335 0.49933333333333335 0.005833333333333334 0.023333333333333334 0.011666666666666667 0.015166666666666667 0.12133333333333333 0.08633333333333333 0.0175 0.004666666666666667 0.014000000000000002 -0.004666666666666667 0.12133333333333333 -0.08633333333333333 0.014000000000000002 -0.018666666666666668 0.004666666666666667 -0.019833333333333335 -0.019833333333333335 -0.4981666666666667c-0.0023333333333333335 -0.011666666666666667 -0.0105 -0.019833333333333335 -0.019833333333333335 -0.021Zm0.3091666666666667 -0.13183333333333336 -0.015166666666666667 0.0023333333333333335 -0.21583333333333335 0.1085 -0.011666666666666667 0.011666666666666667 -0.0035000000000000005 0.012833333333333334 0.021 0.5016666666666667 0.005833333333333334 0.014000000000000002 0.009333333333333334 0.008166666666666668 0.23450000000000004 0.1085c0.014000000000000002 0.004666666666666667 0.026833333333333334 0 0.03383333333333334 -0.009333333333333334l0.004666666666666667 -0.016333333333333335 -0.03966666666666667 -0.7163333333333334c-0.0035000000000000005 -0.014000000000000002 -0.011666666666666667 -0.023333333333333334 -0.023333333333333334 -0.025666666666666667Zm-0.8341666666666667 0.0023333333333333335a0.026833333333333334 0.026833333333334334 0 0 0 -0.0315 0.007000000000000001l-0.007000000000000001 0.016333333333333335 -0.03966666666666667 0.7163333333333334c0 0.014000000000000002 0.008166666666666668 0.023333333333333334 0.019833333333333335 0.028000000000000004l0.0175 -0.0023333333333333335 0.23450000000000004 -0.1085 0.011666666666666667 -0.009333333333333334 0.004666666666666667 -0.012833333333333334 0.019833333333333335 -0.5016666666666667 -0.0035000000000000005 -0.014000000000000002 -0.011666666666666667 -0.011666666666666667 -0.21466666666666667 -0.10733333333333334Z" strokeWidth="1.1667" />
                <path fill="currentColor" d="M14 2.916666666666667A1.75 1.75 0 0 1 15.750000000000002 4.666666666666667v6.302333333333334L21.207666666666668 7.816666666666667a1.75 1.75 0 0 1 1.75 3.031L17.5 14l5.457666666666667 3.151166666666667a1.75 1.75 0 0 1 -1.75 3.031l-5.457666666666667 -3.1500000000000004V23.333333333333336a1.75 1.75 0 0 1 -3.5 0v-6.302333333333334L6.792333333333334 20.183333333333337a1.75 1.75 0 1 1 -1.75 -3.031L10.5 14 5.042333333333334 10.848833333333333a1.75 1.75 0 0 1 1.75 -3.031l5.457666666666667 3.1500000000000004V4.666666666666667A1.75 1.75 0 0 1 14 2.916666666666667Z" strokeWidth="1.1667" />
              </g>
            </svg>
            <p className="cta-callout-title min-w-0 font-semibold text-zinc-800 dark:text-zinc-200">
              {title}
            </p>
          </div> : null}
        <div className={`cta-callout-body text-sm leading-normal text-zinc-800 dark:text-zinc-200${title ? " cta-callout-body--indented" : ""}`}>
          {children}
        </div>
        <a href={href} target={target} rel={linkRel} onClick={handleCtaClick} data-docs-cta={trackingEvent || undefined} className="cta-callout-button inline-flex items-center justify-center gap-1 rounded-full bg-white px-3 py-1.5 text-sm font-semibold transition hover:bg-zinc-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/50 dark:bg-white dark:hover:bg-zinc-200">
          {buttonLabel}
          <span className="cta-callout-button-arrow" aria-hidden="true">
            →
          </span>
        </a>
      </div>
    </section>;
};

This page is a **broad** reference for common Blnk settings and typical defaults. The Blnk `config` package in the application repository is the source of truth; when in doubt, confirm keys and defaults in source.

Fields with no defaults are left blank in the examples.

<Note>
  **Note:** In `blnk.json`, duration settings are integer seconds. In environment variables, duration settings use Go duration format (e.g. `5s`, `30m`) where documented.
</Note>

<CodeGroup>
  ```bash blnk.env expandable theme={"system"}
  # Project
  # Defaults to "Blnk Server" when not set.
  BLNK_PROJECT_NAME=Blnk Server

  # Server
  # Port defaults to 5001. SSL and secure mode are off by default.
  BLNK_SERVER_SECURE=false
  BLNK_SERVER_SECRET_KEY=
  BLNK_SERVER_PORT=5001
  BLNK_SERVER_MAX_REQUEST_BODY_SIZE_MB=5
  BLNK_SERVER_MAX_UPLOAD_SIZE_MB=256
  BLNK_METRICS_BEARER_TOKEN=

  # Database
  # DNS is required for Blnk to start successfully. Docker default shown below.
  # CONNECTION_MAX_LIFETIME and CONNECTION_MAX_IDLE_TIME are integer seconds.
  BLNK_DATA_SOURCE_DNS=postgres://postgres:password@postgres:5432/blnk?sslmode=disable
  BLNK_DATABASE_MAX_OPEN_CONNS=50
  BLNK_DATABASE_MAX_IDLE_CONNS=25
  BLNK_DATABASE_CONN_MAX_LIFETIME=30m
  BLNK_DATABASE_CONN_MAX_IDLE_TIME=5m

  # Redis
  # DNS is required for Blnk to start successfully. Docker default shown below.
  BLNK_REDIS_DNS=redis:6379
  BLNK_REDIS_SKIP_TLS_VERIFY=false

  # Typesense
  # Docker default shown for the Typesense endpoint. The API key defaults to "blnk-api-key".
  BLNK_TYPESENSE_DNS=http://typesense:8108
  BLNK_TYPESENSE_KEY=blnk-api-key

  # Transactions
  # LOCK_DURATION and LOCK_WAIT_TIMEOUT are integer seconds.
  BLNK_TRANSACTION_BATCH_SIZE=1000
  BLNK_TRANSACTION_MAX_QUEUE_SIZE=1000
  BLNK_TRANSACTION_MAX_WORKERS=10
  BLNK_TRANSACTION_LOCK_DURATION=1m
  BLNK_TRANSACTION_LOCK_WAIT_TIMEOUT=3s
  BLNK_TRANSACTION_INDEX_QUEUE_PREFIX=transactions
  BLNK_TRANSACTION_ENABLE_COALESCING=true
  BLNK_TRANSACTION_ENABLE_QUEUED_CHECKS=false
  BLNK_TRANSACTION_DISABLE_BATCH_REFERENCE_CHECK=false

  # Queue
  BLNK_QUEUE_TRANSACTION=new:transaction
  BLNK_QUEUE_WEBHOOK=new:webhook
  BLNK_QUEUE_INDEX=new:index
  BLNK_QUEUE_INFLIGHT_EXPIRY=new:inflight-expiry
  BLNK_QUEUE_INFLIGHT_COMMIT=new:inflight-commit
  BLNK_QUEUE_NUMBER_OF_QUEUES=20
  BLNK_QUEUE_INSUFFICIENT_FUND_RETRIES=false
  BLNK_QUEUE_MAX_RETRY_ATTEMPTS=5
  BLNK_QUEUE_MONITORING_PORT=5004
  BLNK_QUEUE_WEBHOOK_CONCURRENCY=20

  # Hot-lane and worker tuning
  # HOT_PAIR_TTL is integer seconds.
  BLNK_QUEUE_ENABLE_HOT_LANE=false
  BLNK_QUEUE_HOT_QUEUE_NAME=hot_transactions
  BLNK_QUEUE_HOT_QUEUE_CONCURRENCY=1
  BLNK_QUEUE_HOT_PAIR_TTL=300
  BLNK_QUEUE_HOT_PAIR_LOCK_CONTENTION_THRESHOLD=3
  BLNK_QUEUE_REJECT_LOCK_CONTENTION_IMMEDIATELY=false
  BLNK_QUEUE_TRANSACTION_WORKER_CONCURRENCY=4

  # Rate limiting
  # These are the runtime defaults used when rate limiting is not configured. Values are integer seconds.
  BLNK_RATE_LIMIT_RPS=5000000
  BLNK_RATE_LIMIT_BURST=10000000
  BLNK_RATE_LIMIT_CLEANUP_INTERVAL_SEC=10800

  # Reconciliation
  # Retry delay uses Go duration format.
  BLNK_RECONCILIATION_DEFAULT_STRATEGY=one_to_one
  BLNK_RECONCILIATION_PROGRESS_INTERVAL=100
  BLNK_RECONCILIATION_MAX_RETRIES=3
  BLNK_RECONCILIATION_RETRY_DELAY=5s

  # Notifications
  # Leave these blank until you are ready to send Slack alerts or webhooks.
  BLNK_SLACK_WEBHOOK_URL=
  BLNK_WEBHOOK_URL=
  BLNK_WEBHOOK_HEADERS={}

  # Observability
  BLNK_ENABLE_TELEMETRY=false
  BLNK_ENABLE_OBSERVABILITY=false
  # Blnk Cloud DSN for managed monitoring export. Format: https://<write-key>@<host>/<project-id>
  BLNK_CLOUD_DSN=
  # Self-hosted OTLP HTTP export (works when observability is enabled)
  OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
  OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=

  # Tokenization
  BLNK_TOKENIZATION_SECRET=

  # Backups
  BLNK_BACKUP_DIR=
  BLNK_AWS_ACCESS_KEY_ID=
  BLNK_AWS_SECRET_ACCESS_KEY=
  BLNK_S3_ENDPOINT=
  BLNK_S3_BUCKET_NAME=
  BLNK_S3_REGION=
  ```

  ```json blnk.json expandable theme={"system"}
  {
    "project_name": "Blnk Server",
    "server": {
      "secure": false,
      "secret_key": "",
      "port": "5001",
      "metrics_bearer_token": "",
      "max_request_body_size_mb": 5,
      "max_upload_size_mb": 256
    },
    "data_source": {
      "dns": "postgres://postgres:password@postgres:5432/blnk?sslmode=disable",
      "max_open_conns": 50,
      "max_idle_conns": 25,
      "conn_max_lifetime": 1800,
      "conn_max_idle_time": 300
    },
    "redis": {
      "dns": "redis:6379",
      "skip_tls_verify": false,
      "pool_size": 100,
      "min_idle_conns": 20
    },
    "typesense": {
      "dns": "http://typesense:8108"
    },
    "type_sense_key": "blnk-api-key",
    "transaction": {
      "batch_size": 1000,
      "max_queue_size": 1000,
      "max_workers": 10,
      "lock_duration": 60,
      "lock_wait_timeout": 3,
      "index_queue_prefix": "transactions",
      "enable_coalescing": true,
      "enable_queued_checks": false,
      "disable_batch_reference_check": false
    },
    "queue": {
      "transaction_queue": "new:transaction",
      "webhook_queue": "new:webhook",
      "index_queue": "new:index",
      "inflight_expiry_queue": "new:inflight-expiry",
      "inflight_commit_queue": "new:inflight-commit",
      "number_of_queues": 20,
      "insufficient_fund_retries": false,
      "max_retry_attempts": 5,
      "monitoring_port": "5004",
      "webhook_concurrency": 20,
      "enable_hot_lane": false,
      "hot_queue_name": "hot_transactions",
      "hot_queue_concurrency": 1,
      "hot_pair_ttl": 300,
      "hot_pair_lock_contention_threshold": 3,
      "reject_lock_contention_immediately": false,
      "transaction_worker_concurrency": 4
    },
    "rate_limit": {
      "requests_per_second": 5000000,
      "burst": 10000000,
      "cleanup_interval_sec": 10800
    },
    "reconciliation": {
      "default_strategy": "one_to_one",
      "progress_interval": 100,
      "max_retries": 3,
      "retry_delay": 5
    },
    "notification": {
      "slack": {
        "webhook_url": ""
      },
      "webhook": {
        "url": "",
        "headers": {}
      }
    },
    "enable_telemetry": false,
    "enable_observability": false,
    "cloud_dsn": "",
    "tokenization_secret": "",
    "backup_dir": "",
    "aws_access_key_id": "",
    "aws_secret_access_key": "",
    "s3_endpoint": "",
    "s3_bucket_name": "",
    "s3_region": ""
  }
  ```
</CodeGroup>

***

## Need help?

We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool.

To ask questions or discuss issues, please [contact us](mailto:support@blnkfinance.com) or [join our Discord community](https://discord.gg/7WNv94zPpx).

<CtaCallout title="Connect your ledger to Blnk Cloud" href="https://cloud.blnkfinance.com/auth/sign-up?utm_source=blnk_docs&utm_medium=documentation&utm_campaign=need-help" buttonLabel="Open Blnk Cloud" trackingEvent="clicked_cloud_signup">
  Sign up and manage your ledger with our back-office dashboard. You can invite teammates to collaborate and manage your ledger operations directly from the dashboard.
</CtaCallout>
