Economics
What it costs to run, worked out in the open.
Every figure on this page is generated from FRAPE’s canonical cost model — the same versioned file the engineering team maintains — by a deterministic calculator. Inputs, sources and confidence are listed below.
Model 2026.10.0 · us-central1
Estimated monthly cost by volume
| Monthly | 1M transactions / month | 10M transactions / month | 50M transactions / month |
|---|---|---|---|
| Peak requests per second | 1.5 | 15.2 | 76.1 |
| Decision Core calls | 582,000 | 5,820,000 | 29,100,000 |
| External provider calls | 203,700 | 2,037,000 | 10,185,000 |
| Infrastructure | $804.33 | $1,402.73 | $3,567.64 |
| Decision Core | $38.50 | $384.99 | $1,924.97 |
| Providers (base price) | $407.40 | $4,074.00 | $20,370.00 |
| Total (base) | $1,250.23 | $5,861.72 | $25,862.61 |
| Total range (provider price low – high) | $945 – $2,065 | $2,806 – $14,010 | $10,585 – $66,603 |
| Cost per transaction (base) | $0.001250 | $0.000586 | $0.000517 |
| Cost per 1k transactions (base) | $1.2502 | $0.5862 | $0.5173 |
Fixed infrastructure dominates at low volume and amortises as volume grows. External enrichment is the largest variable cost, which is why the decision flow serves as much as possible from rules, cache and local data.
Interactive
Try your own volume and mix
- Cost per 1k transactions
- $0.5862
- range $0.2806 – $1.4010
- Monthly total (base)
- $5,862
- 5,820,000 Decision Core calls · 2,037,000 provider calls
- Infrastructure$1,403 (23.9%)
- Decision Core$385 (6.6%)
- Providers (base)$4,074 (69.5%)
Engineering cost estimate (model 2026.10.0, 2026-10-01). Not commercial pricing.
Sensitivity
Decision Core share versus provider share
| Decision Core share ↓ / provider share → | 10% | 35% | 60% | 90% |
|---|---|---|---|---|
| 0% | $0.2567 | $0.5477 | $0.8387 | $1.1879 |
| 25% | $0.2727 | $0.5637 | $0.8547 | $1.2039 |
| 50% | $0.2888 | $0.5798 | $0.8708 | $1.2200 |
| 75% | $0.3048 | $0.5958 | $0.8868 | $1.2360 |
| 100% | $0.3208 | $0.6118 | $0.9028 | $1.2520 |
Moving down a column (more Decision Core calls) changes cost far less than moving along a row (more external enrichment): the Decision Core is billed per input token at a low published rate, while provider lookups are priced per call.
Breakdown
Infrastructure components
| Monthly | 1M transactions / month | 10M transactions / month | 50M transactions / month |
|---|---|---|---|
| GKE Autopilot Pods | $308.32 | $308.32 | $308.32 |
| GKE cluster fee | $73.00 | $73.00 | $73.00 |
| Cloud SQL (HA, storage, backups) | $252.41 | $829.68 | $2,900.65 |
| Pub/Sub | $0.45 | $4.47 | $22.35 |
| Cloud Logging | $0.48 | $4.77 | $23.84 |
| Cloud Trace | $0.40 | $4.00 | $20.00 |
| Internet egress | $0.23 | $2.29 | $11.44 |
| Load balancer | $18.30 | $18.71 | $20.54 |
| Cloud Armor requests | $0.75 | $7.50 | $37.50 |
| Other fixed services | $150.00 | $150.00 | $150.00 |
| Infrastructure total | $804.33 | $1,402.73 | $3,567.64 |
Inputs
Assumptions and sources
Each input is labelled as a published price, a list-price estimate or an engineering assumption, with its source and our confidence. Cloud prices are us-central1 list prices; free tiers and discounts are ignored.
| Input | Value | Type · confidence | Source |
|---|---|---|---|
| hours_per_month | 730hours | list-price estimate · high | Google Cloud billing convention (730 hours per month): cloud.google.com/products/calculator |
| peak_to_average_ratio | 4ratio | assumption · medium | FRAPE engineering assumption: payment traffic is diurnal with promotional spikes; capacity is sized for peak, not average. |
| terminal_rule_rate | 0.03share of transactions | assumption · low | FRAPE engineering assumption (FR-SCORE-006): share of events stopped by terminal hard rules (blocklists, unsupported country, test transactions) with no provider or Decision Core call. Kept low on purpose so the model is conservative. |
| provider_required_share | 0.35share of non-terminal transactions | assumption · low | FRAPE engineering assumption (FR-ENR-001): share of non-terminal events whose enrichment plan requires at least one external capability. |
| capabilities_per_enriched_transaction | 1.5capability lookups per enriched transaction | assumption · medium | FRAPE engineering assumption: typical plan needs IP reputation, sometimes email or phone reputation. |
| cache_hit_rate | 0.6share of capability lookups | assumption · low | FRAPE engineering assumption (FR-ENR-002, FR-SCORE-007): share of required capability lookups served from Redis cache or local Postgres reference data. Returning customers, devices and IP ranges repeat heavily; 0.6 is deliberately below what repeat-traffic merchants usually see. |
| decision_core_share | 0.6share of non-terminal transactions | assumption · low | FRAPE engineering assumption: share of non-terminal events that reach Decision Core. Rules and policy can settle the rest; the model assumes a high share to stay conservative. |
| Input | Value | Type · confidence | Source |
|---|---|---|---|
| input_tokens_per_call | 1,500tokens per call | assumption · medium | FRAPE engineering assumption: normalised state plus five questions. A reference example used 476 input tokens; 1500 is a conservative upper estimate for FRAPE's state. |
| price_per_input_token_usd | 0.000000042USD per input token | published price · medium | Published list price of the Decision Core's hosted model (USD 0.042 per 1M input tokens) — alpha API, price may change. |
| price_per_output_token_usd | 0USD per output token | published price · medium | Published list price of the Decision Core's hosted model (output tokens not billed) |
| output_tokens_per_call | 100tokens per call | assumption · medium | FRAPE engineering assumption; irrelevant while output tokens are free but kept so a price change is a one-line edit. |
| retry_overhead | 0.05extra share of calls | assumption · medium | FRAPE engineering assumption: retries and calls whose answers are discarded (timeouts, schema-invalid answers per the Decision Core spec) are still billed. |
| Input | Value | Type · confidence | Source |
|---|---|---|---|
| cost_per_call_usd | 0.0005 / 0.002 / 0.006USD per external provider call | assumption · low | FRAPE engineering assumption: blended per-call price for third-party enrichment (IP, email, phone reputation). Actual prices are contract-specific and configured by SUPER_ADMIN (FR-PROV-006); no specific vendor's price is implied. |
| Input | Value | Type · confidence | Source |
|---|---|---|---|
| autopilot_vcpu_hour_usd | 0.0445USD per vCPU-hour | list-price estimate · medium | GKE Autopilot general-purpose Pod pricing, us-central1 list price: cloud.google.com/kubernetes-engine/pricing |
| autopilot_memory_gib_hour_usd | 0.0049225USD per GiB-hour | list-price estimate · medium | GKE Autopilot general-purpose Pod pricing, us-central1 list price: cloud.google.com/kubernetes-engine/pricing |
| gke_cluster_fee_hour_usd | 0.1USD per cluster-hour | list-price estimate · high | GKE cluster management fee: cloud.google.com/kubernetes-engine/pricing (free-tier credit ignored to stay conservative) |
| cloud_sql_vcpu_hour_usd | 0.0413USD per vCPU-hour | list-price estimate · medium | Cloud SQL for PostgreSQL Enterprise edition, us-central1 list price: cloud.google.com/sql/pricing |
| cloud_sql_memory_gib_hour_usd | 0.007USD per GiB-hour | list-price estimate · medium | Cloud SQL for PostgreSQL Enterprise edition, us-central1 list price: cloud.google.com/sql/pricing |
| cloud_sql_ha_multiplier | 2multiplier | list-price estimate · high | Cloud SQL high-availability configuration is billed at twice the zonal price for compute and storage: cloud.google.com/sql/pricing |
| cloud_sql_ssd_gib_month_usd | 0.17USD per GiB-month | list-price estimate · medium | Cloud SQL SSD storage, us-central1 list price: cloud.google.com/sql/pricing |
| cloud_sql_backup_gib_month_usd | 0.08USD per GiB-month | list-price estimate · medium | Cloud SQL backup storage list price: cloud.google.com/sql/pricing |
| pubsub_throughput_tib_usd | 40USD per TiB | list-price estimate · medium | Pub/Sub message delivery (throughput) list price; free tier ignored: cloud.google.com/pubsub/pricing |
| logging_ingestion_gib_usd | 0.5USD per GiB | list-price estimate · medium | Cloud Logging ingestion list price; free allotment ignored: cloud.google.com/stackdriver/pricing |
| trace_million_spans_usd | 0.2USD per million spans | list-price estimate · medium | Cloud Trace span ingestion list price; free allotment ignored: cloud.google.com/stackdriver/pricing |
| internet_egress_gib_usd | 0.12USD per GiB | list-price estimate · medium | Premium Tier internet egress, first-band list price: cloud.google.com/vpc/network-pricing |
| lb_forwarding_rule_hour_usd | 0.025USD per hour | list-price estimate · medium | External Application Load Balancer forwarding rule list price: cloud.google.com/vpc/network-pricing#lb |
| lb_data_processed_gib_usd | 0.008USD per GiB | list-price estimate · medium | External Application Load Balancer data processing list price: cloud.google.com/vpc/network-pricing#lb |
| cloud_armor_million_requests_usd | 0.75USD per million requests | list-price estimate · medium | Cloud Armor Standard request evaluation list price: cloud.google.com/armor/pricing |
| other_fixed_monthly_usd | 150USD per month | assumption · low | FRAPE engineering allowance for Secret Manager, Artifact Registry, Cloud Armor policy/rule fees, KMS, Cloud Monitoring and DNS: cloud.google.com/pricing/list |
| Input | Value | Type · confidence | Source |
|---|---|---|---|
| stored_bytes_per_event | 8,192bytes per event | assumption · medium | FRAPE engineering assumption (FR-SCORE-009): event row, features snapshot, rule matches, provider summary and indexes. |
| retention_months | 13months | assumption · medium | FRAPE engineering assumption: 13-month retention covers chargeback windows; actual retention is an organization setting (FR-ORG-003). |
| base_storage_gib | 20GiB | assumption · medium | FRAPE engineering assumption: reference data, identities, audit, cases. |
| backup_to_storage_ratio | 1ratio | assumption · low | FRAPE engineering assumption: retained backups plus PITR logs roughly equal live data size (NFR-DR-001). |
| pubsub_billable_bytes_per_transaction | 12,288bytes per transaction | assumption · medium | FRAPE engineering assumption: event.scored publish plus deliveries to alerting, webhook and analytics subscriptions, each rounded up to the Pub/Sub per-message minimum. |
| log_bytes_per_transaction | 1,024bytes per transaction | assumption · medium | FRAPE engineering assumption: one structured access log line per request, no bodies (NFR-OBS-001). |
| trace_sample_rate | 0.1share of transactions | assumption · medium | FRAPE engineering assumption: head sampling at 10%. |
| spans_per_traced_transaction | 20spans | assumption · medium | FRAPE engineering assumption: decision-flow stages, DB, cache, provider and Decision Core spans. |
| egress_bytes_per_transaction | 2,048bytes per transaction | assumption · medium | FRAPE engineering assumption: /v1/score response plus outbound webhook deliveries. |
| lb_processed_bytes_per_transaction | 6,144bytes per transaction | assumption · medium | FRAPE engineering assumption: request including browser signals plus response. |
| capacity_headroom | 1.3multiplier on peak load | assumption · medium | FRAPE engineering assumption: 30% headroom over peak for HPA lag and zone loss. |
Design partners
Help shape what FRAPE decides next.
We are working with a small number of teams who score payments, sign-ups, logins or payouts and want decisions they can explain line by line. Bring your rules and your edge cases.