Skip to content
Start here

Monetization

MonetizationRules

resource cloudflare_monetization_rules

required Expand Collapse
zone_id: String

The unique ID of the zone.

rules: List[Attributes]

Full desired Payment Required ruleset. An empty array clears all payment rules. The ruleset may contain at most 40 unique wallet addresses; address comparison is case-insensitive. Every address must pass wallet screening before deployment.

address: String

0x-prefixed 20-byte hexadecimal Ethereum address. Mixed-case addresses must carry a valid EIP-55 checksum; all-lowercase or all-uppercase addresses are also accepted. The address must pass wallet screening whenever its rule is deployed or patched.

expression: String

Wirefilter expression identifying the requests that require payment. Forwarded verbatim to the Rulesets API, which validates its syntax.

price?: String

Price in the smallest indivisible unit of the configured payment token, encoded as a decimal string. Must be a canonical decimal integer in [1000, 100000000]: no leading zeros, and a bare JSON number is rejected. The price is required for the fixed-price schemes (“exact” and “upto”) and must be at least 1000, the smallest amount the payment facilitator can settle ($0.001 for a 6-decimal token such as USDC), and at most 100000000 ($100 for a 6-decimal token). When the scheme is “origin_controlled” the origin server sets pricing dynamically and the rule carries no price: the field must be omitted — any provided value, including “0”, is rejected because it would not be enforced. Responses always encode this as a string and omit it for “origin_controlled” rules; the pattern matches exactly the set of values the server accepts.

scheme: String

X402 payment scheme. “exact” requires the specified payment amount; “upto” permits a payment up to the specified amount. Both fixed-price schemes require the price field.

id?: String

Optional on input. Include the ID of an existing payment rule to update it in place, preserving its stable identity across the full-ruleset replacement; omit it to create a new rule. An ID that does not match an existing payment rule in the zone is rejected. Rules omitted from the request are deleted.

description?: String
enabled?: Bool
computed Expand Collapse
id: String

The unique ID of the zone.

cloudflare_monetization_rules

resource "cloudflare_monetization_rules" "example_monetization_rules" {
  zone_id = "9f1839b6152d298aca64c4e906b6d074"
  rules = [{
    address = "0x1234567890abcdef1234567890abcdef12345678==="
    expression = "(http.request.uri.path eq \"/premium\" and http.request.method in {\"GET\" \"POST\"})"
    price = "250000"
    scheme = "exact"
    id = "023e105f4ecef8ad9ca31a8372d0c353"
    description = "Premium API endpoint"
    enabled = true
  }]
}

data cloudflare_monetization_rules

required Expand Collapse
zone_id: String

The unique ID of the zone.

computed Expand Collapse
id: String

The unique ID of the zone.

rules: List[Attributes]

The zone’s payment rules, in the order they are evaluated. Empty when the zone has no payment rules.

address: String

0x-prefixed 20-byte hexadecimal Ethereum address. Mixed-case addresses must carry a valid EIP-55 checksum; all-lowercase or all-uppercase addresses are also accepted. The address must pass wallet screening whenever its rule is deployed or patched.

expression: String

Wirefilter expression identifying the requests that require payment. Forwarded verbatim to the Rulesets API, which validates its syntax.

price: String

Price in the smallest indivisible unit of the configured payment token, encoded as a decimal string. Must be a canonical decimal integer in [1000, 100000000]: no leading zeros, and a bare JSON number is rejected. The price is required for the fixed-price schemes (“exact” and “upto”) and must be at least 1000, the smallest amount the payment facilitator can settle ($0.001 for a 6-decimal token such as USDC), and at most 100000000 ($100 for a 6-decimal token). When the scheme is “origin_controlled” the origin server sets pricing dynamically and the rule carries no price: the field must be omitted — any provided value, including “0”, is rejected because it would not be enforced. Responses always encode this as a string and omit it for “origin_controlled” rules; the pattern matches exactly the set of values the server accepts.

scheme: String

X402 payment scheme. “exact” requires the specified payment amount; “upto” permits a payment up to the specified amount. Both fixed-price schemes require the price field.

id: String

The server-assigned unique ID of the payment rule. Stable across full-ruleset replacements.

description: String
enabled: Bool

cloudflare_monetization_rules

data "cloudflare_monetization_rules" "example_monetization_rules" {
  zone_id = "9f1839b6152d298aca64c4e906b6d074"
}