Packages

Complete Stripe SDK for Elixir with parity to the official Ruby SDK. V1+V2 coverage (193 services, 320 resource structs, 525 documented params). Per-event modules, Finch HTTP/2, RustyJSON, automatic retries, OAuth, webhooks, telemetry, per-client config, streaming pagination.

Current section

Files

Jump to
tiger_stripe lib stripe params issuing card_create_params.ex
Raw

lib/stripe/params/issuing/card_create_params.ex

# File generated from our OpenAPI spec
defmodule Stripe.Params.Issuing.CardCreateParams do
@moduledoc "Parameters for card create."
@typedoc """
* `cardholder` - The [Cardholder](https://docs.stripe.com/api#issuing_cardholder_object) object with which the card will be associated. Max length: 5000.
* `currency` - The currency for the card.
* `exp_month` - The desired expiration month (1-12) for this card if [specifying a custom expiration date](https://stripe.com/issuing/cards/virtual/issue-cards?testing-method=with-code#exp-dates).
* `exp_year` - The desired 4-digit expiration year for this card if [specifying a custom expiration date](https://stripe.com/issuing/cards/virtual/issue-cards?testing-method=with-code#exp-dates).
* `expand` - Specifies which fields in the response should be expanded.
* `financial_account` - The new financial account ID the card will be associated with. This field allows a card to be reassigned to a different financial account.
* `metadata` - Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
* `personalization_design` - The personalization design object belonging to this card. Max length: 5000.
* `pin` - The desired PIN for this card.
* `replacement_for` - The card this is meant to be a replacement for (if any). Max length: 5000.
* `replacement_reason` - If `replacement_for` is specified, this should indicate why that card is being replaced. Possible values: `damaged`, `expired`, `lost`, `stolen`.
* `second_line` - The second line to print on the card. Max length: 24 characters.
* `shipping` - The address where the card will be shipped.
* `spending_controls` - Rules that control spending for this card. Refer to our [documentation](https://docs.stripe.com/issuing/controls/spending-controls) for more details.
* `status` - Whether authorizations can be approved on this card. May be blocked from activating cards depending on past-due Cardholder requirements. Defaults to `inactive`. Possible values: `active`, `inactive`.
* `type` - The type of card to issue. Possible values are `physical` or `virtual`. Possible values: `physical`, `virtual`.
"""
@type t :: %__MODULE__{
cardholder: String.t() | nil,
currency: String.t(),
exp_month: integer() | nil,
exp_year: integer() | nil,
expand: [String.t()] | nil,
financial_account: String.t() | nil,
metadata: %{String.t() => String.t()} | nil,
personalization_design: String.t() | nil,
pin: pin() | nil,
replacement_for: String.t() | nil,
replacement_reason: String.t() | nil,
second_line: map() | nil,
shipping: shipping() | nil,
spending_controls: spending_controls() | nil,
status: String.t() | nil,
type: String.t()
}
defstruct [
:cardholder,
:currency,
:exp_month,
:exp_year,
:expand,
:financial_account,
:metadata,
:personalization_design,
:pin,
:replacement_for,
:replacement_reason,
:second_line,
:shipping,
:spending_controls,
:status,
:type
]
@typedoc """
* `encrypted_number` - The card's desired new PIN, encrypted under Stripe's public key. Max length: 5000.
"""
@type pin :: %{
optional(:encrypted_number) => String.t() | nil,
optional(String.t()) => term()
}
@typedoc """
* `address` - The address that the card is shipped to.
* `address_validation` - Address validation settings.
* `customs` - Customs information for the shipment.
* `name` - The name printed on the shipping label when shipping the card. Max length: 5000.
* `phone_number` - Phone number of the recipient of the shipment.
* `require_signature` - Whether a signature is required for card delivery.
* `service` - Shipment service. Possible values: `express`, `priority`, `standard`.
* `type` - Packaging options. Possible values: `bulk`, `individual`.
"""
@type shipping :: %{
optional(:address) => shipping_address() | nil,
optional(:address_validation) => shipping_address_validation() | nil,
optional(:customs) => shipping_customs() | nil,
optional(:name) => String.t() | nil,
optional(:phone_number) => String.t() | nil,
optional(:require_signature) => boolean() | nil,
optional(:service) => String.t() | nil,
optional(:type) => String.t() | nil,
optional(String.t()) => term()
}
@typedoc """
* `city` - City, district, suburb, town, or village. Max length: 5000.
* `country` - Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)). Max length: 5000.
* `line1` - Address line 1, such as the street, PO Box, or company name. Max length: 5000.
* `line2` - Address line 2, such as the apartment, suite, unit, or building. Max length: 5000.
* `postal_code` - ZIP or postal code. Max length: 5000.
* `state` - State, county, province, or region ([ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)). Max length: 5000.
"""
@type shipping_address :: %{
optional(:city) => String.t() | nil,
optional(:country) => String.t() | nil,
optional(:line1) => String.t() | nil,
optional(:line2) => String.t() | nil,
optional(:postal_code) => String.t() | nil,
optional(:state) => String.t() | nil,
optional(String.t()) => term()
}
@typedoc """
* `mode` - The address validation capabilities to use. Possible values: `disabled`, `normalization_only`, `validation_and_normalization`.
"""
@type shipping_address_validation :: %{
optional(:mode) => String.t() | nil,
optional(String.t()) => term()
}
@typedoc """
* `eori_number` - The Economic Operators Registration and Identification (EORI) number to use for Customs. Required for bulk shipments to Europe. Max length: 5000.
"""
@type shipping_customs :: %{
optional(:eori_number) => String.t() | nil,
optional(String.t()) => term()
}
@typedoc """
* `allowed_categories` - Array of strings containing [categories](https://docs.stripe.com/api#issuing_authorization_object-merchant_data-category) of authorizations to allow. All other categories will be blocked. Cannot be set with `blocked_categories`.
* `allowed_merchant_countries` - Array of strings containing representing countries from which authorizations will be allowed. Authorizations from merchants in all other countries will be declined. Country codes should be ISO 3166 alpha-2 country codes (e.g. `US`). Cannot be set with `blocked_merchant_countries`. Provide an empty value to unset this control.
* `blocked_categories` - Array of strings containing [categories](https://docs.stripe.com/api#issuing_authorization_object-merchant_data-category) of authorizations to decline. All other categories will be allowed. Cannot be set with `allowed_categories`.
* `blocked_merchant_countries` - Array of strings containing representing countries from which authorizations will be declined. Country codes should be ISO 3166 alpha-2 country codes (e.g. `US`). Cannot be set with `allowed_merchant_countries`. Provide an empty value to unset this control.
* `spending_limits` - Limit spending with amount-based rules that apply across any cards this card replaced (i.e., its `replacement_for` card and _that_ card's `replacement_for` card, up the chain).
"""
@type spending_controls :: %{
optional(:allowed_categories) => [String.t()] | nil,
optional(:allowed_merchant_countries) => [String.t()] | nil,
optional(:blocked_categories) => [String.t()] | nil,
optional(:blocked_merchant_countries) => [String.t()] | nil,
optional(:spending_limits) => [spending_controls_spending_limits()] | nil,
optional(String.t()) => term()
}
@typedoc """
* `amount` - Maximum amount allowed to spend per interval.
* `categories` - Array of strings containing [categories](https://docs.stripe.com/api#issuing_authorization_object-merchant_data-category) this limit applies to. Omitting this field will apply the limit to all categories.
* `interval` - Interval (or event) to which the amount applies. Possible values: `all_time`, `daily`, `monthly`, `per_authorization`, `weekly`, `yearly`.
"""
@type spending_controls_spending_limits :: %{
optional(:amount) => integer() | nil,
optional(:categories) => [String.t()] | nil,
optional(:interval) => String.t() | nil,
optional(String.t()) => term()
}
end