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

> ## Agent Instructions
> For account actions, read https://ohmyho.st/skills/ohmyhost-get-started/SKILL.md and use the authenticated ohmyho.st CLI, local product MCP or supported remote OAuth MCP. Read the current project source binding before choosing GitHub or managed versions. Mintlify search only reads documentation. Preserve the customer’s selected project, environment and authentication provider; keep private application values in the portal or local stdin flow.

# Observe and reconcile an owner's original checkout

> Reads Stripe and reconciles confirmed credits/refunds idempotently. payment_confirmed describes the original Checkout, not spendable credit or current Paid entitlement. Read organization credits for available funding and the organization account's effective plan for Paid coverage; paid_until is the paid Stripe period end, not the end of renewal grace. No new purchase intent or payment is created; an uncertain original Checkout can resume using its stored identity.



## OpenAPI

````yaml /openapi.json get /v1/organizations/{organization_id}/billing/checkouts/{checkout_id}
openapi: 3.1.2
info:
  title: ohmyho.st API
  version: 0.0.0
  description: >-
    Public REST API for ohmyho.st hosting, projects, domains, email, credits and
    exports.
servers:
  - url: https://app.ohmyho.st
    description: Production control API
  - url: https://dev.app.ohmyho.st
    description: Development control API
security:
  - BearerAuth: []
paths:
  /v1/organizations/{organization_id}/billing/checkouts/{checkout_id}:
    get:
      summary: Observe and reconcile an owner's original checkout
      description: >-
        Reads Stripe and reconciles confirmed credits/refunds idempotently.
        payment_confirmed describes the original Checkout, not spendable credit
        or current Paid entitlement. Read organization credits for available
        funding and the organization account's effective plan for Paid coverage;
        paid_until is the paid Stripe period end, not the end of renewal grace.
        No new purchase intent or payment is created; an uncertain original
        Checkout can resume using its stored identity.
      operationId: getBillingCheckout
      parameters:
        - $ref: '#/components/parameters/RequestId'
        - name: organization_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Ulid'
        - name: checkout_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Ulid'
      responses:
        '200':
          description: Current observed checkout and credit reconciliation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCheckout'
        '400':
          $ref: '#/components/responses/Problem'
        '401':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Problem'
        '429':
          $ref: '#/components/responses/Problem'
        '503':
          $ref: '#/components/responses/Problem'
