{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/stripe/main/json-schema/stripe-post-sources-request-schema.json",
  "title": "PostSourcesRequest",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/stripe-sources-api-openapi.yml#/components/schemas/PostSourcesRequest",
  "type": "object",
  "properties": {
    "amount": {
      "description": "Amount associated with the source. This is the amount for which the source will be chargeable once ready. Required for `single_use` sources. Not supported for `receiver` type sources, where charge amount may not be specified until funds land.",
      "type": "integer"
    },
    "currency": {
      "description": "Three-letter [ISO code for the currency](https://stripe.com/docs/currencies) associated with the source. This is the currency for which the source will be chargeable once ready.",
      "type": "string"
    },
    "customer": {
      "description": "The `Customer` to whom the original source is attached to. Must be set when the original source is not a `Source` (e.g., `Card`).",
      "maxLength": 500,
      "type": "string"
    },
    "expand": {
      "description": "Specifies which fields in the response should be expanded.",
      "items": {
        "maxLength": 5000,
        "type": "string"
      },
      "type": "array"
    },
    "flow": {
      "description": "The authentication `flow` of the source to create. `flow` is one of `redirect`, `receiver`, `code_verification`, `none`. It is generally inferred unless a type supports multiple flows.",
      "enum": [
        "code_verification",
        "none",
        "receiver",
        "redirect"
      ],
      "maxLength": 5000,
      "type": "string"
    },
    "mandate": {
      "description": "Information about a mandate possibility attached to a source object (generally for bank debits) as well as its acceptance status.",
      "properties": {
        "acceptance": {
          "properties": {
            "date": {
              "format": "unix-time",
              "type": "integer"
            },
            "ip": {
              "type": "string"
            },
            "offline": {
              "properties": {
                "contact_email": {
                  "type": "string"
                }
              },
              "required": [
                "contact_email"
              ],
              "title": "mandate_offline_acceptance_params",
              "type": "object"
            },
            "online": {
              "properties": {
                "date": {
                  "format": "unix-time",
                  "type": "integer"
                },
                "ip": {
                  "type": "string"
                },
                "user_agent": {
                  "maxLength": 5000,
                  "type": "string"
                }
              },
              "title": "mandate_online_acceptance_params",
              "type": "object"
            },
            "status": {
              "enum": [
                "accepted",
                "pending",
                "refused",
                "revoked"
              ],
              "maxLength": 5000,
              "type": "string"
            },
            "type": {
              "enum": [
                "offline",
                "online"
              ],
              "maxLength": 5000,
              "type": "string"
            },
            "user_agent": {
              "maxLength": 5000,
              "type": "string"
            }
          },
          "required": [
            "status"
          ],
          "title": "mandate_acceptance_params",
          "type": "object"
        },
        "amount": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "enum": [
                ""
              ],
              "type": "string"
            }
          ]
        },
        "currency": {
          "type": "string"
        },
        "interval": {
          "enum": [
            "one_time",
            "scheduled",
            "variable"
          ],
          "maxLength": 5000,
          "type": "string"
        },
        "notification_method": {
          "enum": [
            "deprecated_none",
            "email",
            "manual",
            "none",
            "stripe_email"
          ],
          "maxLength": 5000,
          "type": "string"
        }
      },
      "title": "mandate_params",
      "type": "object"
    },
    "metadata": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object"
    },
    "original_source": {
      "description": "The source to share.",
      "maxLength": 5000,
      "type": "string"
    },
    "owner": {
      "description": "Information about the owner of the payment instrument that may be used or required by particular source types.",
      "properties": {
        "address": {
          "properties": {
            "city": {
              "maxLength": 5000,
              "type": "string"
            },
            "country": {
              "maxLength": 5000,
              "type": "string"
            },
            "line1": {
              "maxLength": 5000,
              "type": "string"
            },
            "line2": {
              "maxLength": 5000,
              "type": "string"
            },
            "postal_code": {
              "maxLength": 5000,
              "type": "string"
            },
            "state": {
              "maxLength": 5000,
              "type": "string"
            }
          },
          "title": "source_address",
          "type": "object"
        },
        "email": {
          "type": "string"
        },
        "name": {
          "maxLength": 5000,
          "type": "string"
        },
        "phone": {
          "maxLength": 5000,
          "type": "string"
        }
      },
      "title": "owner",
      "type": "object"
    },
    "receiver": {
      "description": "Optional parameters for the receiver flow. Can be set only if the source is a receiver (`flow` is `receiver`).",
      "properties": {
        "refund_attributes_method": {
          "enum": [
            "email",
            "manual",
            "none"
          ],
          "maxLength": 5000,
          "type": "string"
        }
      },
      "title": "receiver_params",
      "type": "object"
    },
    "redirect": {
      "description": "Parameters required for the redirect flow. Required if the source is authenticated by a redirect (`flow` is `redirect`).",
      "properties": {
        "return_url": {
          "type": "string"
        }
      },
      "required": [
        "return_url"
      ],
      "title": "redirect_params",
      "type": "object"
    },
    "source_order": {
      "description": "Information about the items and shipping associated with the source. Required for transactional credit (for example Klarna) sources before you can charge it.",
      "properties": {
        "items": {
          "items": {
            "properties": {
              "amount": {
                "type": "integer"
              },
              "currency": {
                "type": "string"
              },
              "description": {
                "maxLength": 1000,
                "type": "string"
              },
              "parent": {
                "maxLength": 5000,
                "type": "string"
              },
              "quantity": {
                "type": "integer"
              },
              "type": {
                "enum": [
                  "discount",
                  "shipping",
                  "sku",
                  "tax"
                ],
                "maxLength": 5000,
                "type": "string"
              }
            },
            "title": "order_item_specs",
            "type": "object"
          },
          "type": "array"
        },
        "shipping": {
          "properties": {
            "address": {
              "properties": {
                "city": {
                  "maxLength": 5000,
                  "type": "string"
                },
                "country": {
                  "maxLength": 5000,
                  "type": "string"
                },
                "line1": {
                  "maxLength": 5000,
                  "type": "string"
                },
                "line2": {
                  "maxLength": 5000,
                  "type": "string"
                },
                "postal_code": {
                  "maxLength": 5000,
                  "type": "string"
                },
                "state": {
                  "maxLength": 5000,
                  "type": "string"
                }
              },
              "required": [
                "line1"
              ],
              "title": "address",
              "type": "object"
            },
            "carrier": {
              "maxLength": 5000,
              "type": "string"
            },
            "name": {
              "maxLength": 5000,
              "type": "string"
            },
            "phone": {
              "maxLength": 5000,
              "type": "string"
            },
            "tracking_number": {
              "maxLength": 5000,
              "type": "string"
            }
          },
          "required": [
            "address"
          ],
          "title": "order_shipping",
          "type": "object"
        }
      },
      "title": "shallow_order_specs",
      "type": "object"
    },
    "statement_descriptor": {
      "description": "An arbitrary string to be displayed on your customer's statement. As an example, if your website is `RunClub` and the item you're charging for is a race ticket, you may want to specify a `statement_descriptor` of `RunClub 5K race ticket.` While many payment types will display this information, some may not display it at all.",
      "maxLength": 5000,
      "type": "string"
    },
    "token": {
      "description": "An optional token used to create the source. When passed, token properties will override source parameters.",
      "maxLength": 5000,
      "type": "string"
    },
    "type": {
      "description": "The `type` of the source to create. Required unless `customer` and `original_source` are specified (see the [Cloning card Sources](https://stripe.com/docs/sources/connect#cloning-card-sources) guide)",
      "maxLength": 5000,
      "type": "string"
    },
    "usage": {
      "enum": [
        "reusable",
        "single_use"
      ],
      "maxLength": 5000,
      "type": "string"
    }
  }
}