# `Worldpay.Config`
[🔗](https://github.com/iamkanishka/worldpay/blob/v1.0.0/lib/worldpay/config.ex#L1)

Runtime configuration for the Worldpay client.

## Application config

    config :worldpay,
      username: "your-username",
      password: "your-password",
      environment: :try,
      api_version: "2025-01-01",
      wpg_merchant_code: "MYMERCHANT",
      wpg_username: "wpg-user",
      wpg_password: "wpg-pass",
      timeout: 30_000,
      retry_count: 3,
      circuit_breaker: true

## Environment variable overrides (take precedence)

- `WORLDPAY_USERNAME`
- `WORLDPAY_PASSWORD`
- `WORLDPAY_ENVIRONMENT` — `"try"` or `"live"`
- `WORLDPAY_API_VERSION`
- `WORLDPAY_WPG_MERCHANT_CODE`
- `WORLDPAY_WPG_USERNAME`
- `WORLDPAY_WPG_PASSWORD`

# `environment`

```elixir
@type environment() :: :try | :live
```

# `t`

```elixir
@type t() :: %Worldpay.Config{
  api_version: String.t(),
  base_url: String.t(),
  circuit_breaker: boolean(),
  environment: environment(),
  password: String.t() | nil,
  retry_count: non_neg_integer(),
  timeout: non_neg_integer(),
  username: String.t() | nil,
  wpg_base_url: String.t(),
  wpg_merchant_code: String.t() | nil,
  wpg_password: String.t() | nil,
  wpg_username: String.t() | nil
}
```

# `basic_auth`

```elixir
@spec basic_auth(t()) :: String.t()
```

Encode Basic Auth header value for Access APIs.

# `default_access_url`

```elixir
@spec default_access_url() :: String.t()
```

Default Access API base URL (try environment).

# `default_wpg_url`

```elixir
@spec default_wpg_url() :: String.t()
```

Default WPG base URL (try environment).

# `new`

```elixir
@spec new(keyword()) :: t()
```

Build a `Config` from application env and environment variables.

Environment variables take precedence over application config.
The `overrides` keyword list takes the highest precedence.

# `wpg_basic_auth`

```elixir
@spec wpg_basic_auth(t()) :: String.t()
```

Encode Basic Auth header value for WPG.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