components:
  parameters:
    RequestId:
      name: X-Request-Id
      in: header
      description: Optional caller-provided correlation identifier.
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 128
  schemas:
    Ulid:
      type: string
      pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
    BillingCheckout:
      type: object
      additionalProperties: false
      required:
        - organization_id
        - checkout_id
        - offer
        - state
        - payment_confirmed
        - url
        - expires_at
        - packs
        - credited_micros
        - revoked_micros
        - paid_until
        - required_action
        - billing_issue
      properties:
        organization_id:
          $ref: '#/components/schemas/Ulid'
        checkout_id:
          $ref: '#/components/schemas/Ulid'
        offer:
          type: string
          enum:
            - topup
            - paid
        state:
          type: string
          enum:
            - open
            - complete
            - expired
        payment_confirmed:
          type: boolean
        url:
          type:
            - string
            - 'null'
          format: uri
          maxLength: 8192
        expires_at:
          type: string
          format: date-time
        packs:
          type: integer
          minimum: 1
          maximum: 100
        credited_micros:
          type: string
          pattern: ^(0|[1-9][0-9]{0,18})$
        revoked_micros:
          type: string
          pattern: ^(0|[1-9][0-9]{0,18})$
        paid_until:
          type:
            - string
            - 'null'
          format: date-time
        required_action:
          type: string
          enum:
            - none
            - complete_checkout
            - open_billing_portal
            - contact_support
          description: >-
            Human payment handoff. Complete the returned Checkout URL, request a
            fresh billing portal URL to correct billing details, or contact
            ohmyho.st when tax configuration requires review. none includes a
            draft invoice awaiting automatic processing; it is not a claim of
            current Paid coverage. Never infer renewal success from the
            historical payment_confirmed flag.
        billing_issue:
          $ref: '#/components/schemas/BillingTaxIssue'
    BillingTaxIssue:
      description: Verified issue on an existing Stripe invoice; no new purchase is needed.
      type:
        - object
        - 'null'
      additionalProperties: false
      required:
        - code
        - invoice_id
        - observed_at
        - required_action
      properties:
        code:
          type: string
          enum:
            - billing_tax_location_required
            - billing_tax_calculation_failed
            - billing_tax_configuration_required
        invoice_id:
          type: string
          pattern: ^in_[A-Za-z0-9_]{1,253}$
        observed_at:
          type: string
          format: date-time
        required_action:
          type: string
          enum:
            - open_billing_portal
            - contact_support
    ProblemDetails:
      type: object
      description: RFC 9457 Problem Details extended with stable ohmyhost recovery fields.
      additionalProperties: false
      required:
        - type
        - title
        - status
        - code
        - request_id
        - retryable
        - suggested_action
      properties:
        type:
          type: string
          format: uri-reference
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        code:
          type: string
          enum:
            - invalid_request
            - unauthenticated
            - forbidden
            - organization_required
            - resource_not_found
            - idempotency_key_reused
            - project_handle_unavailable
            - project_identity_unavailable
            - deployment_plan_expired
            - deployment_plan_incompatible
            - confirmation_expired
            - confirmation_invalid
            - etag_mismatch
            - promotion_source_stale
            - promotion_target_stale
            - promotion_invalid_target
            - mail_domain_conflict
            - mail_domain_required
            - mail_capacity_unavailable
            - storage_jurisdiction_conflict
            - shared_data_requires_promotion
            - production_deployment_required
            - framework_conversion_required
            - repository_configuration_missing
            - migration_filename_noncanonical
            - environment_secret_mutation_blocked
            - workers_runtime_incompatible
            - project_handle_invalid
            - project_handle_taken
            - project_handle_unchanged
            - project_rename_blocked
            - payload_too_large
            - rate_limited
            - insufficient_organization_credits
            - paid_plan_required
            - project_budget_exceeded
            - compute_performance_paid_required
            - compute_performance_unavailable
            - database_write_pending
            - database_access_limit
            - compute_change_pending
            - compute_change_conflict
            - billing_purchase_conflict
            - billing_recharge_conflict
            - github_connection_required
            - github_connection_revoked
            - repository_not_installed
            - cloudflare_zone_not_bound
            - cloudflare_authorization_closed
            - project_notes_conflict
            - project_export_not_ready
            - powered_by_flag_required
            - interactive_login_required
            - api_key_creation_uncertain
            - api_key_permissions_unavailable
            - reconciliation_exhausted
            - service_unavailable
            - source_commit_not_found
            - domain_hostname_taken
            - domain_dns_conflict
            - data_change_blocked
            - data_change_in_progress
            - data_change_not_applicable
            - rollback_target_data_changed
            - project_domain_delete_required
        request_id:
          type: string
          minLength: 1
          maxLength: 128
        retryable:
          type: boolean
        retry_after_seconds:
          type: integer
          minimum: 1
          maximum: 86400
          description: >-
            Optional machine-readable retry delay for a rate limit, matching
            Retry-After.
        suggested_action:
          type: string
          minLength: 1
  responses:
    Problem:
      description: The request failed.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    ResourceNotFound:
      description: >-
        The resource does not exist or is not visible to the authenticated
        principal.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          examples:
            resourceNotFound:
              value:
                type: https://docs.ohmyho.st/errors/resource-not-found
                title: Resource not found
                status: 404
                code: resource_not_found
                request_id: req_01J00000000000000000000000
                retryable: false
                suggested_action: Check the resource identifier and your access scope.
  headers:
    XRequestId:
      description: Correlates the request with operations, events, logs, and audit records.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 128
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        WorkOS access JWT or a user-owned WorkOS API key. User keys are bound to
        one organization and restricted to their enabled product permissions.
        Session-only onboarding and session revocation require an interactive
        access JWT. No cookie session is assumed.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.