{
  "schemaVersion": "1.0",
  "item": {
    "slug": "fly-io",
    "name": "Fly.io",
    "legalName": "Fly.io, Inc.",
    "category": "cloud-infrastructure",
    "description": "Fly.io bills by organization each month and links historical billing cycles to a Stripe portal where invoice documents can be downloaded.",
    "status": "import_only",
    "website": "https://fly.io",
    "billingPortalUrl": "https://fly.io/dashboard",
    "invoiceHelpUrl": "https://fly.io/docs/about/billing/",
    "accessMethods": [
      "vendor_portal",
      "connected_mailbox",
      "manual_upload"
    ],
    "authentication": {
      "oauth": false,
      "apiToken": false,
      "browserSession": true,
      "requiredRole": "Organization member with billing access; organization admin for billing changes"
    },
    "capabilities": {
      "accountDiscovery": {
        "supported": false,
        "notes": "No Billproof account-discovery capability is claimed for this vendor."
      },
      "billingHistory": {
        "supported": true,
        "notes": "Historical billing records are available in the vendor portal."
      },
      "invoiceMetadata": {
        "supported": true,
        "notes": "The vendor portal exposes invoice or statement summary data."
      },
      "invoicePdf": {
        "supported": true,
        "notes": "Past billing cycles link to the Stripe billing portal for invoice download."
      },
      "creditNotes": {
        "supported": "unknown"
      },
      "lineItems": {
        "supported": true,
        "notes": "Invoices break down provisioned resource and usage charges."
      },
      "usage": {
        "supported": true,
        "notes": "Fly.io documents compute, volume, snapshot, network, and extension billing."
      },
      "subscriptions": {
        "supported": "partial",
        "notes": "Billing is resource- and organization-based, not solely subscription-based."
      },
      "paymentMethod": {
        "supported": true,
        "notes": "Billing organizations manage credit card, Stripe Link, or credits."
      }
    },
    "billing": {
      "cadence": [
        "monthly"
      ],
      "invoiceLocation": "Fly.io dashboard → organization → Billing → select View for a past cycle",
      "emailedAutomatically": "unknown",
      "documentTypes": [
        "invoice"
      ]
    },
    "billproof": {
      "retrieval": false,
      "normalization": true,
      "transactionMatching": true,
      "connectionAvailable": false,
      "limitations": [
        "Billproof does not currently connect directly to Fly.io.",
        "A user must provide the invoice or statement by upload or an enabled email workflow.",
        "Unified billing consolidates linked organizations into the billing organization's invoice."
      ]
    },
    "normalizedFields": [
      "vendor",
      "invoice_number",
      "invoice_date",
      "billing_period",
      "currency",
      "subtotal",
      "tax",
      "total",
      "line_items",
      "account_identifier",
      "organization",
      "machine",
      "volume",
      "region",
      "network_usage"
    ],
    "commonCardDescriptors": [],
    "researchedAt": "2026-08-28",
    "lastVerifiedAt": "2026-08-28",
    "sources": [
      {
        "title": "Fly.io Billing",
        "url": "https://fly.io/docs/about/billing/",
        "type": "official"
      }
    ],
    "guide": {
      "quickAnswer": "Open the billed Fly.io organization, go to Billing, choose View for the relevant cycle, and download the invoice from the linked Stripe billing portal.",
      "requiredRole": "An organization member authorized to view billing",
      "steps": [
        "Sign in to Fly.io and select the organization responsible for the charge.",
        "Open the organization's Billing section.",
        "Find the required past billing cycle and select View.",
        "In the Stripe billing portal, open the invoice for that cycle.",
        "Download the invoice and verify any linked-organization charges before filing it."
      ],
      "historyLocation": "Organization Billing page; documents open in the Stripe billing portal",
      "missingInvoice": "Check whether the organization is linked to a separate Billing Organization. Confirm the cycle is closed and contact Fly.io billing support if the billing organization has no invoice.",
      "formats": [
        "PDF"
      ],
      "commonProblems": [
        "A linked organization does not hold its own invoice after unified billing is configured.",
        "A user checks an application instead of the organization Billing page.",
        "Volumes, snapshots, network traffic, or extensions remain billable after compute changes."
      ],
      "matchingTips": [
        "Match organization, billing cycle, currency, total, and payment date.",
        "For unified billing, allocate linked-organization usage only after matching the consolidated invoice to the payment."
      ]
    },
    "statusLabel": "Email or upload only",
    "cta": "Normalize a Fly.io invoice",
    "manualGuide": null,
    "urls": {
      "html": "https://billproof.io/integrations/fly-io",
      "json": "https://billproof.io/api/public/vendors/fly-io.json",
      "capabilities": "https://billproof.io/api/public/vendors/fly-io/capabilities.json"
    }
  }
}
