NAME
    Net::API::Stripe - An interface to Stripe API

SYNOPSIS
        my $stripe = Net::API::Stripe->new({
            debug => 3,
            conf_file => './stripe-settings.json',
            livemode => 0,
            ignore_unknown_parameters => 1,
            expand => 'all',
        }) || die( Net::API::Stripe->error );

    A Stripe json settings file looks like this:

        {
            "livemode": false,
            "test_secret_key": "sk_test_1234567890abcdefg",
            "test_public_key": "pk_test_1234567890abcdefg",
            "live_secret_key": "sk_live_0987654321zyxwvut",
            "live_public_key": "pk_live_0987654321zyxwvut",
            "version": "2020-03-02",
        }

    Create a customer:

        # Create an address object
        my $addr;
        if( $v->{street} || $v->{city} || $v->{postal_code} || $v->{country} )
        {
            $addr = $stripe->address({
                line1 => $v->{street},
                line2 => $v->{building},
                city => $v->{city},
                postal_code => $v->{postal_code},
                state => $v->{state},
                country => $v->{country},
            }) || bailout( "Unable to create a postal address object: ", $stripe->error );
        }
        my $cust_object = $stripe->customer({
            balance => 20000,
            address => $addr,
            # Must be set up previously before using it
            coupon => '2020DISCOUNT50',
            # Japanese Yen
            currency => 'jpy',
            description => 'VIP customer',
            email => 'john@example.com',
            invoice_prefix => 'VIP',
            # Default payment must be set up beforehand for it to be declared here
            invoice_settings => { default_payment_method => 'pm_fake1234567' },
            metadata => { db_id => 123, process_id => 456 },
            name => 'John Doe',
            phone => '+81-90-1234-5678',
            preferred_locales => [qw( en ja )],
            shipping => $addr,
        });

        # Submit this customer to Stripe for creation
        my $cust = $stripe->customers( create => $cust_object ) || die( sprintf( "Failed with error message %s and code %d\n", $stripe->error->message, $stripe->error->code ) );

    Retrieve customer:

        my $cust = $stripe->customers( retrieve => 'cust_fake12345' );
        # or we can also pass a customer object
        my $cust = $stripe->customers( retrieve => $cust_object ) || do
        {
            if( $stripe->http_response->code == 404 )
            {
                die( "Customer ", $cust_object->id, " does not exist!\n" );
            }
            else
            {
                die( "Some unexpected error occurred: ", $stripe->error, "\n" );
            }
        };

    Other methods are describe below and the parameters they take are
    documented in their respective module.

VERSION
        v1.3.0

DESCRIPTION
    This is a comprehensive Stripe API. It provides an object oriented
    friendly interface for which I put a lot of hard work so you could spend
    your time on other aspects of your development.

    This distribution is almost completely auto-generated based on Stripe
    API documentation version 2022-08-01 and contains 203 modules.

    It inherits from Module::Generic and Net::API::Stripe sub modules
    inherits from Net::API::Stripe::Generic

    This interface aims at making it easy to make api calls to Stripe,
    however it is important and a time-saver to read Stripe documentation
    comprehensively.

    This interface will do minimal data integrity check. Thus, even though
    this interface will check for proper data types like array, right
    property names used, mandatory parameters in api calls, etc it does not
    do any check on the data itself, so you should always check for return
    value from Stripe api calls and look at the Stripe error returned. If an
    error occured, the Stripe api method will return undef and set an error
    message accordingly. See "ERROR HANDLING"

CONSTRUCTOR
  new
    Provided with an hash of parameters and this creates a new
    Net::API::Stripe objects.

    Its arguments also have methods of the same name.

    "api_uri"
        The base uri of the Stripe API. This should not be changed.

    "browser"
        The user agent id to use when making http api calls

    "conf_file"
        The file path to the configuration file. Each property in this
        configuration file is same as the parameters to instantiate a new
        Net::API::Stripe object.

    "debug"
        Toggles debug mode on/off

    "expand"
        Integer. Sets the depth level of expansion of Stripe objects. If
        objects are not expanded, Stripe API will return the object id, but
        when they are expanded, Stripe returns the entire object and its
        properties. You can then chain your code and do something like:

            print $cust->invoice_settings->default_payment_method->type

    "ignore_unknown_parameters"
        Boolean. When this is on, this will ignore any properties sent back
        from Stripe API that are unknown to us. This happens frequently as
        Stripe updates its API. When this value is set to false, then
        unknown properties will cause this to stop processing and return an
        error.

    "livemode"
        Boolean value to toggle test or live mode

    "verbose"
        Toggles verbose mode on/off

    "version"
        The version of the Stripe API to use. Example "2020-03-02"

METHODS
  account
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::Account object.

  account_bank_account
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::ExternalAccount::Bank object.

  account_card
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::ExternalAccount::Card object.

  account_link
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::Account::Link object.

  address
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Address object.

  address_kana
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::AddressKana object.

  address_kanji
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::AddressKanji object.

  amount
    Provided with a number, this returns a Module::Generic::Number object,
    which extends Number::Format

  api_uri
    Returns the URI object of the Stripe api.

  application_fee
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::ApplicationFee object.

  application_fee_refund
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::ApplicationFee::Refund object.

  apps_secret
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::AppsSecret object.

  authorization
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Issuing::Authorization object.

  balance
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Balance object.

  balance_transaction
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Balance::Transaction object.

  bank_account
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::ExternalAccount::Bank object.

  billing_details
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Details object.

  billing_portal_configuration
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::PortalConfiguration object.

  billing_portal_session
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::PortalSession object.

  billing_thresholds
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Thresholds object.

  browser
    Set or get the user agent string used when making calls to Stripe API.

  business_profile
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Business::Profile object.

  capability
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::Account::Capability object.

  card
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::ExternalAccount::Card object.

  card_holder
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Issuing::Card::Holder object.

  charge
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Charge object.

  checkout_session
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Checkout::Session object.

  code2error
    Given a code returned by Stripe upon error, this returns the
    corresponding string.

        my $cust = $stripe->customers( retrieve => $id ) || 
          die( $stripe->code2error( $stripe->error->code ), "\n" );

  code_verification
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Payment::Source::CodeVerification object.

  company
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Account::Company object.

  conf_file( [ file path ] )
    Given a json configuration file, it will read the data, set the property
    *conf_data* to the decoded hash and return it. When called without
    argument, it returns the current value of *conf_data*.

  connection_token
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Terminal::ConnectionToken object.

  country_spec
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::CountrySpec object.

  coupon
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Coupon object.

  credit_note
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::CreditNote object.

  currency
    Set or get the 3-letter iso 4217 currency, such as "jpy" for Japanese
    yen or "eur" for Euro.

  customer
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Customer object.

  customer_balance_transaction
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Customer::BalanceTransaction object.

  customer_cash_balance_transaction
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Cash::Transaction object.

  customer_tax_id
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Customer::TaxId object.

  data
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Event::Data object.

  delete( END POINT, HASH PAYLOAD )
    Given a Stripe end point as a URI absolute path, and a payload as a hash
    reference, this will issue a "DELETE" http query and return a hash
    reference corresponding to the json data returned by Stripe, or, in case
    of error, it will return undef and set the error which can be accessed
    with "$stripe-"error> (a Module::Generic::Exception object).

  discount
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Discount object.

  dispute
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Dispute object.

  document
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Account::Document object.

  encode_with_json
    Takes a bollean value. This is used to set whether the payload should be
    encoded with json. This should not be changed.

  event
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Event object.

  evidence
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Issuing::Dispute::Evidence object.

  evidence_details
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Dispute::EvidenceDetails object.

  expand
    Integer. Sets or get the depth of Stripe object expansion. See Stripe
    api documentation for more information:
    <https://stripe.com/docs/api/expanding_objects>

  fee_refund
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::ApplicationFee::Refund object.

  fields
    Given an object type, this returns an array reference of all the methods
    (aka fields) for that module.

  file
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::File object.

  file_link
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::File::Link object.

  financial_connections_account
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Financial::Connections::Account object.

  financial_connections_account_owner
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Financial::Connections::AccountOwner object.

  financial_connections_account_ownership
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Financial::Connections::AccountOwnership object.

  financial_connections_session
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Financial::Connections::Session object.

  fraud
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Fraud object.

  funding_instructions
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Issuing::FundingInstructions object.

  generate_uuid
    Returns a uuid version 4. This uses Data::UUID to achieve that.

  get( END POINT, HASH PAYLOAD )
    Given a Stripe absolute uri and a hash reference, this will issue a http
    "GET" request and return a hash reference representing the json data
    returned by Stripe or undef if an error occurred. The error can then be
    retrieved like "$stripe-"error> which is a Module::Generic::Exception
    object.

  http_client
    This returns the LWP::UserAgent object and create it if it is not yet
    instantiated.

  http_request
    Get or set the HTTP::Request based on the data provided.

  http_response
    Get or set the HTTP::Response based on the data provided.

  identity_verification_report
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Identity::VerificationReport object.

  identity_verification_session
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Identity::VerificationSession object.

  ignore_unknown_parameters
    Boolean. When true, this module will ignore unknown properties returned
    from calls made to Stripe api. if set to false, and an unknown property
    is received, this will generate an error and return undef, stopping the
    flow of the request instead of ignoring it.

  invoice
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Invoice object.

  invoice_item
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Invoice::Item object.

  invoice_line_item
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Invoice::LineItem object.

  invoice_settings
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Invoice::Settings object.

  invoiceitem
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Invoice::Item object.

  ip_address_location
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::GeoLocation object.

  issuing_authorization
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Issuing::Authorization object.

  issuing_card
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Issuing::Card object.

  issuing_cardholder
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Issuing::Card::Holder object.

  issuing_dispute
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Issuing::Dispute object.

  issuing_transaction
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Issuing::Transaction object.

  item
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::List::Item object.

  json
    This returns a "JSON" object with option *allow_nonref* enabled.

  key( STRIPE API SECRET KEY )
    Provided with your Stripe api secret key, this will set this property
    accordingly, but will also set the auth property as well. auth is used
    to authenticate you when making calls to Stripe api. auth would be
    something like this:

        Basic c2tfMTIzNDU2Nzg5MGFiY2RlZmdoaWo6Cg

  line_item
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Invoice::LineItem object.

  livemode
    Boolean. Set or get the livemode status. If it is true, then all api
    query will be mad in live mode.

  location
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Terminal::Location object.

  login_link
    Provided with optional hash parameters this returns a
    Net::API::Stripe::Connect::Account::LoginLink object.

  merchant_data
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Issuing::MerchantData object.

  next_action
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Payment::Intent::NextAction object.

  order
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Order object.

  order_item
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Order::Item object.

  outcome
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Charge::Outcome object.

  owner
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Payment::Source::Owner object.

  package_dimensions
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Order::SKU::PackageDimensions object.

  payment_intent
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Payment::Intent object.

  payment_method
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Payment::Method object.

  payment_method_details
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Payment::Method::Details object.

  payout
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Payout object.

  period
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Invoice::Period object.

  person
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::Person object.

  plan
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Plan object.

  post( END POINT, HASH PAYLOAD )
    Given a Stripe end point absolute uri and a hash reference, this will
    issue a "POST" http request to the Stripe api and return a hash
    reference representing the object provided by Stripe or undef with an
    error set, which can be retrieved using the "error" method.

    If no *idempotency* parameter was provided, post will automatically
    create one.

  post_multipart( END POINT, HASH PAYLOAD )
    Given a Stripe end point absolute uri and a hash reference, this will
    issue a "POST" multipart http request to the Stripe api and return a
    hash reference representing the object returned by Stripe. If an error
    had occurred, it will return undef and set an error that can be
    retrieved using the "error" method.

    This method is used primarily when upload file. See the section below on
    "FILES"

  price
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Price object.

  product
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Product object.

  radar_early_fraud_warning
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Fraud object.

  radar_value_list
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Fraud::ValueList object.

  radar_value_list_item
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Fraud::ValueList::Item object.

  reader
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Terminal::Reader object.

  receiver
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Payment::Source::Receiver object.

  redirect
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Payment::Source::Redirect object.

  refund
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Refund object.

  relationship
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Account::Relationship object.

  reporting_report_run
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Reporting::ReportRun object.

  reporting_report_type
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Reporting::ReportType object.

  request
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Event::Request object.

  requirements
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Account::Requirements object.

  return
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Order::Return object.

  review
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Fraud::Review object.

  schedule
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Subscription::Schedule object.

  schedule_query
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Sigma::ScheduledQueryRun object.

  scheduled_query_run
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Sigma::ScheduledQueryRun object.

  session
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Checkout::Session object.

  settings
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Account::Settings object.

  setup_intent
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Payment::Intent::Setup object.

  shipping
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Shipping object.

  sku
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Order::SKU object.

  source
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Payment::Source object.

  source_order
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Order object.

  status_transitions
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Invoice::StatusTransition object.

  subscription
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Subscription object.

  subscription_item
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::Subscription::Item object.

  subscription_schedule
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Subscription::Schedule object.

  tax_ids
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::TaxID object.

  tax_rate
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Tax::Rate object.

  terminal_configuration
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Terminal::Configuration object.

  terminal_connection_token
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Terminal::ConnectionToken object.

  terminal_location
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Terminal::Location object.

  terminal_reader
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Terminal::Reader object.

  test_helpers_test_clock
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::TestHelpersTestClock object.

  token
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Token object.

  topup
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::TopUp object.

  tos_acceptance
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Account::TosAcceptance object.

  transfer
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::Transfer object.

  transfer_data
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Payment::Intent::TransferData object.

  transfer_reversal
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Connect::Transfer::Reversal object.

  transform_usage
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::Plan::TransformUsage object.

  treasury_credit_reversal
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::CreditReversal object.

  treasury_debit_reversal
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::DebitReversal object.

  treasury_financial_account
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::FinancialAccount object.

  treasury_financial_account_features
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::FinancialAccountFeatures object.

  treasury_inbound_transfer
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::InboundTransfer object.

  treasury_outbound_payment
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::OutboundPayment object.

  treasury_outbound_transfer
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::OutboundTransfer object.

  treasury_received_credit
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::ReceivedCredit object.

  treasury_received_debit
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::ReceivedDebit object.

  treasury_transaction
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::Transaction object.

  treasury_transaction_entry
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Treasury::TransactionEntry object.

  usage_record
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Billing::UsageRecord object.

  usage_record_summary
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Billing::UserRecord::Summary object.

  value_list
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Fraud::ValueList object.

  value_list_item
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::Fraud::ValueList::Item object.

  verification
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::Account::Verification object.

  verification_data
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Issuing::Authorization::VerificationData object.

  verification_fields
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::Connect::CountrySpec::VerificationFields object.

  version
    Set or get the api version. This must be set on the Stripe dashboard
    <https://dashboard.stripe.com/>

  webhook
    Provided with optional hash parameters, this returns a
    Net::API::Stripe::WebHook::Object object.

  webhook_endpoint
    Provided with optional hash parameters, this returns an
    Net::API::Stripe::WebHook::Object object.

ACCOUNT
    You can create, delete, list, reject, retrieve or update account

  create
        my $obj = $stripe->accounts( create => {
            capabilities =>
            {
                card_payments =>
                {
                    requested => "1",
                }
                transfers     =>
                {
                    requested => "1",
                }
            }
            country      => "US",
            email        => q{jenny.rosen@example.com},
            type         => "custom", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::Account object or a hash
    reference, this will create a Stripe account and return an
    Net::API::Stripe::Connect::Account object.

    Possible parameters are:

    "account_token"
        An account token
        <https://stripe.com/docs/api/tokens/create_account>, used to
        securely provide details to the account.

    "business_profile"
        Business information about the account.

    "business_type"
        The business type.

    "capabilities"
        required for Custom accounts Each key of the dictionary represents a
        capability, and each capability maps to its settings (e.g. whether
        it has been requested or not). Each capability will be inactive
        until you have provided its specific requirements and Stripe has
        verified them. An account may have some of its requested
        capabilities be active and some be inactive.

    "company"
        Information about the company or business. This field is available
        for any "business_type".

    "country"
        The country in which the account holder resides, or in which the
        business is legally established. This should be an ISO 3166-1
        alpha-2 country code. For example, if you are in the United States
        and the business for which you're creating an account is legally
        represented in Canada, you would use "CA" as the country for the
        account being created. Available countries include Stripe's global
        markets <https://stripe.com/global> as well as countries where
        cross-border payouts
        <https://stripe.com/docs/connect/cross-border-payouts> are
        supported.

    "default_currency"
        Three-letter ISO currency code representing the default currency for
        the account. This must be a currency that Stripe supports in the
        account's country <https://stripe.com/docs/payouts>.

    "documents"
        Documents that may be submitted to satisfy various informational
        requests.

    "email"
        The email address of the account holder. This is only to make the
        account easier to identify to you. Stripe only emails Custom
        accounts with your consent.

    "external_account"
        A card or bank account to attach to the account for receiving
        payouts <https://stripe.com/docs/connect/bank-debit-card-payouts>
        (you won’t be able to use it for top-ups). You can provide either a
        token, like the ones returned by Stripe.js
        <https://stripe.com/docs/js>, or a dictionary, as documented in the
        "external_account" parameter for bank account
        <https://stripe.com/docs/api#account_create_bank_account> creation.
        <br><br>By default, providing an external account sets it as the new
        default external account for its currency, and deletes the old
        default if one exists. To add additional external accounts without
        replacing the existing default for the currency, use the bank
        account <https://stripe.com/docs/api#account_create_bank_account> or
        card creation <https://stripe.com/docs/api#account_create_card>
        APIs.

    "individual"
        Information about the person represented by the account. This field
        is null unless "business_type" is set to "individual".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "settings"
        Options for customizing how the account functions within Stripe.

    "tos_acceptance"
        Details on the account's acceptance of the Stripe Services Agreement
        <https://stripe.com/docs/connect/updating-accounts#tos-acceptance>.

    "type"
        Required. The type of Stripe account to create. May be one of
        "custom", "express" or "standard".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/accounts/create>

  delete
        my $obj = $stripe->accounts( delete => $args ) || die( $stripe->error );

    Provided with a account, or a hash reference, this will issue an api
    call to Stripe to remove the account. It returns the account object that
    was deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/accounts/delete>

  list
        my $obj = $stripe->accounts( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a account object, this issue an api call to get the list
    of all account.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/accounts/list>

  reject
        my $obj = $stripe->accounts( reject => {
            reason => "fraud", } ) || die( $stripe->error );

    Provided with a account, or a hash reference, this will issue a reject
    api call.

    Returns an account with "payouts_enabled" and "charges_enabled" set to
    false on success. If the account ID does not exist, this call returns an
    error <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "reason"
        Required. The reason for rejecting the account. Can be "fraud",
        "terms_of_service", or "other".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/account/reject>

  retrieve
        my $obj = $stripe->accounts( retrieve => $args ) || die( $stripe->error );

    Provided with a account object or a hash reference, this will retrieve a
    Stripe account and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/accounts/retrieve>

  update
        my $obj = $stripe->accounts( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a account object or a hash reference, this will update a
    Stripe account and return its corresponding object

    Possible parameters are:

    "account_token"
        An account token
        <https://stripe.com/docs/api/tokens/create_account>, used to
        securely provide details to the account.

    "business_profile"
        Business information about the account.

    "business_type"
        The business type.

    "capabilities"
        Each key of the dictionary represents a capability, and each
        capability maps to its settings (e.g. whether it has been requested
        or not). Each capability will be inactive until you have provided
        its specific requirements and Stripe has verified them. An account
        may have some of its requested capabilities be active and some be
        inactive.

    "company"
        Information about the company or business. This field is available
        for any "business_type".

    "default_currency"
        Three-letter ISO currency code representing the default currency for
        the account. This must be a currency that Stripe supports in the
        account's country <https://stripe.com/docs/payouts>.

    "documents"
        Documents that may be submitted to satisfy various informational
        requests.

    "email"
        The email address of the account holder. This is only to make the
        account easier to identify to you. Stripe only emails Custom
        accounts with your consent.

    "external_account"
        A card or bank account to attach to the account for receiving
        payouts <https://stripe.com/docs/connect/bank-debit-card-payouts>
        (you won’t be able to use it for top-ups). You can provide either a
        token, like the ones returned by Stripe.js
        <https://stripe.com/docs/js>, or a dictionary, as documented in the
        "external_account" parameter for bank account
        <https://stripe.com/docs/api#account_create_bank_account> creation.
        <br><br>By default, providing an external account sets it as the new
        default external account for its currency, and deletes the old
        default if one exists. To add additional external accounts without
        replacing the existing default for the currency, use the bank
        account <https://stripe.com/docs/api#account_create_bank_account> or
        card creation <https://stripe.com/docs/api#account_create_card>
        APIs.

    "individual"
        Information about the person represented by the account. This field
        is null unless "business_type" is set to "individual".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "settings"
        Options for customizing how the account functions within Stripe.

    "tos_acceptance"
        Details on the account's acceptance of the Stripe Services Agreement
        <https://stripe.com/docs/connect/updating-accounts#tos-acceptance>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/accounts/update>

ACCOUNT BANK ACCOUNT
    You can create, delete, list, retrieve or update account bank account

  create
        my $obj = $stripe->account_bank_accounts( create => {
            external_account => "btok_1Le9F12eZvKYlo2CGBPhcUyo", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::ExternalAccount::Bank object
    or a hash reference, this will create a Stripe account bank account and
    return an Net::API::Stripe::Connect::ExternalAccount::Bank object.

    Possible parameters are:

    "default_for_currency"
        When set to true, or if this is the first external account added in
        this currency, this account becomes the default external account for
        its currency.

    "external_account"
        Required. Either a token, like the ones returned by Stripe.js
        <https://stripe.com/docs/stripe.js>, or a dictionary containing a
        user’s bank account details (with the options shown below).

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_bank_accounts/create>

  delete
        my $obj = $stripe->account_bank_accounts( delete => $args ) || die( $stripe->error );

    Provided with a account bank account, or a hash reference, this will
    issue an api call to Stripe to remove the account bank account. It
    returns the account bank account object that was deleted with its
    property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_bank_accounts/delete>

  list
        my $obj = $stripe->account_bank_accounts( list => {
            limit  => "3",
            object => "bank_account", } ) || die( $stripe->error );

    Provided with a account bank account object, this issue an api call to
    get the list of all account bank account.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_bank_accounts/list>

  retrieve
        my $obj = $stripe->account_bank_accounts( retrieve => $args ) || die( $stripe->error );

    Provided with a account bank account object or a hash reference, this
    will retrieve a Stripe account bank account and return its corresponding
    object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_bank_accounts/retrieve>

  update
        my $obj = $stripe->account_bank_accounts( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a account bank account object or a hash reference, this
    will update a Stripe account bank account and return its corresponding
    object

    Possible parameters are:

    "account_holder_name"
        The name of the person or business that owns the bank account.

    "account_holder_type"
        The type of entity that holds the account. This can be either
        "individual" or "company".

    "account_type"
        The bank account type. This can only be "checking" or "savings" in
        most countries. In Japan, this can only be "futsu" or "toza".

    "default_for_currency"
        When set to true, this becomes the default external account for its
        currency.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_bank_accounts/update>

ACCOUNT CARD
    You can create, delete, list, retrieve or update account card

  create
        my $obj = $stripe->account_cards( create => {
            external_account => "tok_mastercard_debit", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::ExternalAccount::Card object
    or a hash reference, this will create a Stripe account card and return
    an Net::API::Stripe::Connect::ExternalAccount::Card object.

    Possible parameters are:

    "default_for_currency"
        When set to true, or if this is the first external account added in
        this currency, this account becomes the default external account for
        its currency.

    "external_account"
        Required. A token, like the ones returned by Stripe.js
        <https://stripe.com/docs/stripe.js>. Stripe will automatically
        validate the card.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_cards/create>

  delete
        my $obj = $stripe->account_cards( delete => $args ) || die( $stripe->error );

    Provided with a account card, or a hash reference, this will issue an
    api call to Stripe to remove the account card. It returns the account
    card object that was deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_cards/delete>

  list
        my $obj = $stripe->account_cards( list => {
            limit  => "3",
            object => "card", } ) || die( $stripe->error );

    Provided with a account card object, this issue an api call to get the
    list of all account card.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_cards/list>

  retrieve
        my $obj = $stripe->account_cards( retrieve => $args ) || die( $stripe->error );

    Provided with a account card object or a hash reference, this will
    retrieve a Stripe account card and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_cards/retrieve>

  update
        my $obj = $stripe->account_cards( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a account card object or a hash reference, this will
    update a Stripe account card and return its corresponding object

    Possible parameters are:

    "address_city"
        City/District/Suburb/Town/Village.

    "address_country"
        Billing address country, if provided when creating card.

    "address_line1"
        Address line 1 (Street address/PO Box/Company name).

    "address_line2"
        Address line 2 (Apartment/Suite/Unit/Building).

    "address_state"
        State/County/Province/Region.

    "address_zip"
        ZIP or postal code.

    "default_for_currency"
        When set to true, this becomes the default external account for its
        currency.

    "exp_month"
        Two digit number representing the card’s expiration month.

    "exp_year"
        Four digit number representing the card’s expiration year.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        Cardholder name.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/external_account_cards/update>

ACCOUNT LINK
    You can create account link

  create
        my $obj = $stripe->account_links( create => {
            account     => "acct_1032D82eZvKYlo2C",
            refresh_url => "https://example.com/reauth",
            return_url  => "https://example.com/return",
            type        => "account_onboarding", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::Account::Link object or a
    hash reference, this will create a Stripe account link and return an
    Net::API::Stripe::Connect::Account::Link object.

    Possible parameters are:

    "account"
        Required. The identifier of the account to create an account link
        for.

    "collect"
        Which information the platform needs to collect from the user. One
        of "currently_due" or "eventually_due". Default is "currently_due".

    "refresh_url"
        required The URL the user will be redirected to if the account link
        is expired, has been previously-visited, or is otherwise invalid.
        The URL you specify should attempt to generate a new account link
        with the same parameters used to create the original account link,
        then redirect the user to the new account link's URL so they can
        continue with Connect Onboarding. If a new account link cannot be
        generated or the redirect fails you should display a useful error to
        the user.

    "return_url"
        required The URL that the user will be redirected to upon leaving or
        completing the linked flow.

    "type"
        Required. The type of account link the user is requesting. Possible
        values are "account_onboarding" or "account_update".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/account_links/create>

APPLICATION FEE
    You can list or retrieve application fee

  list
        my $obj = $stripe->application_fees( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a application fee object, this issue an api call to get
    the list of all application fee.

    Possible parameters are:

    "charge"
        Only return application fees for the charge specified by this charge
        ID.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/application_fees/list>

  retrieve
        my $obj = $stripe->application_fees( retrieve => $args ) || die( $stripe->error );

    Provided with a application fee object or a hash reference, this will
    retrieve a Stripe application fee and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/application_fees/retrieve>

APPS SECRET
    You can delete, find, list or set apps secret

  delete
        my $obj = $stripe->apps_secrets( delete => {
            name  => "my-api-key",
            scope =>
            {
                type => "account",
            } } ) || die( $stripe->error );

    Provided with a apps secret, or a hash reference, this will issue an api
    call to Stripe to remove the apps secret. It returns the apps secret
    object that was deleted with its property "deleted" set to true.

    Possible parameters are:

    "name"
        Required. A name for the secret that's unique within the scope.

    "scope"
        Required. Specifies the scoping of the secret. Requests originating
        from UI extensions can only access account-scoped secrets or secrets
        scoped to their own user.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/apps/secret_store/delete>

  find
        my $obj = $stripe->apps_secrets( find => {
            name  => "my-api-key",
            scope =>
            {
                type => "account",
            } } ) || die( $stripe->error );

    Provided with a apps secret, or a hash reference, this will issue a find
    api call.

    Returns a secret object.

    Possible parameters are:

    "name"
        Required. A name for the secret that's unique within the scope.

    "scope"
        Required. Specifies the scoping of the secret. Requests originating
        from UI extensions can only access account-scoped secrets or secrets
        scoped to their own user.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/apps/secret_store/find>

  list
        my $obj = $stripe->apps_secrets( list => {
            limit => "2",
            scope =>
            {
                type => "account",
            } } ) || die( $stripe->error );

    Provided with a apps secret object, this issue an api call to get the
    list of all apps secret.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "scope"
        Required. Specifies the scoping of the secret. Requests originating
        from UI extensions can only access account-scoped secrets or secrets
        scoped to their own user.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/apps/secret_store/list>

  set
        my $obj = $stripe->apps_secrets( set => {
            name    => "my-api-key",
            payload => "secret_key_xxxxxx",
            scope   =>
            {
                type => "account",
            } } ) || die( $stripe->error );

    Provided with a apps secret, or a hash reference, this will issue a set
    api call.

    Returns a secret object.

    Possible parameters are:

    "expires_at"
        The Unix timestamp for the expiry time of the secret, after which
        the secret deletes.

    "name"
        Required. A name for the secret that's unique within the scope.

    "payload"
        Required. The plaintext secret value to be stored.

    "scope"
        Required. Specifies the scoping of the secret. Requests originating
        from UI extensions can only access account-scoped secrets or secrets
        scoped to their own user.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/apps/secret_store/set>

BALANCE
    You can retrieve balance

  retrieve
        my $obj = $stripe->balances( retrieve => $args ) || die( $stripe->error );

    Provided with a balance object or a hash reference, this will retrieve a
    Stripe balance and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/balance/balance_retrieve>

BALANCE TRANSACTION
    You can retrieve or list the balance transactions.

  list
    This can take various parameter to influence the list of data returned
    by Stripe. It returns a Net::API::Stripe::List object of
    Net::API::Stripe::Balance::Transaction objects. Valid parameters are as
    follows. See Stripe API for more information:
    <https://stripe.com/docs/api/balance_transactions/list>

        my $list = $stripe->balance_transactions( 'list' ) || die( $stripe->error );
        while( my $bt = $list->next )
        {
            printf( <<EOT, $bt->id, $bt->amount, $bt->created->iso8601, $bt->currency, $bt->customer->name, $bt->description );
    Id: %s
    Amount: %s
    Created on: $s
    Currency: %s
    Cusomer name: %s
    Description: %s
    EOT
        }

    Possible parameters are:

    *available_on*
    *created*
    *currency*
        3-letter iso 4217 currency

    *ending_before*
        Stripe balance transaction id

    *limit*
        Integer

    *payout*
    *source*
    *starting_after*
    *type*
        Only returns transactions of the given type

  retrieve
        my $trans = $stripe->balances( retrieve => 'txn_fake1234567890' ) || die( $stripe->error );

    Provided a "balance_transaction" object or an id, this returns a
    Net::API::Stripe::Balance::Transaction object or undef upon error.

BALANCES
    You an retrieve balances.

  retrieve
        my $bal = $stripe->balances( 'retrieve' ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Balance object, or a hash reference,
    this will retrieve a Stripe balance and return its
    Net::API::Stripe::Balance object.

    There is no argument.

BANK ACCOUNT
    You can create, delete, list, retrieve, update or verify bank account

  create
        my $acct = $stripe->bank_accounts( create => $stripe->bank_account({
            account_holder_name => 'Big Corp, Inc',
            account_holder_type => 'company',
            bank_name => 'Big Bank, Corp'
            country => 'us',
            currency => 'usd',
            # Net::API::Stripe::Customer object
            customer => $customer_object,
            default_for_currency => $stripe->true,
            fingerprint => 'kshfkjhfkjsjdla',
            last4 => 1234,
            metadata => { transaction_id => 2222 },
            routing_number => 123,
            status => 'new',
        })) || die( "Oops: ", $stripe->error );

    Provided wuth a bank account object
    Net::API::Stripe::Connect::ExternalAccount::Bank that has its *account*
    property set, or simply a hash reference this will create a Stripe bank
    account and return its object as a
    Net::API::Stripe::Connect::ExternalAccount::Bank

    Possible parameters are:

    *account*
        A Stripe account id. This is required.

    *external_account* This is required. Either a token, like the ones
    returned by Stripe.js, or a hash reference containing a userâs bank
    account details with the following properties:

        *object* (required)
        *country* (required)
        *currency* (required)
        *account_holder_name*
        *account_holder_type*
        *routing_number*
        *account_number* (required)

    *default_for_currency* Boolean
    *metadata*
        An arbitrary hash reference

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/external_account_bank_accounts/create>

  delete
        my $removed_acct = $stripe->bank_accounts( delete => 'ba_fake123456789' ) || die( "Oops: ", $stripe->error );

    Provided wuth a bank account object
    Net::API::Stripe::Connect::ExternalAccount::Bank that has its *account*
    property set, or simply a hash reference this will remove a Stripe bank
    account and return its object as a
    Net::API::Stripe::Connect::ExternalAccount::Bank

    Possible parameters are:

    *id*
        A Stripe bank account id. This is required.

    *account*
        A Stripe account id. This is required.

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/external_account_bank_accounts/delete>

  list
        my $list = $stripe->bank_accounts( 'list' ) || die( $stripe->error );
        printf( "%d total transaction(s) found\n", $list->count );
        while( my $acct = $list->next )
        {
            ## Do something with this object
        }

    Provided wuth a bank account object
    Net::API::Stripe::Connect::ExternalAccount::Bank that has its *account*
    property set, or simply a hash reference this will list all Stripe bank
    accounts and return a list object as a Net::API::Stripe::List

    Possible parameters are:

    *account*
        A Stripe account id. This is required.

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/external_account_bank_accounts/list>

  retrieve
        my $acct = $stripe->bank_accounts( retrieve => 'ba_fake123456789' ) || die( "Oops: ", $stripe->error );

    Provided wuth a bank account object
    Net::API::Stripe::Connect::ExternalAccount::Bank that has its *account*
    property set, or simply a hash reference this will retrieve a Stripe
    bank account and return its object as a
    Net::API::Stripe::Connect::ExternalAccount::Bank

    Possible parameters are:

    *id*
        A Stripe bank account id. This is required.

    *account*
        A Stripe account id. This is required.

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/external_account_bank_accounts/retrieve>

  update
        my $acct = $stripe->bank_accounts( update => $stripe->bank_account({
            account_holder_name => 'Big Corp, Co., Ltd.',
            default_for_currency => $stripe->false,
        })) || die( "Oops: ", $stripe->error );

        # or passing a hash rather than an object

        my $acct = $stripe->bank_accounts( update => {
            account_holder_name => 'Big Corp, Co., Ltd.',
            default_for_currency => $stripe->false,
        }) || die( "Oops: ", $stripe->error );

    Provided wuth a bank account object
    Net::API::Stripe::Connect::ExternalAccount::Bank that has its *account*
    property set, or simply a hash reference this will update a Stripe bank
    account and return its object as a
    Net::API::Stripe::Connect::ExternalAccount::Bank

    Possible parameters are:

    *id*
        A Stripe bank account id. This is required.

    *account*
        A Stripe account id. This is required.

    *account_holder_name* String
    *account_holder_type* String
    *default_for_currency* Boolean
    *metadata*
        An arbitrary hash reference

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/external_account_bank_accounts/update>

  verify
        my $obj = $stripe->bank_accounts( verify => {
            amounts => [qw( 32 45 )], } ) || die( $stripe->error );

    Provided with a bank account, or a hash reference, this will issue a
    verify api call.

    Returns the bank account object with a "status" of
    <strong>verified</strong>.

    Possible parameters are:

    "amounts"
        Two positive integers, in *cents*, equal to the values of the
        microdeposits sent to the bank account.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_bank_accounts/verify>

BILLING PORTAL CONFIGURATION
    You can create, list, retrieve or update billing portal configuration

  create
        my $obj = $stripe->billing_portal_configurations( create => {
            business_profile =>
            {
                privacy_policy_url   => "https://example.com/privacy",
                terms_of_service_url => "https://example.com/terms",
            }
            features         =>
            {
                customer_update =>
                {
                    allowed_updates => [qw( email tax_id )],
                    enabled         => "1",
                }
                invoice_history =>
                {
                    enabled => "1",
                }
            } } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::PortalConfiguration object or
    a hash reference, this will create a Stripe billing portal configuration
    and return an Net::API::Stripe::Billing::PortalConfiguration object.

    Possible parameters are:

    "business_profile"
        Required. The business information shown to customers in the portal.

    "default_return_url"
        The default URL to redirect customers to when they click on the
        portal's link to return to your website. This can be overriden
        <https://stripe.com/docs/api/customer_portal/sessions/create#create_
        portal_session-return_url> when creating the session.

    "features"
        Required. Information about the features available in the portal.

    "login_page"
        The hosted login page for this configuration. Learn more about the
        portal login page in our integration docs
        <https://stripe.com/docs/billing/subscriptions/integrating-customer-
        portal#share>.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_portal/configurations/create>

  list
        my $obj = $stripe->billing_portal_configurations( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a billing portal configuration object, this issue an api
    call to get the list of all billing portal configuration.

    Possible parameters are:

    "active"
        Only return configurations that are active or inactive (e.g., pass
        "true" to only list active configurations).

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "is_default"
        Only return the default or non-default configurations (e.g., pass
        "true" to only list the default configuration).

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_portal/configurations/list>

  retrieve
        my $obj = $stripe->billing_portal_configurations( retrieve => $args ) || die( $stripe->error );

    Provided with a billing portal configuration object or a hash reference,
    this will retrieve a Stripe billing portal configuration and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_portal/configurations/retrieve>

  update
        my $obj = $stripe->billing_portal_configurations( update => {
            business_profile =>
            {
                privacy_policy_url   => "https://example.com/privacy",
                terms_of_service_url => "https://example.com/terms",
            } } ) || die( $stripe->error );

    Provided with a billing portal configuration object or a hash reference,
    this will update a Stripe billing portal configuration and return its
    corresponding object

    Possible parameters are:

    "active"
        Whether the configuration is active and can be used to create portal
        sessions.

    "business_profile"
        The business information shown to customers in the portal.

    "default_return_url"
        The default URL to redirect customers to when they click on the
        portal's link to return to your website. This can be overriden
        <https://stripe.com/docs/api/customer_portal/sessions/create#create_
        portal_session-return_url> when creating the session.

    "features"
        Information about the features available in the portal.

    "login_page"
        The hosted login page for this configuration. Learn more about the
        portal login page in our integration docs
        <https://stripe.com/docs/billing/subscriptions/integrating-customer-
        portal#share>.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_portal/configurations/update>

BILLING PORTAL SESSION
    You can create billing portal session

  create
        my $obj = $stripe->billing_portal_sessions( create => {
            customer   => "cus_AJ78ZaALpqgiuZ",
            return_url => "https://example.com/account", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::PortalSession object or a
    hash reference, this will create a Stripe billing portal session and
    return an Net::API::Stripe::Billing::PortalSession object.

    Possible parameters are:

    "configuration"
        The ID of an existing configuration
        <https://stripe.com/docs/api/customer_portal/configuration> to use
        for this session, describing its functionality and features. If not
        specified, the session uses the default configuration.

    "customer"
        Required. The ID of an existing customer.

    "locale"
        The IETF language tag of the locale Customer Portal is displayed in.
        If blank or auto, the customer’s "preferred_locales" or browser’s
        locale is used.

    "on_behalf_of"
        The "on_behalf_of" account to use for this session. When specified,
        only subscriptions and invoices with this "on_behalf_of" account
        appear in the portal. For more information, see the docs
        <https://stripe.com/docs/connect/charges-transfers#on-behalf-of>.
        Use the Accounts API
        <https://stripe.com/docs/api/accounts/object#account_object-settings
        -branding> to modify the "on_behalf_of" account's branding settings,
        which the portal displays.

    "return_url"
        The default URL to redirect customers to when they click on the
        portal's link to return to your website.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_portal/sessions/create>

CAPABILITY
    You can list, retrieve or update capability

  list
        my $obj = $stripe->capabilitys( list => $args ) || die( $stripe->error );

    Provided with a capability object, this issue an api call to get the
    list of all capability.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/capabilities/list>

  retrieve
        my $obj = $stripe->capabilitys( retrieve => $args ) || die( $stripe->error );

    Provided with a capability object or a hash reference, this will
    retrieve a Stripe capability and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/capabilities/retrieve>

  update
        my $obj = $stripe->capabilitys( update => {
            requested => "1", } ) || die( $stripe->error );

    Provided with a capability object or a hash reference, this will update
    a Stripe capability and return its corresponding object

    Possible parameters are:

    "requested"
        Passing true requests the capability for the account, if it is not
        already requested. A requested capability may not immediately become
        active. Any requirements to activate the capability are returned in
        the "requirements" arrays.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/capabilities/update>

CARD
    You can create, retrieve, update, delete or list cards.

  create
    Provided a customer object Net::API::Stripe::Customer or a card object
    Net::API::Stripe::Payment::Card that has its *customer* property set, or
    simply a hash reference this will create a Stripe card and return its
    object as a Net::API::Stripe::Payment::Card

    Possible parameters are:

    *id*
        A customer id

    *source*
        A hash reference with the following properties: object number
        exp_month exp_year cvc currency name metadata default_for_currency
        address_line1 address_line2 address_city address_state address_zip
        address_country

    *metadata* An arbitrary hash reference

  delete
    Provided with a customer or a card object, or a hash reference, this
    will issue an api call to Stripe to remove the customer's card. It
    returns the card object that was deleted with its property *deleted* set
    to true.

    Possible parameters are:

    *id*
        Stripe customer id

    *card_id*
        Stripe card id

  list
    Provided with a customer object, this issue an api call to get the list
    of all cards for a given customer.

    Possible parameters are:

    *id*
        Stripe customer id

    *ending_before*
        A card id

    *limit* Integer
    *starting_after* A card id

    For more information, see Stripe api documentation here:
    <https://stripe.com/docs/api/cards/list>

  retrieve
    Provided a customer object Net::API::Stripe::Customer or a card object
    Net::API::Stripe::Payment::Card that has its *customer* property set, or
    simply a hash reference this will retrieve the customer card information
    as a Net::API::Stripe::Payment::Card object

    Possible parameters are:

    *id*
        Stripe card id

    *customer*
        Stripe customer id

  update
    Provided a customer object Net::API::Stripe::Customer or a card object
    Net::API::Stripe::Payment::Card that has its *customer* property set, or
    simply a hash reference this will update the customer card information,
    but what can be updated is limited by Stripe and it is typically the
    expiration date or postal address

    Possible parameters are:

    *id*
        Stripe card id

    *customer*
        Stripe customer id

    *address_city* City
    *address_country*
        Country as 2-letters ISO 3166 country code

    *address_line1*
        Address first line

    *address_line2*
        Address second line

    *address_state*
        State / region

    *address_zip*
        Postal code

    *exp_month*
        Expiration month

    *exp_year*
        Expiration year

    *metadata*
        Arbitrary hash reference

    *name*
        Name for this credit card

CASH BALANCE
    You can retrieve or update cash balance

  retrieve
        my $obj = $stripe->cash_balances( retrieve => $args ) || die( $stripe->error );

    Provided with a cash balance object or a hash reference, this will
    retrieve a Stripe cash balance and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/cash_balance/retrieve>

  update
        my $obj = $stripe->cash_balances( update => {
            settings =>
            {
                reconciliation_mode => "manual",
            } } ) || die( $stripe->error );

    Provided with a cash balance object or a hash reference, this will
    update a Stripe cash balance and return its corresponding object

    Possible parameters are:

    "settings"
        A hash of settings for this cash balance.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/cash_balance/update>

CHARGE
    You can create, retrieve, update, capture or list charges.

  capture
    Provided with a Net::API::Stripe::Charge object or a hash reference,
    this will capture a Stripe charge and return its corresponding charge
    object Net::API::Stripe::Charge

    Possible parameters are:

    *id* A Stripe charge id. This is required
    *amount* Integer
    *application_fee_amount* Integer
    *destination* A hash reference with one property: *amount*
    *receipt_email* E-mail address
    *statement_descriptor* Text
    *statement_descriptor_suffix* String
    *transfer_data* A hash reference with one property: *amount*
    *transfer_group* Text

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/charges/capture>

  create
    Provided with a Net::API::Stripe::Charge object or a hash reference,
    this will create a Stripe charge and return a charge object
    Net::API::Stripe::Charge

    Possible parameters are:

    *amount* Amount as integer. This is required
    *currency* A 3-letter iso 4217 code such sa "jpy" for Japanese Yen
    *application_fee_amount* Integer
    *capture* Boolean
    *customer* A customer id
    *description* An arbitrary text
    *destination* A hash with properties account and amount.
    *metadata* Arbitrary hash reference
    *on_behalf_of* Stripe account id
    *receipt_email* E-mail address
    *shipping* Shipping address as a hash reference with the following
    properties: address name carrier phone tracking_number. See also
    Net::API::Stripe::Shipping
    *source* A source id
    *statement_descriptor* Text
    *statement_descriptor_suffix* Text
    *transfer_data* A date
    *transfer_group* Text
    *idempotency* identifier

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/charges/create>

  list
    This will list all the charges for a given customer and return a
    Net::API::Stripe::List object.

    Possible parameters are:

    *created* A date that can also be expressed as a unix timestamp
    *customer* A Stripe customer id
    *ending_before* A Stripe charge id
    *limit* Integer
    *payment_intent* A payment intent Stripe id
    *source* A source Stripe id
    *starting_after* A Stripe charge id
    *transfer_group* Text

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/charges/list>

  retrieve
    Provided with a Net::API::Stripe::Charge object or a hash reference,
    this will retrieve a Stripe charge and return its corresponding charge
    object Net::API::Stripe::Charge

    Possible parameters are:

    *id* Stripe charge id. This is required

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/charges/retrieve>

  search
        my $obj = $stripe->charges( search => {
            query => "amount>999 AND metadata['order_id']:'6735'", } ) || die( $stripe->error );

    Provided with a charge, or a hash reference, this will issue a search
    api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" charges. If no objects match the query, the resulting array will
    be empty. See the related guide on expanding properties in lists
    <https://stripe.com/docs/expand#lists>.

    Possible parameters are:

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "page"
        A cursor for pagination across multiple pages of results. Don't
        include this parameter on the first call. Use the next_page value
        returned in a previous response to request subsequent results.

    "query"
        Required. The search query string. See search query language
        <https://stripe.com/docs/search#search-query-language> and the list
        of supported query fields for charges
        <https://stripe.com/docs/search#query-fields-for-charges>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/charges/search>

  update
    Provided with a Net::API::Stripe::Charge object or a hash reference,
    this will update a Stripe charge and return its corresponding charge
    object Net::API::Stripe::Charge

    Possible parameters are:

    *id* A Stripe charge id. This is required
    *customer* A customer id
    *description* An arbitrary text
    *fraud_details* A hash with one property: *user_report*
    *metadata* Arbitrary hash reference
    *receipt_email* E-mail address
    *shipping* Shipping address as a hash reference with the following
    properties: address name carrier phone tracking_number. See also
    Net::API::Stripe::Shipping
    *transfer_group* Text

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/charges/update>

CHECKOUT SESSION
    You can create, expire, items, list or retrieve checkout session

  create
        my $obj = $stripe->checkout_sessions( create => {
            cancel_url  => "https://example.com/cancel",
            line_items  => [,
                price    => "price_H5ggYwtDq4fbrJ",
                quantity => "2",
            ],
            mode        => "payment",
            success_url => "https://example.com/success", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Checkout::Session object or a hash
    reference, this will create a Stripe checkout session and return an
    Net::API::Stripe::Checkout::Session object.

    Possible parameters are:

    "after_expiration"
        Configure actions after a Checkout Session has expired.

    "allow_promotion_codes"
        Enables user redeemable promotion codes.

    "automatic_tax"
        Settings for automatic tax lookup for this session and resulting
        payments, invoices, and subscriptions.

    "billing_address_collection"
        Specify whether Checkout should collect the customer's billing
        address.

    "cancel_url"
        Required. The URL the customer will be directed to if they decide to
        cancel payment and return to your website.

    "client_reference_id"
        A unique string to reference the Checkout Session. This can be a
        customer ID, a cart ID, or similar, and can be used to reconcile the
        session with your internal systems.

    "consent_collection"
        Configure fields for the Checkout Session to gather active consent
        from customers.

    "currency"
        Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "customer"
        ID of an existing Customer, if one exists. In "payment" mode, the
        customer’s most recent card payment method will be used to prefill
        the email, name, card details, and billing address on the Checkout
        page. In "subscription" mode, the customer’s default payment method
        <https://stripe.com/docs/api/customers/update#update_customer-invoic
        e_settings-default_payment_method> will be used if it’s a card, and
        otherwise the most recent card will be used. A valid billing
        address, billing name and billing email are required on the payment
        method for Checkout to prefill the customer's card details.

        If the Customer already has a valid email
        <https://stripe.com/docs/api/customers/object#customer_object-email>
        set, the email will be prefilled and not editable in Checkout. If
        the Customer does not have a valid "email", Checkout will set the
        email entered during the session on the Customer.

        If blank for Checkout Sessions in "payment" or "subscription" mode,
        Checkout will create a new Customer object based on information
        provided during the payment flow.

        You can set "payment_intent_data.setup_future_usage"
        <https://stripe.com/docs/api/checkout/sessions/create#create_checkou
        t_session-payment_intent_data-setup_future_usage> to have Checkout
        automatically attach the payment method to the Customer you pass in
        for future reuse.

    "customer_creation"
        Configure whether a Checkout Session creates a Customer
        <https://stripe.com/docs/api/customers> during Session confirmation.

        When a Customer is not created, you can still retrieve email,
        address, and other customer data entered in Checkout with
        customer_details
        <https://stripe.com/docs/api/checkout/sessions/object#checkout_sessi
        on_object-customer_details>.

        Sessions that don't create Customers instead create Guest Customers
        <https://support.stripe.com/questions/guest-customer-faq> in the
        Dashboard. Promotion codes limited to first time customers will
        return invalid for these Sessions.

        Can only be set in "payment" and "setup" mode.

    "customer_email"
        If provided, this value will be used when the Customer object is
        created. If not provided, customers will be asked to enter their
        email address. Use this parameter to prefill customer data if you
        already have an email on file. To access information about the
        customer once a session is complete, use the "customer" field.

    "customer_update"
        Controls what fields on Customer can be updated by the Checkout
        Session. Can only be provided when "customer" is provided.

    "discounts"
        The coupon or promotion code to apply to this Session. Currently,
        only up to one may be specified.

    "expires_at"
        The Epoch time in seconds at which the Checkout Session will expire.
        It can be anywhere from 30 minutes to 24 hours after Checkout
        Session creation. By default, this value is 24 hours from creation.

    "line_items"
        A list of items the customer is purchasing. Use this parameter to
        pass one-time or recurring Prices
        <https://stripe.com/docs/api/prices>.

        For "payment" mode, there is a maximum of 100 line items, however it
        is recommended to consolidate line items if there are more than a
        few dozen.

        For "subscription" mode, there is a maximum of 20 line items with
        recurring Prices and 20 line items with one-time Prices. Line items
        with one-time Prices will be on the initial invoice only.

    "locale"
        The IETF language tag of the locale Checkout is displayed in. If
        blank or "auto", the browser's locale is used.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "mode"
        required conditionally The mode of the Checkout Session. Required
        when using prices or "setup" mode. Pass "subscription" if the
        Checkout Session includes at least one recurring item.

    "payment_intent_data"
        A subset of parameters to be passed to PaymentIntent creation for
        Checkout Sessions in "payment" mode.

    "payment_method_collection"
        Specify whether Checkout should collect a payment method. When set
        to "if_required", Checkout will not collect a payment method when
        the total due for the session is 0. This may occur if the Checkout
        Session includes a free trial or a discount.

        Can only be set in "subscription" mode.

        If you'd like information on how to collect a payment method outside
        of Checkout, read the guide on configuring subscriptions with a free
        trial <https://stripe.com/docs/payments/checkout/free-trials>.

    "payment_method_options"
        Payment-method-specific configuration.

    "payment_method_types"
        A list of the types of payment methods (e.g., "card") this Checkout
        Session can accept.

        Do not include this attribute if you prefer to manage your payment
        methods from the Stripe Dashboard
        <https://dashboard.stripe.com/settings/payment_methods>.

        Read more about the supported payment methods and their requirements
        in our payment method details guide
        <https://stripe.com/docs/payments/checkout/payment-methods>.

        If multiple payment methods are passed, Checkout will dynamically
        reorder them to prioritize the most relevant payment methods based
        on the customer's location and other characteristics.

    "phone_number_collection"
        Controls phone number collection settings for the session.

        We recommend that you review your privacy policy and check with your
        legal contacts before using this feature. Learn more about
        collecting phone numbers with Checkout
        <https://stripe.com/docs/payments/checkout/phone-numbers>.

    "setup_intent_data"
        A subset of parameters to be passed to SetupIntent creation for
        Checkout Sessions in "setup" mode.

    "shipping_address_collection"
        When set, provides configuration for Checkout to collect a shipping
        address from a customer.

    "shipping_options"
        The shipping rate options to apply to this Session.

    "submit_type"
        Describes the type of transaction being performed by Checkout in
        order to customize relevant text on the page, such as the submit
        button. "submit_type" can only be specified on Checkout Sessions in
        "payment" mode, but not Checkout Sessions in "subscription" or
        "setup" mode.

    "subscription_data"
        A subset of parameters to be passed to subscription creation for
        Checkout Sessions in "subscription" mode.

    "success_url"
        Required. The URL to which Stripe should send customers when payment
        or setup is complete. If you’d like to use information from the
        successful Checkout Session on your page, read the guide on
        customizing your success page
        <https://stripe.com/docs/payments/checkout/custom-success-page>.

    "tax_id_collection"
        Controls tax ID collection settings for the session.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/checkout/sessions/create>

  expire
        my $obj = $stripe->checkout_sessions( expire => $args ) || die( $stripe->error );

    Provided with a checkout session, or a hash reference, this will issue a
    expire api call.

    Returns a Session object if the expiration succeeded. Returns an error
    if the Session has already expired or isn’t in an expireable state.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/checkout/sessions/expire>

  items
        my $obj = $stripe->checkout_sessions( items => $args ) || die( $stripe->error );

    Provided with a checkout session, or a hash reference, this will issue a
    items api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" Checkout Session line items, starting after Line Item
    "starting_after". Each entry in the array is a separate Line Item
    object. If no more line items are available, the resulting array will be
    empty.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/checkout/sessions/line_items>

  list
        my $obj = $stripe->checkout_sessions( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a checkout session object, this issue an api call to get
    the list of all checkout session.

    Possible parameters are:

    "customer"
        Only return the Checkout Sessions for the Customer specified.

    "customer_details"
        Only return the Checkout Sessions for the Customer details
        specified.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "payment_intent"
        Only return the Checkout Session for the PaymentIntent specified.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "subscription"
        Only return the Checkout Session for the subscription specified.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/checkout/sessions/list>

  retrieve
        my $obj = $stripe->checkout_sessions( retrieve => $args ) || die( $stripe->error );

    Provided with a checkout session object or a hash reference, this will
    retrieve a Stripe checkout session and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/checkout/sessions/retrieve>

CHECKOUT SESSIONS
    You can create or retrieve checkout sessions

  create
    Provided with a Net::API::Stripe::Checkout::Session object or an hash
    reference of parameters and this will create a Stripe checkout session
    and return a Net::API::Stripe::Checkout::Session object.

    Possible parameters are:

    *cancel_url* URL
    *payment_method_types* String. One of card or ideal
    *success_url* URL
    *billing_address_collection* String. One of auto or required
    *client_reference_id* String
    *customer* A Stripe customer id
    *customer_email* String
    *line_items* An array of hash reference with the following properties:
    amount currency name quantity description images
    *locale* a 2-letter iso 639, such as "fr" or "ja" or "local"
    *mode* String. One of setup or subscription
    *payment_intent_data* An hash reference with the following properties:
    application_fee_amount capture_method description metadata on_behalf_of
    receipt_email setup_future_usage
    *setup_intent_data* An hash reference with the following properties:
    description metadata on_behalf_of
    *submit_type* String. One of auto, book, donate or pay
    *subscription_data* An hash reference with the following properties:
    items application_fee_percent metadata trial_end trial_from_plan
    trial_period_days

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/checkout/sessions/create>

  list
    Provided with an hash reference of parameters, this will get the list of
    checkout sessions and return a Net::API::Stripe::List object.

    Possible parameters are:

    *ending_before* A Stripe credit note id
    *limit* Integer
    *payment_intent* A Stripe payment intent id
    *subscription* A Stripe subscription id
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/checkout/sessions/list>

  retrieve
    Provided with a Net::API::Stripe::Checkout::Session object or an hash
    reference of parameters and this will retrieve a Stripe checkout session
    and return a Net::API::Stripe::Checkout::Session object.

    Possible parameters are:

    *id* A Stripe checkout session

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/checkout/sessions/retrieve>

COUNTRY SPEC
    You can list or retrieve country spec

  list
        my $obj = $stripe->country_specs( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a country spec object, this issue an api call to get the
    list of all country spec.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/country_specs/list>

  retrieve
        my $obj = $stripe->country_specs( retrieve => $args ) || die( $stripe->error );

    Provided with a country spec object or a hash reference, this will
    retrieve a Stripe country spec and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/country_specs/retrieve>

COUPON
    You can create, delete, list, retrieve or update coupon

  create
        my $obj = $stripe->coupons( create => {
            duration           => "repeating",
            duration_in_months => "3",
            percent_off        => "25.5", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Coupon object or a hash
    reference, this will create a Stripe coupon and return an
    Net::API::Stripe::Billing::Coupon object.

    Possible parameters are:

    "amount_off"
        A positive integer representing the amount to subtract from an
        invoice total (required if "percent_off" is not passed).

    "applies_to"
        A hash containing directions for what this Coupon will apply
        discounts to.

    "currency"
        Three-letter ISO code for the currency
        <https://stripe.com/docs/currencies> of the "amount_off" parameter
        (required if "amount_off" is passed).

    "currency_options"
        Coupons defined in each available currency option (only supported if
        "amount_off" is passed). Each key must be a three-letter ISO
        currency code <https://www.iso.org/iso-4217-currency-codes.html> and
        a supported currency <https://stripe.com/docs/currencies>. For
        example, to define your coupon in "eur", pass the fields below in
        the "eur" key of "currency_options".

    "duration"
        Specifies how long the discount will be in effect if used on a
        subscription. Can be "forever", "once", or "repeating". Defaults to
        "once".

    "duration_in_months"
        Required only if "duration" is "repeating", in which case it must be
        a positive integer that specifies the number of months the discount
        will be in effect.

    "id"
        Unique string of your choice that will be used to identify this
        coupon when applying it to a customer. If you don't want to specify
        a particular code, you can leave the ID blank and we'll generate a
        random code for you.

    "max_redemptions"
        A positive integer specifying the number of times the coupon can be
        redeemed before it's no longer valid. For example, you might have a
        50% off coupon that the first 20 readers of your blog can use.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        Name of the coupon displayed to customers on, for instance invoices,
        or receipts. By default the "id" is shown if "name" is not set.

    "percent_off"
        A positive float larger than 0, and smaller or equal to 100, that
        represents the discount the coupon will apply (required if
        "amount_off" is not passed).

    "redeem_by"
        Unix timestamp specifying the last time at which the coupon can be
        redeemed. After the redeem_by date, the coupon can no longer be
        applied to new customers.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/coupons/create>

  delete
        my $obj = $stripe->coupons( delete => $args ) || die( $stripe->error );

    Provided with a coupon, or a hash reference, this will issue an api call
    to Stripe to remove the coupon. It returns the coupon object that was
    deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/coupons/delete>

  list
        my $obj = $stripe->coupons( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a coupon object, this issue an api call to get the list of
    all coupon.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/coupons/list>

  retrieve
        my $obj = $stripe->coupons( retrieve => $args ) || die( $stripe->error );

    Provided with a coupon object or a hash reference, this will retrieve a
    Stripe coupon and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/coupons/retrieve>

  update
        my $obj = $stripe->coupons( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a coupon object or a hash reference, this will update a
    Stripe coupon and return its corresponding object

    Possible parameters are:

    "currency_options"
        Coupons defined in each available currency option (only supported if
        the coupon is amount-based). Each key must be a three-letter ISO
        currency code <https://www.iso.org/iso-4217-currency-codes.html> and
        a supported currency <https://stripe.com/docs/currencies>. For
        example, to define your coupon in "eur", pass the fields below in
        the "eur" key of "currency_options".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        Name of the coupon displayed to customers on, for instance invoices,
        or receipts. By default the "id" is shown if "name" is not set.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/coupons/update>

COUPONS
    You can create, retrieve, update, delete or list coupons.

  create
    Provided with a Net::API::Stripe::Billing::Coupon object or a hash
    reference, this will create a Stripe coupon and return a coupon object
    Net::API::Stripe::Billing::Coupon

    Possible parameters are:

    *duration* String that can be forever, once or repeating
    *amount_off* Integer
    *currency* Three-letters iso 4217 currency code such as "jpy" for
    Japanese Yen
    *duration_in_months* Integer
    *id* A Coupon id, which is also the coupon code, so you are encouraged
    to create it
    *max_redemptions* Integer
    *metadata* Arbitrary hash reference
    *name* String
    *percent_off* Percentage such as > 0 and <= 100
    *redeem_by* Date

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/coupons/create>

  delete
    Provided with a Net::API::Stripe::Billing::Coupon object or a hash
    reference, this will remove the Stripe coupon and return a coupon object
    Net::API::Stripe::Billing::Coupon with the property *deleted* set to
    true.

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/coupons/delete>

  list
    This will list all the coupons and return a Net::API::Stripe::List
    object.

    Possible parameters are:

    *created* A date that can also be expressed as a unix timestamp
    *customer* A Stripe customer id
    *ending_before* A Stripe charge id
    *limit* Integer
    *starting_after* A Stripe charge id

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/coupons/list>

  retrieve
    Provided with a Net::API::Stripe::Billing::Coupon object or a hash
    reference, this will retrieve a Stripe coupon and return a coupon object
    Net::API::Stripe::Billing::Coupon.

    Possible parameters are:

    *id* A Stripe coupon id

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/coupons/retrieve>

  update
    Provided with a Net::API::Stripe::Billing::Coupon object or a hash
    reference, this will update a Stripe coupon and return a coupon object
    Net::API::Stripe::Billing::Coupon.

    Possible parameters are:

    *id* A Stripe coupon id
    *metadata* Arbitrary hash reference
    *name* String

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/coupons/update>

CREDIT NOTE
    You can create, list, preview, retrieve, update or void credit note

  create
        my $obj = $stripe->credit_notes( create => {
            invoice => "in_1Le9F22eZvKYlo2C5gZ5i57e",
            lines   => [,
                invoice_line_item => "il_1Le9F22eZvKYlo2C8u1PfwX0",
                quantity          => "1",
                type              => "invoice_line_item",
            ], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::CreditNote object or a hash
    reference, this will create a Stripe credit note and return an
    Net::API::Stripe::Billing::CreditNote object.

    Possible parameters are:

    "amount"
        The integer amount in JPY representing the total amount of the
        credit note.

    "credit_amount"
        The integer amount in JPY representing the amount to credit the
        customer's balance, which will be automatically applied to their
        next invoice.

    "invoice"
        Required. ID of the invoice.

    "lines"
        Line items that make up the credit note.

    "memo"
        The credit note's memo appears on the credit note PDF.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "out_of_band_amount"
        The integer amount in JPY representing the amount that is credited
        outside of Stripe.

    "reason"
        Reason for issuing this credit note, one of "duplicate",
        "fraudulent", "order_change", or "product_unsatisfactory"

    "refund"
        ID of an existing refund to link this credit note to.

    "refund_amount"
        The integer amount in JPY representing the amount to refund. If set,
        a refund will be created for the charge associated with the invoice.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/credit_notes/create>

  list
        my $obj = $stripe->credit_notes( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a credit note object, this issue an api call to get the
    list of all credit note.

    Possible parameters are:

    "customer"
        Only return credit notes for the customer specified by this customer
        ID.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "invoice"
        Only return credit notes for the invoice specified by this invoice
        ID.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/credit_notes/list>

  preview
        my $obj = $stripe->credit_notes( preview => {
            invoice => "in_1Le9F22eZvKYlo2C5gZ5i57e",
            lines   => [,
                invoice_line_item => "il_1Le9F22eZvKYlo2C8u1PfwX0",
                quantity          => "1",
                type              => "invoice_line_item",
            ], } ) || die( $stripe->error );

    Provided with a credit note, or a hash reference, this will issue a
    preview api call.

    Returns a credit note object.

    Possible parameters are:

    "amount"
        The integer amount in JPY representing the total amount of the
        credit note.

    "credit_amount"
        The integer amount in JPY representing the amount to credit the
        customer's balance, which will be automatically applied to their
        next invoice.

    "invoice"
        Required. ID of the invoice.

    "lines"
        Line items that make up the credit note.

    "memo"
        The credit note's memo appears on the credit note PDF.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "out_of_band_amount"
        The integer amount in JPY representing the amount that is credited
        outside of Stripe.

    "reason"
        Reason for issuing this credit note, one of "duplicate",
        "fraudulent", "order_change", or "product_unsatisfactory"

    "refund"
        ID of an existing refund to link this credit note to.

    "refund_amount"
        The integer amount in JPY representing the amount to refund. If set,
        a refund will be created for the charge associated with the invoice.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/credit_notes/preview>

  retrieve
        my $obj = $stripe->credit_notes( retrieve => $args ) || die( $stripe->error );

    Provided with a credit note object or a hash reference, this will
    retrieve a Stripe credit note and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/credit_notes/retrieve>

  update
        my $obj = $stripe->credit_notes( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a credit note object or a hash reference, this will update
    a Stripe credit note and return its corresponding object

    Possible parameters are:

    "memo"
        Credit note memo.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/credit_notes/update>

  void
        my $obj = $stripe->credit_notes( void => $args ) || die( $stripe->error );

    Provided with a credit note, or a hash reference, this will issue a void
    api call.

    Returns the voided credit note object if the call succeeded.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/credit_notes/void>

CREDIT NOTE LINE ITEM
    You can list credit note line item

  list
        my $obj = $stripe->credit_note_line_items( list => {
            invoice => "in_1Le9F22eZvKYlo2C5gZ5i57e",
            lines   => [,
                invoice_line_item => "il_1Le9F22eZvKYlo2C8u1PfwX0",
                quantity          => "1",
                type              => "invoice_line_item",
            ], } ) || die( $stripe->error );

    Provided with a credit note line item object, this issue an api call to
    get the list of all credit note line item.

    Possible parameters are:

    "amount"
        The integer amount in JPY representing the total amount of the
        credit note.

    "credit_amount"
        The integer amount in JPY representing the amount to credit the
        customer's balance, which will be automatically applied to their
        next invoice.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "invoice"
        Required. ID of the invoice.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "lines"
        Line items that make up the credit note.

    "memo"
        The credit note's memo appears on the credit note PDF.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "out_of_band_amount"
        The integer amount in JPY representing the amount that is credited
        outside of Stripe.

    "reason"
        Reason for issuing this credit note, one of "duplicate",
        "fraudulent", "order_change", or "product_unsatisfactory"

    "refund"
        ID of an existing refund to link this credit note to.

    "refund_amount"
        The integer amount in JPY representing the amount to refund. If set,
        a refund will be created for the charge associated with the invoice.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/credit_notes/preview_lines>

CREDIT NOTES
    You can preview, create, lines, lines_preview, retrieve, update, void or
    list credit notes.

  create
    Provided with a Net::API::Stripe::Billing::CreditNote object or a hash
    reference, this will create a Stripe credit note and return a credit
    note Net::API::Stripe::Billing::CreditNote object.

    Possible parameters are:

    *invoice* A Stripe invoice id. This is required.
    *amount* Integer
    *credit_amount* Integer
    *lines* An array of hash with properties: amount description
    invoice_line_item quantity tax_rates type unit_amount
    unit_amount_decimal
    *memo* Text
    *metadata* Arbitrary hash reference
    *out_of_band_amount* Integer
    *reason* Text
    *refund* A Stripe refund id
    *refund_amount* Integer

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/credit_notes/create>

  lines
    Provided with a Net::API::Stripe::Billing::CreditNote object or a hash
    reference, this gets the list of all the credit note line items and
    return a Net::API::Stripe::List object.

    Possible parameters are:

    *id* A Stripe credit note id. This is required.
    *ending_before* A Stripe credit note id.
    *limit* Integer
    *starting_after* A Stripe credit note id.

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/credit_notes/lines>

  lines_preview
    Provided with a Net::API::Stripe::Billing::CreditNote object or a hash
    reference, this gets the list of all the credit note preview line items
    and return a Net::API::Stripe::List object.

    Possible parameters are:

    *amount* Integer
    *credit_amount* Integer
    *ending_before* A Stripe credit note id.
    *invoice* A Stripe invoice id. This is required.
    *limit* Integer
    *lines* An array of hash with properties: amount description
    invoice_line_item quantity tax_rates type unit_amount
    unit_amount_decimal
    *memo* Text
    *metadata* Arbitrary hash reference
    *out_of_band_amount* Integer
    *reason* Text
    *refund* A Stripe refund id
    *refund_amount* Integer
    *starting_after* A Stripe credit note id.

    For more information see Stripe documentation here:
    <https://stripe.com/docs/api/credit_notes/lines>

  list
    Given a set of optional parameters, this get the list of credit notes
    and return a Net::API::Stripe::List object.

    *created* Date or unix timestamp
    *ending_before* A Stripe credit note id
    *limit* Integer
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/credit_notes/list>

  preview
    Provided with a Net::API::Stripe::Billing::CreditNote or a hash
    reference, this will create a Stripe credit note preview and return a
    Net::API::Stripe::Billing::CreditNote object.

    *invoice* A Stripe invoice id. This is required.
    *amount* Integer
    *credit_amount* Integer
    *lines* An array of hash with properties: amount description
    invoice_line_item quantity tax_rates type unit_amount
    unit_amount_decimal
    *memo* Text
    *metadata* Arbitrary hash reference
    *out_of_band_amount* Integer
    *reason* Text
    *refund* A Stripe refund id
    *refund_amount* Integer

  retrieve
    Provided with a Net::API::Stripe::Billing::CreditNote object or a hash
    reference, this will retrieve the Stripe credit note and return a
    Net::API::Stripe::Billing::CreditNote object

    Possible parameters are:

    *id* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/credit_notes/retrieve>

  update
    Provided with a Net::API::Stripe::Billing::CreditNote object or a hash
    reference, this will update a Stripe credit note and return a
    Net::API::Stripe::Billing::CreditNote object

    Possible parameters are:

    *id* A Stripe credit note id. This is required
    *memo* Text
    *metadata* Arbitrary hash reference

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/credit_notes/update>

  void
    Provided with a Net::API::Stripe::Billing::CreditNote object or a hash
    reference, this will void a Stripe credit note and return a
    Net::API::Stripe::Billing::CreditNote object

    Possible parameters are:

    *id* A Stripe credit note id. This is required

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/credit_notes/void>

CUSTOMER
    You can create, delete, list, retrieve, search or update customer

  create
        my $obj = $stripe->customers( create => {
            description => "My First Test Customer (created for API docs at https://www.stripe.com/docs/api)", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Customer object or a hash reference,
    this will create a Stripe customer and return an
    Net::API::Stripe::Customer object.

    Possible parameters are:

    "address"
        The customer's address.

    "balance"
        An integer amount in JPY that represents the customer's current
        balance, which affect the customer's future invoices. A negative
        amount represents a credit that decreases the amount due on an
        invoice; a positive amount increases the amount due on an invoice.

    "cash_balance"
        Balance information and default balance settings for this customer.

    "coupon"
        If you provide a coupon code, the customer will have a discount
        applied on all recurring charges. Charges you create through the API
        will not have the discount.

    "description"
        An arbitrary string that you can attach to a customer object. It is
        displayed alongside the customer in the dashboard.

    "email"
        Customer's email address. It's displayed alongside the customer in
        your dashboard and can be useful for searching and tracking. This
        may be up to *512 characters*.

    "invoice_prefix"
        The prefix for the customer used to generate unique invoice numbers.
        Must be 3–12 uppercase letters or numbers.

    "invoice_settings"
        Default invoice settings for this customer.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        The customer's full name or business name.

    "next_invoice_sequence"
        The sequence to be used on the customer's next invoice. Defaults to
        1.

    "payment_method"
        The ID of the PaymentMethod to attach to the customer.

    "phone"
        The customer's phone number.

    "preferred_locales"
        Customer's preferred languages, ordered by preference.

    "promotion_code"
        The API ID of a promotion code to apply to the customer. The
        customer will have a discount applied on all recurring payments.
        Charges you create through the API will not have the discount.

    "shipping"
        The customer's shipping information. Appears on invoices emailed to
        this customer.

    "source"
        When using payment sources created via the Token or Sources APIs,
        passing "source" will create a new source object, make it the new
        customer default source, and delete the old customer default if one
        exists. If you want to add additional sources instead of replacing
        the existing default, use the card creation API
        <https://stripe.com/docs/api#create_card>. Whenever you attach a
        card to a customer, Stripe will automatically validate the card.

    "tax"
        Tax details about the customer.

    "tax_exempt"
        The customer's tax exemption. One of "none", "exempt", or "reverse".

    "tax_id_data"
        The customer's tax IDs.

    "test_clock"
        ID of the test clock to attach to the customer.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customers/create>

  delete
        my $obj = $stripe->customers( delete => $args ) || die( $stripe->error );

    Provided with a customer, or a hash reference, this will issue an api
    call to Stripe to remove the customer. It returns the customer object
    that was deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customers/delete>

  list
        my $obj = $stripe->customers( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a customer object, this issue an api call to get the list
    of all customer.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "email"
        A case-sensitive filter on the list based on the customer's "email"
        field. The value must be a string.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "test_clock"
        Provides a list of customers that are associated with the specified
        test clock. The response will not include customers with test clocks
        if this parameter is not set.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customers/list>

  retrieve
        my $obj = $stripe->customers( retrieve => $args ) || die( $stripe->error );

    Provided with a customer object or a hash reference, this will retrieve
    a Stripe customer and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customers/retrieve>

  search
        my $obj = $stripe->customers( search => {
            query => "name:'fakename' AND metadata['foo']:'bar'", } ) || die( $stripe->error );

    Provided with a customer, or a hash reference, this will issue a search
    api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" customers. If no objects match the query, the resulting array
    will be empty. See the related guide on expanding properties in lists
    <https://stripe.com/docs/expand#lists>.

    Possible parameters are:

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "page"
        A cursor for pagination across multiple pages of results. Don't
        include this parameter on the first call. Use the next_page value
        returned in a previous response to request subsequent results.

    "query"
        Required. The search query string. See search query language
        <https://stripe.com/docs/search#search-query-language> and the list
        of supported query fields for customers
        <https://stripe.com/docs/search#query-fields-for-customers>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customers/search>

  update
        my $obj = $stripe->customers( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a customer object or a hash reference, this will update a
    Stripe customer and return its corresponding object

    Possible parameters are:

    "address"
        The customer's address.

    "balance"
        An integer amount in JPY that represents the customer's current
        balance, which affect the customer's future invoices. A negative
        amount represents a credit that decreases the amount due on an
        invoice; a positive amount increases the amount due on an invoice.

    "cash_balance"
        Balance information and default balance settings for this customer.

    "coupon"
        If you provide a coupon code, the customer will have a discount
        applied on all recurring charges. Charges you create through the API
        will not have the discount.

    "default_source"
        If you are using payment methods created via the PaymentMethods API,
        see the invoice*settings.default*payment_method
        <https://stripe.com/docs/api/customers/update#update_customer-invoic
        e_settings-default_payment_method> parameter.

        Provide the ID of a payment source already attached to this customer
        to make it this customer's default payment source.

        If you want to add a new payment source and make it the default, see
        the source
        <https://stripe.com/docs/api/customers/update#update_customer-source
        > property.

    "description"
        An arbitrary string that you can attach to a customer object. It is
        displayed alongside the customer in the dashboard.

    "email"
        Customer's email address. It's displayed alongside the customer in
        your dashboard and can be useful for searching and tracking. This
        may be up to *512 characters*.

    "invoice_prefix"
        The prefix for the customer used to generate unique invoice numbers.
        Must be 3–12 uppercase letters or numbers.

    "invoice_settings"
        Default invoice settings for this customer.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        The customer's full name or business name.

    "next_invoice_sequence"
        The sequence to be used on the customer's next invoice. Defaults to
        1.

    "phone"
        The customer's phone number.

    "preferred_locales"
        Customer's preferred languages, ordered by preference.

    "promotion_code"
        The API ID of a promotion code to apply to the customer. The
        customer will have a discount applied on all recurring payments.
        Charges you create through the API will not have the discount.

    "shipping"
        The customer's shipping information. Appears on invoices emailed to
        this customer.

    "source"
        When using payment sources created via the Token or Sources APIs,
        passing "source" will create a new source object, make it the new
        customer default source, and delete the old customer default if one
        exists. If you want to add additional sources instead of replacing
        the existing default, use the card creation API
        <https://stripe.com/docs/api#create_card>. Whenever you attach a
        card to a customer, Stripe will automatically validate the card.

    "tax"
        Tax details about the customer.

    "tax_exempt"
        The customer's tax exemption. One of "none", "exempt", or "reverse".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customers/update>

CUSTOMER BALANCE TRANSACTION
    You can create, list, retrieve or update customer balance transaction

  create
        my $obj = $stripe->customer_balance_transactions( create => {
            amount   => "-500",
            currency => "usd", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Customer::BalanceTransaction object or
    a hash reference, this will create a Stripe customer balance transaction
    and return an Net::API::Stripe::Customer::BalanceTransaction object.

    Possible parameters are:

    "amount"
        Required. The integer amount in JPY to apply to the customer's
        credit balance.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.
        If the customer's "currency"
        <https://stripe.com/docs/api/customers/object#customer_object-curren
        cy> is set, this value must match it. If the customer's "currency"
        is not set, it will be updated to this value.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_balance_transactions/create>

  list
        my $obj = $stripe->customer_balance_transactions( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a customer balance transaction object, this issue an api
    call to get the list of all customer balance transaction.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_balance_transactions/list>

  retrieve
        my $obj = $stripe->customer_balance_transactions( retrieve => $args ) || die( $stripe->error );

    Provided with a customer balance transaction object or a hash reference,
    this will retrieve a Stripe customer balance transaction and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_balance_transactions/retrieve>

  update
        my $obj = $stripe->customer_balance_transactions( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a customer balance transaction object or a hash reference,
    this will update a Stripe customer balance transaction and return its
    corresponding object

    Possible parameters are:

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_balance_transactions/update>

CUSTOMER CASH BALANCE TRANSACTION
    You can fund_cash_balance, list or retrieve customer cash balance
    transaction

  fund_cash_balance
        my $obj = $stripe->customer_cash_balance_transactions( fund_cash_balance => {
            amount   => "5000",
            currency => "eur", } ) || die( $stripe->error );

    Provided with a customer cash balance transaction, or a hash reference,
    this will issue a fund_cash_balance api call.

    Returns a specific cash balance transaction, which funded the customer’s
    cash balance <https://stripe.com/docs/payments/customer-balance>.

    Possible parameters are:

    "amount"
        Required. Amount to be used for this test cash balance transaction.
        A positive integer representing how much to fund in the smallest
        currency unit <https://stripe.com/docs/currencies#zero-decimal>
        (e.g., 100 cents to fund $1.00 or 100 to fund ¥100, a zero-decimal
        currency).

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "reference"
        A description of the test funding. This simulates free-text
        references supplied by customers when making bank transfers to their
        cash balance. You can use this to test how Stripe's reconciliation
        algorithm
        <https://stripe.com/docs/payments/customer-balance/reconciliation>
        applies to different user inputs.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/cash_balance_transactions/fund_cash_balance
    >

  list
        my $obj = $stripe->customer_cash_balance_transactions( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a customer cash balance transaction object, this issue an
    api call to get the list of all customer cash balance transaction.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/cash_balance_transactions/list>

  retrieve
        my $obj = $stripe->customer_cash_balance_transactions( retrieve => $args ) || die( $stripe->error );

    Provided with a customer cash balance transaction object or a hash
    reference, this will retrieve a Stripe customer cash balance transaction
    and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/cash_balance_transactions/retrieve>

CUSTOMERS
    You can create, retrieve, update, delete, delete_discount or list
    customers.

  create
    Provided with a Net::API::Stripe::Customer object or a hash reference,
    this will create a Stripe customer and return its
    Net::API::Stripe::Customer object.

    Possible parameters are:

    *account_balance* Integer
    *address* A Net::API::Stripe::Address object or a hash reference with
    the following properties: line1 city country line2 postal_code state
    *balance* Integer
    *coupon* A string that matches an existing Stripe coupon.
    *default_source*
    *description* Test
    *email* String
    *id* A customer id, or Stripe will create one
    *invoice_prefix* String
    *invoice_settings* A hash reference with the following properties:
    custom_fields default_payment_method footer
    *metadata* An arbitrary hash reference
    *name* String. Customer name
    *payment_method* A Stripe payment method id
    *phone* String.
    *preferred_locales* An array of strings representing 2-letters ISO 639
    language codes such as "[qw( en fr ja )]"
    *shipping* A Net::API::Stripe::Address object or a hash reference with
    the following properties: line1 city country line2 postal_code state
    *source*
    *tax_exempt* String that can be either *none*, *exempt* or *reverse*
    *tax_id_data* An array reference of string representing tax id or
    Net::API::Stripe::Customer::TaxId objects
    *tax_info* A Net::API::Stripe::Customer::TaxInfo object or a hash
    reference with the following properties: tax_id type

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customers/create>

  delete
    Provided with a Net::API::Stripe::Customer object or a hash reference,
    this will remove a Stripe customer and return its
    Net::API::Stripe::Customer object with the property *deleted* set to
    true.

    Possible parameters are:

    *id* A Stripe customer id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customers/delete>

  delete_discount
    Provided with a Net::API::Stripe::Customer object or a hash reference,
    this will remove a Stripe customer discount and return the discount
    removed as a Net::API::Stripe::Billing::Discount object.

    Possible parameters are:

    *id* A Stripe customer id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/discounts/delete>

  list
    Provided with some optional parameters, this will get a list of Stripe
    customers and return a Net::API::Stripe::List object.

    Possible parameters are:

    *created* Date or unix timestamp
    *email* String. E-mail address
    *ending_before* A Stripe credit note id
    *limit* Integer
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customers/list>

  retrieve
    Provided with a Net::API::Stripe::Customer object or a hash reference,
    this will retrieve a Stripe customer and return its
    Net::API::Stripe::Customer object.

    Possible parameters are:

    *id* A Stripe customer id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customers/retrieve>

  update
    Provided with a Net::API::Stripe::Customer object or a hash reference,
    this will update a Stripe customer and return its
    Net::API::Stripe::Customer object.

    Possible parameters are:

    *account_balance* Integer
    *address* A Net::API::Stripe::Address object or a hash reference with
    the following properties: line1 city country line2 postal_code state
    *balance* Integer
    *coupon* A string that matches an existing Stripe coupon.
    *default_source*
    *description* Test
    *email* String
    *id* A customer id, or Stripe will create one
    *invoice_prefix* String
    *invoice_settings* A hash reference with the following properties:
    custom_fields default_payment_method footer
    *metadata* An arbitrary hash reference
    *name* String. Customer name
    *next_invoice_sequence* String
    *payment_method* A Stripe payment method id
    *phone* String.
    *preferred_locales* An array of strings representing 2-letters ISO 639
    language codes such as "[qw( en fr ja )]"
    *shipping* A Net::API::Stripe::Address object or a hash reference with
    the following properties: line1 city country line2 postal_code state
    *source*
    *tax_exempt* String that can be either *none*, *exempt* or *reverse*
    *tax_id_data* An array reference of string representing tax id or
    Net::API::Stripe::Customer::TaxId objects
    *tax_info* A Net::API::Stripe::Customer::TaxInfo object or a hash
    reference with the following properties: tax_id type

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customers/create>

DISCOUNT
    You can delete, delete_customer or delete_subscription discount

  delete
        my $obj = $stripe->discounts( delete => $args ) || die( $stripe->error );

    Provided with a discount, or a hash reference, this will issue an api
    call to Stripe to remove the discount. It returns the discount object
    that was deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/discounts/subscription_delete>

DISPUTE
    You can close, list, retrieve or update dispute

  close
        my $obj = $stripe->disputes( close => $args ) || die( $stripe->error );

    Provided with a dispute, or a hash reference, this will issue a close
    api call.

    Returns the dispute object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/disputes/close>

  list
        my $obj = $stripe->disputes( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a dispute object, this issue an api call to get the list
    of all dispute.

    Possible parameters are:

    "charge"
        Only return disputes associated to the charge specified by this
        charge ID.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "payment_intent"
        Only return disputes associated to the PaymentIntent specified by
        this PaymentIntent ID.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/disputes/list>

  retrieve
        my $obj = $stripe->disputes( retrieve => $args ) || die( $stripe->error );

    Provided with a dispute object or a hash reference, this will retrieve a
    Stripe dispute and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/disputes/retrieve>

  update
        my $obj = $stripe->disputes( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a dispute object or a hash reference, this will update a
    Stripe dispute and return its corresponding object

    Possible parameters are:

    "evidence"
        Evidence to upload, to respond to a dispute. Updating any field in
        the hash will submit all fields in the hash for review. The combined
        character count of all fields is limited to 150,000.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "submit"
        Whether to immediately submit evidence to the bank. If "false",
        evidence is staged on the dispute. Staged evidence is visible in the
        API and Dashboard, and can be submitted to the bank by making
        another request with this attribute set to "true" (the default).

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/disputes/update>

DISPUTES
    You can close, retrieve, update or list disputes

  close
    Provided with a Net::API::Stripe::Dispute object or an hash reference
    and this will close a Stripe dispute and return
    Net::API::Stripe::Dispute object.

    Possible parameters are:

    *id* A Stripe dispute id.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/disputes/close>

  list
    Provided with some optional parameters and this will issue a Stripe api
    call to get the list of disputes and return a Net::API::Stripe::List
    object.

    Possible parameters are:

    *created* Date or unix timestamp
    *charge* A Stripe charge id
    *ending_before* A Stripe credit note id
    *limit* Integer
    *payment_intent* A Stripe payment intent id
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/disputes/list>

  retrieve
    Provided with a Net::API::Stripe::Dispute or a hash reference of
    parameters, this will retrieve the Stripe dispute and return a
    Net::API::Stripe::Dispute object.

    Possible parameters are:

    *id* A Stripe dispute id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/disputes/retrieve>

  update
    Provided with a Net::API::Stripe::Dispute or a hash reference of
    parameters, this will update a Stripe dispute and return a
    Net::API::Stripe::Dispute object.

    Possible parameters are:

    *id* A Stripe dispute id. This is required.
    *evidence* This is a hash reference with following possible properties:

        *access_activity_log*
        *billing_address*
        *cancellation_policy*
        *cancellation_policy_disclosure*
        *cancellation_rebuttal*
        *customer_communication*
        *customer_email_address*
        *customer_name*
        *customer_purchase_ip*
        *customer_signature*
        *duplicate_charge_documentation*
        *duplicate_charge_explanation*
        *duplicate_charge_id*
        *product_description*
        *receipt*
        *refund_policy*
        *refund_policy_disclosure*
        *refund_refusal_explanation*
        *service_date*
        *service_documentation*
        *shipping_address*
        *shipping_carrier*
        *shipping_date*
        *shipping_documentation*
        *shipping_tracking_number*
        *uncategorized_file*
        *uncategorized_text*

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/disputes/update>

ERROR HANDLING
    Net::API::Stripe never dies, or at least not voluntarily. Instead, when
    an error occurs and is reported, it returns undef and the error can be
    retrieved with the "error" method, such as:

        my $prod = $stripe->products( retrieve => $prod_id ) || die( $stripe->error, "\n" );

    The error method returns the Module::Generic::Exception set. Please
    refer to the manual page of "error" in Module::Generic for more
    information, but essentially, the following methods are available with
    the error objects:

  as_string
    This is triggered when the error object is stringified

  code
    The error code returned by Stripe

  file
    The file containing the error

  line
    The line number of the error

  message
    The actual error message

  package
    The package name where the error occurred.

  rethrow
    Used to re-trigger the error

  subroutine
    The subroutine name where the error originates

  trace
    The full stack trace object. This is a Devel::StackTrace

  type
    The error type, if any

EVENT
    You can list or retrieve event

  list
        my $obj = $stripe->events( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a event object, this issue an api call to get the list of
    all event.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "delivery_success"
        Filter events by whether all webhooks were successfully delivered.
        If false, events which are still pending or have failed all delivery
        attempts to a webhook endpoint will be returned.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "type"
        A string containing a specific event name, or group of events using
        * as a wildcard. The list will be filtered to include only events
        with a matching event property.

    "types"
        An array of up to 20 strings containing specific event names. The
        list will be filtered to include only events with a matching event
        property. You may pass either "type" or "types", but not both.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/events/list>

  retrieve
        my $obj = $stripe->events( retrieve => $args ) || die( $stripe->error );

    Provided with a event object or a hash reference, this will retrieve a
    Stripe event and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/events/retrieve>

FEE REFUND
    You can create, list, retrieve or update fee refund

  create
        my $obj = $stripe->fee_refunds( create => $args ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::ApplicationFee::Refund object
    or a hash reference, this will create a Stripe fee refund and return an
    Net::API::Stripe::Connect::ApplicationFee::Refund object.

    Possible parameters are:

    "amount"
        A positive integer, in *JPY*, representing how much of this fee to
        refund. Can refund only up to the remaining unrefunded amount of the
        fee.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/fee_refunds/create>

  list
        my $obj = $stripe->fee_refunds( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a fee refund object, this issue an api call to get the
    list of all fee refund.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/fee_refunds/list>

  retrieve
        my $obj = $stripe->fee_refunds( retrieve => $args ) || die( $stripe->error );

    Provided with a fee refund object or a hash reference, this will
    retrieve a Stripe fee refund and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/fee_refunds/retrieve>

  update
        my $obj = $stripe->fee_refunds( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a fee refund object or a hash reference, this will update
    a Stripe fee refund and return its corresponding object

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/fee_refunds/update>

FILE
    You can create, list or retrieve file

  create
        my $obj = $stripe->files( create => {
            file    => "{a file descriptor}",
            purpose => "dispute_evidence", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::File object or a hash reference, this
    will create a Stripe file and return an Net::API::Stripe::File object.

    Possible parameters are:

    "file"
        Required. A file to upload. The file should follow the
        specifications of RFC 2388 (which defines file transfers for the
        "multipart/form-data" protocol).

    "file_link_data"
        Optional parameters to automatically create a file link
        <https://stripe.com/docs/api/file_links> for the newly created file.

    "purpose"
        Required. The purpose
        <https://stripe.com/docs/file-upload#uploading-a-file> of the
        uploaded file.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/files/create>

  list
        my $obj = $stripe->files( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a file object, this issue an api call to get the list of
    all file.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "purpose"
        The file purpose to filter queries by. If none is provided, files
        will not be filtered by purpose.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/files/list>

  retrieve
        my $obj = $stripe->files( retrieve => $args ) || die( $stripe->error );

    Provided with a file object or a hash reference, this will retrieve a
    Stripe file and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/files/retrieve>

FILE LINK
    You can create, list, retrieve or update file link

  create
        my $obj = $stripe->file_links( create => {
            file => "file_1JXy922eZvKYlo2CV17dW6tI", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::File::Link object or a hash reference,
    this will create a Stripe file link and return an
    Net::API::Stripe::File::Link object.

    Possible parameters are:

    "expires_at"
        A future timestamp after which the link will no longer be usable.

    "file"
        Required. The ID of the file. The file's "purpose" must be one of
        the following: "business_icon", "business_logo",
        "customer_signature", "dispute_evidence", "finance_report_run",
        "identity_document_downloadable", "pci_document", "selfie",
        "sigma_scheduled_query", "tax_document_user_upload", or
        "terminal_reader_splashscreen".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/file_links/create>

  list
        my $obj = $stripe->file_links( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a file link object, this issue an api call to get the list
    of all file link.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "expired"
        Filter links by their expiration status. By default, all links are
        returned.

    "file"
        Only return links for the given file.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/file_links/list>

  retrieve
        my $obj = $stripe->file_links( retrieve => $args ) || die( $stripe->error );

    Provided with a file link object or a hash reference, this will retrieve
    a Stripe file link and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/file_links/retrieve>

  update
        my $obj = $stripe->file_links( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a file link object or a hash reference, this will update a
    Stripe file link and return its corresponding object

    Possible parameters are:

    "expires_at"
        A future timestamp after which the link will no longer be usable, or
        "now" to expire the link immediately.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/file_links/update>

FILES
    You can create, retrieve or list files

  create
    Provided with a Net::API::Stripe::File or a hash reference of
    parameters, this will create a Stripe file and return a
    Net::API::Stripe::File object.

    Possible parameters are:

    *file* File path.
        It will check if the file exists, is not zero length, is readable
        and make the file path absolute if it is relative (using
        "Cwd::abs_path")

    *file_link_data* A hash reference with the following properties: create
    expires_at metadata
    *purpose* String that can be either *business_icon* *business_logo*
    *customer_signature* *dispute_evidence* *identity_document*
    *pci_document* or *tax_document_user_upload*

    For more information, see Stripe documentation here:
    <httpshttps://stripe.com/docs/api/files/create>

  list
    Provided with some optional parameters and this will issue a Stripe api
    call to get the list of files and return a Net::API::Stripe::List
    object.

    Possible parameters are:

    *created* Date or unix timestamp
    *ending_before* A Stripe credit note id
    *limit* Integer
    *purpose* String.
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/files/list>

  retrieve
    Provided with a Net::API::Stripe::File or a hash reference of
    parameters, this will retrieve the Stripe file and return a
    Net::API::Stripe::File object.

    Possible parameters are:

    *id* A Stripe file id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/files/retrieve>

FINANCIAL CONNECTIONS ACCOUNT
    You can disconnect, list, refresh or retrieve financial connections
    account

  disconnect
        my $obj = $stripe->financial_connections_accounts( disconnect => $args ) || die( $stripe->error );

    Provided with a financial connections account, or a hash reference, this
    will issue a disconnect api call.

    Returns an "Account" object if a valid identifier was provided, and
    returns an error <https://stripe.com/docs/api/errors> otherwise.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/financial_connections/accounts/disconnect>

  list
        my $obj = $stripe->financial_connections_accounts( list => {
            account_holder =>
            {
                customer => "cus_AJ78ZaALpqgiuZ",
            } } ) || die( $stripe->error );

    Provided with a financial connections account object, this issue an api
    call to get the list of all financial connections account.

    Possible parameters are:

    "account_holder"
        If present, only return accounts that belong to the specified
        account holder. "account_holder[customer]" and
        "account_holder[account]" are mutually exclusive.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "session"
        If present, only return accounts that were collected as part of the
        given session.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/financial_connections/accounts/list>

  refresh
        my $obj = $stripe->financial_connections_accounts( refresh => $args ) || die( $stripe->error );

    Provided with a financial connections account, or a hash reference, this
    will issue a refresh api call.

    Returns an "Account" object if a valid identifier was provided and if
    you have sufficient permissions to that account. Returns an error
    <https://stripe.com/docs/api/errors> otherwise.

    Possible parameters are:

    "features"
        Required. The list of account features that you would like to
        refresh. Either: "balance" or "ownership".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/financial_connections/accounts/refresh>

  retrieve
        my $obj = $stripe->financial_connections_accounts( retrieve => $args ) || die( $stripe->error );

    Provided with a financial connections account object or a hash
    reference, this will retrieve a Stripe financial connections account and
    return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/financial_connections/accounts/retrieve>

FINANCIAL CONNECTIONS ACCOUNT OWNER
    You can list financial connections account owner

  list
        my $obj = $stripe->financial_connections_account_owners( list => {
            limit     => "3",
            ownership => "fcaowns_1Le9F42eZvKYlo2CfwkUGxZt", } ) || die( $stripe->error );

    Provided with a financial connections account owner object, this issue
    an api call to get the list of all financial connections account owner.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "ownership"
        Required. The ID of the ownership object to fetch owners from.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/financial_connections/ownership/list>

FINANCIAL CONNECTIONS SESSION
    You can create or retrieve financial connections session

  create
        my $obj = $stripe->financial_connections_sessions( create => {
            account_holder =>
            {
                customer => "cus_AJ78ZaALpqgiuZ",
                type     => "customer",
            }
            filters        =>
            {
                countries => [qw( US )],
            }
            permissions    => [qw( payment_method balances )], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Financial::Connections::Session object
    or a hash reference, this will create a Stripe financial connections
    session and return an Net::API::Stripe::Financial::Connections::Session
    object.

    Possible parameters are:

    "account_holder"
        Required. The account holder to link accounts for.

    "filters"
        Filters to restrict the kinds of accounts to collect.

    "permissions"
        Required. List of data features that you would like to request
        access to.

        Possible values are "balances", "transactions", "ownership", and
        "payment_method".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/financial_connections/sessions/create>

  retrieve
        my $obj = $stripe->financial_connections_sessions( retrieve => $args ) || die( $stripe->error );

    Provided with a financial connections session object or a hash
    reference, this will retrieve a Stripe financial connections session and
    return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/financial_connections/sessions/retrieve>

FUNDING INSTRUCTIONS
    You can create, fund or list funding instructions

  create
        my $obj = $stripe->funding_instructionss( create => {
            bank_transfer =>
            {
                type => "eu_bank_transfer",
            }
            currency      => "eur",
            funding_type  => "bank_transfer", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Issuing::FundingInstructions object or
    a hash reference, this will create a Stripe funding instructions and
    return an Net::API::Stripe::Issuing::FundingInstructions object.

    Possible parameters are:

    "bank_transfer"
        Required. Additional parameters for "bank_transfer" funding types

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "funding_type"
        Required. The "funding_type" to get the instructions for.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/funding_instructions/create>

  fund
        my $obj = $stripe->funding_instructionss( fund => {
            amount   => "4200",
            currency => "eur", } ) || die( $stripe->error );

    Provided with a funding instructions, or a hash reference, this will
    issue a fund api call.

    Returns testmode funding instructions for an Issuing balance

    Possible parameters are:

    "amount"
        Required. The amount to top up

    "currency"
        Required. The currency to top up

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/funding_instructions/fund>

  list
        my $obj = $stripe->funding_instructionss( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a funding instructions object, this issue an api call to
    get the list of all funding instructions.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/funding_instructions/list>

IDENTITY VERIFICATION REPORT
    You can list or retrieve identity verification report

  list
        my $obj = $stripe->identity_verification_reports( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a identity verification report object, this issue an api
    call to get the list of all identity verification report.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "type"
        Only return VerificationReports of this type

    "verification_session"
        Only return VerificationReports created by this VerificationSession
        ID. It is allowed to provide a VerificationIntent ID.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_reports/list>

  retrieve
        my $obj = $stripe->identity_verification_reports( retrieve => $args ) || die( $stripe->error );

    Provided with a identity verification report object or a hash reference,
    this will retrieve a Stripe identity verification report and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_reports/retrieve>

IDENTITY VERIFICATION SESSION
    You can cancel, create, list, redact, retrieve or update identity
    verification session

  cancel
        my $obj = $stripe->identity_verification_sessions( cancel => $args ) || die( $stripe->error );

    Provided with a identity verification session, or a hash reference, this
    will issue a cancel api call.

    Returns the canceled VerificationSession object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_sessions/cancel>

  create
        my $obj = $stripe->identity_verification_sessions( create => {
            type => "document", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Identity::VerificationSession object
    or a hash reference, this will create a Stripe identity verification
    session and return an Net::API::Stripe::Identity::VerificationSession
    object.

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "options"
        A set of options for the session’s verification checks.

    "return_url"
        The URL that the user will be redirected to upon completing the
        verification flow.

    "type"
        Required. The type of verification check
        <https://stripe.com/docs/identity/verification-checks> to be
        performed.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_sessions/create>

  list
        my $obj = $stripe->identity_verification_sessions( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a identity verification session object, this issue an api
    call to get the list of all identity verification session.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return VerificationSessions with this status. Learn more about
        the lifecycle of sessions
        <https://stripe.com/docs/identity/how-sessions-work>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_sessions/list>

  redact
        my $obj = $stripe->identity_verification_sessions( redact => $args ) || die( $stripe->error );

    Provided with a identity verification session, or a hash reference, this
    will issue a redact api call.

    Returns the redacted VerificationSession object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_sessions/redact>

  retrieve
        my $obj = $stripe->identity_verification_sessions( retrieve => $args ) || die( $stripe->error );

    Provided with a identity verification session object or a hash
    reference, this will retrieve a Stripe identity verification session and
    return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_sessions/retrieve>

  update
        my $obj = $stripe->identity_verification_sessions( update => {
            type => "id_number", } ) || die( $stripe->error );

    Provided with a identity verification session object or a hash
    reference, this will update a Stripe identity verification session and
    return its corresponding object

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "options"
        A set of options for the session’s verification checks.

    "type"
        The type of verification check
        <https://stripe.com/docs/identity/verification-checks> to be
        performed.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/identity/verification_sessions/update>

INVOICE
    You can create, delete, finalise, finalize, invoice_write_off, lines,
    lines_upcoming, list, pay, retrieve, search, send, uncollectible,
    upcoming, update or void invoice

  create
        my $obj = $stripe->invoices( create => {
            customer => "cus_AJ78ZaALpqgiuZ", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Invoice object or a hash
    reference, this will create a Stripe invoice and return an
    Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    "account_tax_ids"
        The account tax IDs associated with the invoice. Only editable when
        the invoice is a draft.

    "application_fee_amount"
        A fee in JPY that will be applied to the invoice and transferred to
        the application owner's Stripe account. The request must be made
        with an OAuth key or the Stripe-Account header in order to take an
        application fee. For more information, see the application fees
        documentation
        <https://stripe.com/docs/billing/invoices/connect#collecting-fees>.

    "auto_advance"
        Controls whether Stripe will perform automatic collection
        <https://stripe.com/docs/billing/invoices/workflow/#auto_advance> of
        the invoice. When "false", the invoice's state will not
        automatically advance without an explicit action.

    "automatic_tax"
        Settings for automatic tax lookup for this invoice.

    "collection_method"
        Either "charge_automatically", or "send_invoice". When charging
        automatically, Stripe will attempt to pay this invoice using the
        default source attached to the customer. When sending an invoice,
        Stripe will email this invoice to the customer with payment
        instructions. Defaults to "charge_automatically".

    "currency"
        The currency to create this invoice in. Defaults to that of
        "customer" if not specified.

    "custom_fields"
        A list of up to 4 custom fields to be displayed on the invoice.

    "customer"
        The ID of the customer who will be billed.

    "days_until_due"
        The number of days from when the invoice is created until it is due.
        Valid only for invoices where "collection_method=send_invoice".

    "default_payment_method"
        ID of the default payment method for the invoice. It must belong to
        the customer associated with the invoice. If not set, defaults to
        the subscription's default payment method, if any, or to the default
        payment method in the customer's invoice settings.

    "default_source"
        ID of the default payment source for the invoice. It must belong to
        the customer associated with the invoice and be in a chargeable
        state. If not set, defaults to the subscription's default source, if
        any, or to the customer's default source.

    "default_tax_rates"
        The tax rates that will apply to any line item that does not have
        "tax_rates" set.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users. Referenced as 'memo' in the Dashboard.

    "discounts"
        The coupons to redeem into discounts for the invoice. If not
        specified, inherits the discount from the invoice's customer. Pass
        an empty string to avoid inheriting any discounts.

    "due_date"
        The date on which payment for this invoice is due. Valid only for
        invoices where "collection_method=send_invoice".

    "footer"
        Footer to be displayed on the invoice.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "on_behalf_of"
        The account (if any) for which the funds of the invoice payment are
        intended. If set, the invoice will be presented with the branding
        and support information of the specified account. See the Invoices
        with Connect <https://stripe.com/docs/billing/invoices/connect>
        documentation for details.

    "payment_settings"
        Configuration settings for the PaymentIntent that is generated when
        the invoice is finalized.

    "pending_invoice_items_behavior"
        How to handle pending invoice items on invoice creation. One of
        "include" or "exclude". "include" will include any pending invoice
        items, and will create an empty draft invoice if no pending invoice
        items exist. "exclude" will always create an empty invoice draft
        regardless if there are pending invoice items or not. Defaults to
        "exclude" if the parameter is omitted.

    "rendering_options"
        Options for invoice PDF rendering.

    "statement_descriptor"
        Extra information about a charge for the customer's credit card
        statement. It must contain at least one letter. If not specified and
        this invoice is part of a subscription, the default
        "statement_descriptor" will be set to the first subscription item's
        product's "statement_descriptor".

    "subscription"
        The ID of the subscription to invoice, if any. If set, the created
        invoice will only include pending invoice items for that
        subscription and pending invoice items not associated with any
        subscription if "pending_invoice_items_behavior" is "include". The
        subscription's billing cycle and regular subscription events won't
        be affected.

    "transfer_data"
        If specified, the funds from the invoice will be transferred to the
        destination and the ID of the resulting transfer will be found on
        the invoice's charge.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/create>

  delete
        my $obj = $stripe->invoices( delete => $args ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue an api
    call to Stripe to remove the invoice. It returns the invoice object that
    was deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/delete>

  finalize
        my $obj = $stripe->invoices( finalize => $args ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue a finalize
    api call.

    Returns an invoice object with "status=open".

    Possible parameters are:

    "auto_advance"
        Controls whether Stripe will perform automatic collection
        <https://stripe.com/docs/invoicing/automatic-charging> of the
        invoice. When "false", the invoice's state will not automatically
        advance without an explicit action.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/finalize>

  list
        my $obj = $stripe->invoices( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a invoice object, this issue an api call to get the list
    of all invoice.

    Possible parameters are:

    "collection_method"
        The collection method of the invoice to retrieve. Either
        "charge_automatically" or "send_invoice".

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "customer"
        Only return invoices for the customer specified by this customer ID.

    "due_date"
        A filter on the list based on the object "due_date" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        The status of the invoice, one of "draft", "open", "paid",
        "uncollectible", or "void". Learn more
        <https://stripe.com/docs/billing/invoices/workflow#workflow-overview
        >

    "subscription"
        Only return invoices for the subscription specified by this
        subscription ID.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/list>

  pay
        my $obj = $stripe->invoices( pay => $args ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue a pay api
    call.

    Returns the invoice object.

    Possible parameters are:

    "forgive"
        In cases where the source used to pay the invoice has insufficient
        funds, passing "forgive=true" controls whether a charge should be
        attempted for the full amount available on the source, up to the
        amount to fully pay the invoice. This effectively forgives the
        difference between the amount available on the source and the amount
        due.

        Passing "forgive=false" will fail the charge if the source hasn't
        been pre-funded with the right amount. An example for this case is
        with ACH Credit Transfers and wires: if the amount wired is less
        than the amount due by a small amount, you might want to forgive the
        difference. Defaults to "false".

    "mandate"
        ID of the mandate to be used for this invoice. It must correspond to
        the payment method used to pay the invoice, including the
        payment*method param or the invoice's default*payment*method or
        default*source, if set.

    "off_session"
        Indicates if a customer is on or off-session while an invoice
        payment is attempted. Defaults to "true" (off-session).

    "paid_out_of_band"
        Boolean representing whether an invoice is paid outside of Stripe.
        This will result in no charge being made. Defaults to "false".

    "payment_method"
        A PaymentMethod to be charged. The PaymentMethod must be the ID of a
        PaymentMethod belonging to the customer associated with the invoice
        being paid.

    "source"
        A payment source to be charged. The source must be the ID of a
        source belonging to the customer associated with the invoice being
        paid.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/pay>

  retrieve
        my $obj = $stripe->invoices( retrieve => $args ) || die( $stripe->error );

    Provided with a invoice object or a hash reference, this will retrieve a
    Stripe invoice and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/retrieve>

  search
        my $obj = $stripe->invoices( search => {
            query => "total>999 AND metadata['order_id']:'6735'", } ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue a search
    api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" invoices. If no objects match the query, the resulting array
    will be empty. See the related guide on expanding properties in lists
    <https://stripe.com/docs/expand#lists>.

    Possible parameters are:

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "page"
        A cursor for pagination across multiple pages of results. Don't
        include this parameter on the first call. Use the next_page value
        returned in a previous response to request subsequent results.

    "query"
        Required. The search query string. See search query language
        <https://stripe.com/docs/search#search-query-language> and the list
        of supported query fields for invoices
        <https://stripe.com/docs/search#query-fields-for-invoices>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/search>

  send
        my $obj = $stripe->invoices( send => $args ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue a send api
    call.

    Returns the invoice object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/send>

  uncollectible
        my $obj = $stripe->invoices( uncollectible => $args ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue a
    uncollectible api call.

    Returns the invoice object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/mark_uncollectible>

  upcoming
        my $obj = $stripe->invoices( upcoming => $args ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue a upcoming
    api call.

    Returns an invoice if valid customer information is provided. Returns an
    error <https://stripe.com/docs/api/errors> otherwise.

    Possible parameters are:

    "automatic_tax"
        Settings for automatic tax lookup for this invoice preview.

    "coupon"
        The code of the coupon to apply. If "subscription" or
        "subscription_items" is provided, the invoice returned will preview
        updating or creating a subscription with that coupon. Otherwise, it
        will preview applying that coupon to the customer for the next
        upcoming invoice from among the customer's subscriptions. The
        invoice can be previewed without a coupon by passing this value as
        an empty string.

    "currency"
        The currency to preview this invoice in. Defaults to that of
        "customer" if not specified.

    "customer"
        Required if subscription unset The identifier of the customer whose
        upcoming invoice you'd like to retrieve.

    "customer_details"
        Required if subscription and customer unset Details about the
        customer you want to invoice or overrides for an existing customer.

    "discounts"
        The coupons to redeem into discounts for the invoice preview. If not
        specified, inherits the discount from the customer or subscription.
        This only works for coupons directly applied to the invoice. To
        apply a coupon to a subscription, you must use the "coupon"
        parameter instead. Pass an empty string to avoid inheriting any
        discounts. To preview the upcoming invoice for a subscription that
        hasn't been created, use "coupon" instead.

    "invoice_items"
        List of invoice items to add or update in the upcoming invoice
        preview.

    "schedule"
        The identifier of the unstarted schedule whose upcoming invoice
        you'd like to retrieve. Cannot be used with subscription or
        subscription fields.

    "subscription"
        The identifier of the subscription for which you'd like to retrieve
        the upcoming invoice. If not provided, but a "subscription_items" is
        provided, you will preview creating a subscription with those items.
        If neither "subscription" nor "subscription_items" is provided, you
        will retrieve the next upcoming invoice from among the customer's
        subscriptions.

    "subscription_billing_cycle_anchor"
        For new subscriptions, a future timestamp to anchor the
        subscription's billing cycle
        <https://stripe.com/docs/subscriptions/billing-cycle>. This is used
        to determine the date of the first full invoice, and, for plans with
        "month" or "year" intervals, the day of the month for subsequent
        invoices. For existing subscriptions, the value can only be set to
        "now" or "unchanged".

    "subscription_cancel_at"
        Timestamp indicating when the subscription should be scheduled to
        cancel. Will prorate if within the current period and prorations
        have been enabled using "proration_behavior".

    "subscription_cancel_at_period_end"
        Boolean indicating whether this subscription should cancel at the
        end of the current period.

    "subscription_cancel_now"
        This simulates the subscription being canceled or expired
        immediately.

    "subscription_default_tax_rates"
        If provided, the invoice returned will preview updating or creating
        a subscription with these default tax rates. The default tax rates
        will apply to any line item that does not have "tax_rates" set.

    "subscription_items"
        A list of up to 20 subscription items, each with an attached price.

    "subscription_proration_behavior"
        Determines how to handle prorations
        <https://stripe.com/docs/subscriptions/billing-cycle#prorations>
        when the billing cycle changes (e.g., when switching plans,
        resetting "billing_cycle_anchor=now", or starting a trial), or if an
        item's "quantity" changes.

    "subscription_proration_date"
        If previewing an update to a subscription, and doing proration,
        "subscription_proration_date" forces the proration to be calculated
        as though the update was done at the specified time. The time given
        must be within the current subscription period, and cannot be before
        the subscription was on its current plan. If set, "subscription",
        and one of "subscription_items", or "subscription_trial_end" are
        required. Also, "subscription_proration_behavior" cannot be set to
        'none'.

    "subscription_start_date"
        Date a subscription is intended to start (can be future or past)

    "subscription_trial_end"
        If provided, the invoice returned will preview updating or creating
        a subscription with that trial end. If set, one of
        "subscription_items" or "subscription" is required.

    "subscription_trial_from_plan"
        Indicates if a plan's "trial_period_days" should be applied to the
        subscription. Setting "subscription_trial_end" per subscription is
        preferred, and this defaults to "false". Setting this flag to "true"
        together with "subscription_trial_end" is not allowed. See Using
        trial periods on subscriptions
        <https://stripe.com/docs/billing/subscriptions/trials> to learn
        more.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/upcoming>

  update
        my $obj = $stripe->invoices( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a invoice object or a hash reference, this will update a
    Stripe invoice and return its corresponding object

    Possible parameters are:

    "account_tax_ids"
        The account tax IDs associated with the invoice. Only editable when
        the invoice is a draft.

    "application_fee_amount"
        A fee in JPY that will be applied to the invoice and transferred to
        the application owner's Stripe account. The request must be made
        with an OAuth key or the Stripe-Account header in order to take an
        application fee. For more information, see the application fees
        documentation
        <https://stripe.com/docs/billing/invoices/connect#collecting-fees>.

    "auto_advance"
        Controls whether Stripe will perform automatic collection
        <https://stripe.com/docs/billing/invoices/workflow/#auto_advance> of
        the invoice.

    "automatic_tax"
        Settings for automatic tax lookup for this invoice.

    "collection_method"
        Either "charge_automatically" or "send_invoice". This field can be
        updated only on "draft" invoices.

    "custom_fields"
        A list of up to 4 custom fields to be displayed on the invoice. If a
        value for "custom_fields" is specified, the list specified will
        replace the existing custom field list on this invoice. Pass an
        empty string to remove previously-defined fields.

    "days_until_due"
        The number of days from which the invoice is created until it is
        due. Only valid for invoices where "collection_method=send_invoice".
        This field can only be updated on "draft" invoices.

    "default_payment_method"
        ID of the default payment method for the invoice. It must belong to
        the customer associated with the invoice. If not set, defaults to
        the subscription's default payment method, if any, or to the default
        payment method in the customer's invoice settings.

    "default_source"
        ID of the default payment source for the invoice. It must belong to
        the customer associated with the invoice and be in a chargeable
        state. If not set, defaults to the subscription's default source, if
        any, or to the customer's default source.

    "default_tax_rates"
        The tax rates that will apply to any line item that does not have
        "tax_rates" set. Pass an empty string to remove previously-defined
        tax rates.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users. Referenced as 'memo' in the Dashboard.

    "discounts"
        The discounts that will apply to the invoice. Pass an empty string
        to remove previously-defined discounts.

    "due_date"
        The date on which payment for this invoice is due. Only valid for
        invoices where "collection_method=send_invoice". This field can only
        be updated on "draft" invoices.

    "footer"
        Footer to be displayed on the invoice.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "on_behalf_of"
        The account (if any) for which the funds of the invoice payment are
        intended. If set, the invoice will be presented with the branding
        and support information of the specified account. See the Invoices
        with Connect <https://stripe.com/docs/billing/invoices/connect>
        documentation for details.

    "payment_settings"
        Configuration settings for the PaymentIntent that is generated when
        the invoice is finalized.

    "rendering_options"
        Options for invoice PDF rendering.

    "statement_descriptor"
        Extra information about a charge for the customer's credit card
        statement. It must contain at least one letter. If not specified and
        this invoice is part of a subscription, the default
        "statement_descriptor" will be set to the first subscription item's
        product's "statement_descriptor".

    "transfer_data"
        If specified, the funds from the invoice will be transferred to the
        destination and the ID of the resulting transfer will be found on
        the invoice's charge. This will be unset if you POST an empty value.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/update>

  void
        my $obj = $stripe->invoices( void => $args ) || die( $stripe->error );

    Provided with a invoice, or a hash reference, this will issue a void api
    call.

    Returns the voided invoice object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/void>

INVOICEITEM
    You can create, delete, list, retrieve or update invoiceitem

  create
        my $obj = $stripe->invoiceitems( create => {
            customer => "cus_AJ78ZaALpqgiuZ",
            price    => "price_1Le4Uy2eZvKYlo2Cby2Mg3bR", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Invoice::Item object or a
    hash reference, this will create a Stripe invoiceitem and return an
    Net::API::Stripe::Billing::Invoice::Item object.

    Possible parameters are:

    "amount"
        The integer amount in JPY of the charge to be applied to the
        upcoming invoice. Passing in a negative "amount" will reduce the
        "amount_due" on the invoice.

    "currency"
        Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "customer"
        Required. The ID of the customer who will be billed when this
        invoice item is billed.

    "description"
        An arbitrary string which you can attach to the invoice item. The
        description is displayed in the invoice for easy tracking.

    "discountable"
        Controls whether discounts apply to this invoice item. Defaults to
        false for prorations or negative invoice items, and true for all
        other invoice items.

    "discounts"
        The coupons to redeem into discounts for the invoice item or invoice
        line item.

    "invoice"
        The ID of an existing invoice to add this invoice item to. When left
        blank, the invoice item will be added to the next upcoming scheduled
        invoice. This is useful when adding invoice items in response to an
        invoice.created webhook. You can only add invoice items to draft
        invoices and there is a maximum of 250 items per invoice.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "period"
        The period associated with this invoice item. When set to different
        values, the period will be rendered on the invoice.

    "price"
        The ID of the price object.

    "price_data"
        Data used to generate a new Price
        <https://stripe.com/docs/api/prices> object inline.

    "quantity"
        Non-negative integer. The quantity of units for the invoice item.

    "subscription"
        The ID of a subscription to add this invoice item to. When left
        blank, the invoice item will be be added to the next upcoming
        scheduled invoice. When set, scheduled invoices for subscriptions
        other than the specified subscription will ignore the invoice item.
        Use this when you want to express that an invoice item has been
        accrued within the context of a particular subscription.

    "tax_rates"
        The tax rates which apply to the invoice item. When set, the
        "default_tax_rates" on the invoice do not apply to this invoice
        item.

    "unit_amount"
        The integer unit amount in JPY of the charge to be applied to the
        upcoming invoice. This "unit_amount" will be multiplied by the
        quantity to get the full amount. Passing in a negative "unit_amount"
        will reduce the "amount_due" on the invoice.

    "unit_amount_decimal"
        Same as "unit_amount", but accepts a decimal value in JPY with at
        most 12 decimal places. Only one of "unit_amount" and
        "unit_amount_decimal" can be set.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoiceitems/create>

  delete
        my $obj = $stripe->invoiceitems( delete => $args ) || die( $stripe->error );

    Provided with a invoiceitem, or a hash reference, this will issue an api
    call to Stripe to remove the invoiceitem. It returns the invoiceitem
    object that was deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoiceitems/delete>

  list
        my $obj = $stripe->invoiceitems( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a invoiceitem object, this issue an api call to get the
    list of all invoiceitem.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "customer"
        The identifier of the customer whose invoice items to return. If
        none is provided, all invoice items will be returned.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "invoice"
        Only return invoice items belonging to this invoice. If none is
        provided, all invoice items will be returned. If specifying an
        invoice, no customer identifier is needed.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "pending"
        Set to "true" to only show pending invoice items, which are not yet
        attached to any invoices. Set to "false" to only show invoice items
        already attached to invoices. If unspecified, no filter is applied.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoiceitems/list>

  retrieve
        my $obj = $stripe->invoiceitems( retrieve => $args ) || die( $stripe->error );

    Provided with a invoiceitem object or a hash reference, this will
    retrieve a Stripe invoiceitem and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoiceitems/retrieve>

  update
        my $obj = $stripe->invoiceitems( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a invoiceitem object or a hash reference, this will update
    a Stripe invoiceitem and return its corresponding object

    Possible parameters are:

    "amount"
        The integer amount in JPY of the charge to be applied to the
        upcoming invoice. If you want to apply a credit to the customer's
        account, pass a negative amount.

    "description"
        An arbitrary string which you can attach to the invoice item. The
        description is displayed in the invoice for easy tracking.

    "discountable"
        Controls whether discounts apply to this invoice item. Defaults to
        false for prorations or negative invoice items, and true for all
        other invoice items. Cannot be set to true for prorations.

    "discounts"
        The coupons & existing discounts which apply to the invoice item or
        invoice line item. Item discounts are applied before invoice
        discounts. Pass an empty string to remove previously-defined
        discounts.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "period"
        The period associated with this invoice item. When set to different
        values, the period will be rendered on the invoice.

    "price"
        The ID of the price object.

    "price_data"
        Data used to generate a new Price
        <https://stripe.com/docs/api/prices> object inline.

    "quantity"
        Non-negative integer. The quantity of units for the invoice item.

    "tax_rates"
        The tax rates which apply to the invoice item. When set, the
        "default_tax_rates" on the invoice do not apply to this invoice
        item. Pass an empty string to remove previously-defined tax rates.

    "unit_amount"
        The integer unit amount in JPY of the charge to be applied to the
        upcoming invoice. This unit*amount will be multiplied by the
        quantity to get the full amount. If you want to apply a credit to
        the customer's account, pass a negative unit*amount.

    "unit_amount_decimal"
        Same as "unit_amount", but accepts a decimal value in JPY with at
        most 12 decimal places. Only one of "unit_amount" and
        "unit_amount_decimal" can be set.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoiceitems/update>

INVOICES
    You can create delete finalise lines lines_upcoming invoice_write_off
    upcoming pay retrieve send update void list invoices

  create
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference, this will create a Stripe invoice and return a
    Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *customer* A Stripe customer id. This is required.
    *application_fee_amount* Integer
    *auto_advance* Boolean
    *collection_method* String. Either "charge_automatically", or
    "send_invoice"
    *custom_fields* An array of hash reference with key and value
    properties.
    *days_until_due* Integer
    *default_payment_method* A Stripe payment method id
    *default_source* String
    *default_tax_rates* Array reference of decimal amount
    *description* Text
    *due_date* Date or unix timestamp
    *footer* Text
    *metadata* An arbitrary hash reference
    *statement_descriptor* Text
    *subscription* A Stripe subscription id
    *tax_percent* Decimal value

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/create>

  delete
    This is to remove draft invoice. When provided with a
    Net::API::Stripe::Billing::Invoice object or an hash reference of
    parameters, this will remove the draft invoice and return a
    Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id* A Stripe draft invoice id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/delete>

  finalise
    When provided with a Net::API::Stripe::Billing::Invoice object or an
    hash reference of parameters, this will set the draft invoice as
    finalised and return a Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id* A Stripe draft invoice id
    *auto_advance* Boolean

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/finalize>

  invoice_write_off
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will write off an invoice and return its
    Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id* A Stripe invoice id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/mark_uncollectible>

  lines
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will retrieve the list of invoice lines
    and return a <Net:API::Stripe::List>

    Possible parameters are:

    *id* A Stripe invoice id. This is required.
    *ending_before* A Stripe credit note id
    *limit* Integer
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/invoice_lines>

  lines_upcoming
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will retrieve the list of upcoming invoice
    lines and return a <Net:API::Stripe::List>

    Possible parameters are:

    *customer* A Stripe customer id. This is required
    *coupon* String
    *ending_before* A Stripe invoice id
    *invoice_items* An array of hash with the following properties:

        *amount*
        *currency*
        *description*
        *discountable*
        *invoiceitem*
        *metadata*
        *period.end*
        *period.start*
        *quantity*
        *tax_rates*
        *unit_amount*
        *unit_amount_decimal*

    *limit* Integer
    *schedule* A Stripe schedule id
    *starting_after* A Stripe invoice id
    *subscription* A Stripe subscription id
    *subscription_billing_cycle_anchor* A timestamp
    *subscription_cancel_at* A timestamp
    *subscription_cancel_at_period_end* Boolean
    *subscription_cancel_now* Boolean
    *subscription_default_tax_rates* Array of tax rates
    *subscription_items* List of subscription items, each with an attached
    plan.
    *subscription_prorate* String. If previewing an update to a
    subscription, this decides whether the preview will show the result of
    applying prorations or not. If set, one of subscription_items or
    subscription, and one of subscription_items or subscription_trial_end
    are required.
    *subscription_proration_behavior* String. Determines how to handle
    prorations when the billing cycle changes.
    *subscription_proration_date* Date/timestamp. If previewing an update to
    a subscription, and doing proration, subscription_proration_date forces
    the proration to be calculated as though the update was done at the
    specified time.
    *subscription_start_date* Date/timestamp.
    *subscription_tax_percent* Decimal
    *subscription_trial_end* Boolean. If set, one of subscription_items or
    subscription is required.
    *subscription_trial_from_plan* Boolean. Indicates if a planâs
    trial_period_days should be applied to the subscription. Setting this
    flag to true together with subscription_trial_end is not allowed.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/upcoming_invoice_lines>

  list
    Provided with an hash reference of parameters, this returns a
    Net::API::Stripe::List object.

    Possible parameters are:

    *collection_method* String that can be charge_automatically or
    send_invoice.
    *created* Date or unix timestamp
    *customer* A Stripe customer id.
    *due_date* Date / timestamp
    *ending_before* A Stripe credit note id
    *limit* Integer
    *starting_after* A Stripe credit note id
    *status* String. Status of the invoice, which can be one of draft, open,
    paid, uncollectible and void
    *subscription* A Stripe subscription id.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/list>

  pay
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will mark an invoice as paid and return
    its Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id* A Stripe invoice id. This is required.
    *forgive* Boolean
    *off_session* Boolean
    *paid_out_of_band* Boolean to signify this was paid outside of Stripe
    *payment_method* A Stripe payment method id
    *source* A Stripe source id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/pay>

  retrieve
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will retrieve an invoice and return its
    Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id* A Stripe invoice id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/retrieve>

  send
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will send an invoice to a recipient to get
    payment and return its Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id* A Stripe invoice id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/send>

  upcoming
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will retrieve an upcoming invoice and
    return its Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *customer* A Stripe customer id. This is required
    *coupon* String
    *invoice_items* An array of hash with the following properties:

        *amount*
        *currency*
        *description*
        *discountable*
        *invoiceitem*
        *metadata*
        *period.end*
        *period.start*
        *quantity*
        *tax_rates*
        *unit_amount*
        *unit_amount_decimal*

    *schedule* A Stripe schedule id
    *subscription* A Stripe subscription id
    *subscription_billing_cycle_anchor* A timestamp
    *subscription_cancel_at* A timestamp
    *subscription_cancel_at_period_end* Boolean
    *subscription_cancel_now* Boolean
    *subscription_default_tax_rates* Array of tax rates
    *subscription_items* List of subscription items, each with an attached
    plan.
    *subscription_prorate* String. If previewing an update to a
    subscription, this decides whether the preview will show the result of
    applying prorations or not. If set, one of subscription_items or
    subscription, and one of subscription_items or subscription_trial_end
    are required.
    *subscription_proration_behavior* String. Determines how to handle
    prorations when the billing cycle changes.
    *subscription_proration_date* Date/timestamp. If previewing an update to
    a subscription, and doing proration, subscription_proration_date forces
    the proration to be calculated as though the update was done at the
    specified time.
    *subscription_start_date* Date/timestamp.
    *subscription_tax_percent* Decimal
    *subscription_trial_end* Boolean. If set, one of subscription_items or
    subscription is required.
    *subscription_trial_from_plan* Boolean. Indicates if a planâs
    trial_period_days should be applied to the subscription. Setting this
    flag to true together with subscription_trial_end is not allowed.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/upcoming>

  update
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will update an invoice and return its
    Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id*
    *application_fee_amount* Integer
    *auto_advance* Boolean
    *collection_method* String. Either "charge_automatically", or
    "send_invoice"
    *custom_fields* An array of hash reference with key and value
    properties.
    *days_until_due* Integer
    *default_payment_method* A Stripe payment method id
    *default_source* String
    *default_tax_rates* Array reference of decimal amount
    *description* Text
    *due_date* Date or unix timestamp
    *footer* Text
    *metadata* An arbitrary hash reference
    *statement_descriptor* Text
    *tax_percent* Decimal value

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/update>

  void
    Provided with a Net::API::Stripe::Billing::Invoice object or an hash
    reference of parameters, this will void (i.e. cancel) an invoice and
    return its Net::API::Stripe::Billing::Invoice object.

    Possible parameters are:

    *id* A Stripe invoice id. This is required.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/invoices/void>

ISSUING AUTHORIZATION
    You can approve, decline, list, retrieve or update issuing authorization

  approve
        my $obj = $stripe->issuing_authorizations( approve => $args ) || die( $stripe->error );

    Provided with a issuing authorization, or a hash reference, this will
    issue a approve api call.

    Returns an approved Issuing "Authorization" object.

    Possible parameters are:

    "amount"
        If the authorization's "pending_request.is_amount_controllable"
        property is "true", you may provide this value to control how much
        to hold for the authorization. Must be positive (use "decline"
        <https://stripe.com/docs/api/issuing/authorizations/decline> to
        decline an authorization request).

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/authorizations/approve>

  decline
        my $obj = $stripe->issuing_authorizations( decline => $args ) || die( $stripe->error );

    Provided with a issuing authorization, or a hash reference, this will
    issue a decline api call.

    Returns a declined Issuing "Authorization" object.

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/authorizations/decline>

  list
        my $obj = $stripe->issuing_authorizations( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a issuing authorization object, this issue an api call to
    get the list of all issuing authorization.

    Possible parameters are:

    "card"
        Only return authorizations that belong to the given card.

    "cardholder"
        Only return authorizations that belong to the given cardholder.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return authorizations with the given status. One of "pending",
        "closed", or "reversed".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/authorizations/list>

  retrieve
        my $obj = $stripe->issuing_authorizations( retrieve => $args ) || die( $stripe->error );

    Provided with a issuing authorization object or a hash reference, this
    will retrieve a Stripe issuing authorization and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/authorizations/retrieve>

  update
        my $obj = $stripe->issuing_authorizations( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a issuing authorization object or a hash reference, this
    will update a Stripe issuing authorization and return its corresponding
    object

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/authorizations/update>

ISSUING CARD
    You can create, deliver, fail, list, retrieve, return, ship or update
    issuing card

  create
        my $obj = $stripe->issuing_cards( create => {
            cardholder => "ich_1KwsZz2eZvKYlo2Cz5eys5Kb",
            currency   => "usd",
            type       => "virtual", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Issuing::Card object or a hash
    reference, this will create a Stripe issuing card and return an
    Net::API::Stripe::Issuing::Card object.

    Possible parameters are:

    "cardholder"
        required The Cardholder
        <https://stripe.com/docs/api#issuing_cardholder_object> object with
        which the card will be associated.

    "currency"
        Required. The currency for the card.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "replacement_for"
        The card this is meant to be a replacement for (if any).

    "replacement_reason"
        If "replacement_for" is specified, this should indicate why that
        card is being replaced.

    "shipping"
        The address where the card will be shipped.

    "spending_controls"
        Rules that control spending for this card. Refer to our
        documentation
        <https://stripe.com/docs/issuing/controls/spending-controls> for
        more details.

    "status"
        Whether authorizations can be approved on this card. Defaults to
        "inactive".

    "type"
        Required. The type of card to issue. Possible values are "physical"
        or "virtual".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/create>

  deliver
        my $obj = $stripe->issuing_cards( deliver => $args ) || die( $stripe->error );

    Provided with a issuing card, or a hash reference, this will issue a
    deliver api call.

    Returns an updated Issuing "Card" object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/test_mode_deliver>

  fail
        my $obj = $stripe->issuing_cards( fail => $args ) || die( $stripe->error );

    Provided with a issuing card, or a hash reference, this will issue a
    fail api call.

    Returns an updated Issuing "Card" object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/test_mode_fail>

  list
        my $obj = $stripe->issuing_cards( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a issuing card object, this issue an api call to get the
    list of all issuing card.

    Possible parameters are:

    "cardholder"
        Only return cards belonging to the Cardholder with the provided ID.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "exp_month"
        Only return cards that have the given expiration month.

    "exp_year"
        Only return cards that have the given expiration year.

    "last4"
        Only return cards that have the given last four digits.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return cards that have the given status. One of "active",
        "inactive", or "canceled".

    "type"
        Only return cards that have the given type. One of "virtual" or
        "physical".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/list>

  retrieve
        my $obj = $stripe->issuing_cards( retrieve => $args ) || die( $stripe->error );

    Provided with a issuing card object or a hash reference, this will
    retrieve a Stripe issuing card and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/retrieve>

  return
        my $obj = $stripe->issuing_cards( return => $args ) || die( $stripe->error );

    Provided with a issuing card, or a hash reference, this will issue a
    return api call.

    Returns an updated Issuing "Card" object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/test_mode_return>

  ship
        my $obj = $stripe->issuing_cards( ship => $args ) || die( $stripe->error );

    Provided with a issuing card, or a hash reference, this will issue a
    ship api call.

    Returns an updated Issuing "Card" object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/test_mode_ship>

  update
        my $obj = $stripe->issuing_cards( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a issuing card object or a hash reference, this will
    update a Stripe issuing card and return its corresponding object

    Possible parameters are:

    "cancellation_reason"
        Reason why the "status" of this card is "canceled".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "pin"
        The desired new PIN for this card.

    "spending_controls"
        Rules that control spending for this card. Refer to our
        documentation
        <https://stripe.com/docs/issuing/controls/spending-controls> for
        more details.

    "status"
        Dictates whether authorizations can be approved on this card. If
        this card is being canceled because it was lost or stolen, this
        information should be provided as "cancellation_reason".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cards/update>

ISSUING CARDHOLDER
    You can create, list, retrieve or update issuing cardholder

  create
        my $obj = $stripe->issuing_cardholders( create => {
            billing      =>
            {
                address =>
                {
                    city        => "San Francisco",
                    country     => "US",
                    line1       => "1234 Main Street",
                    postal_code => "94111",
                    state       => "CA",
                }
            }
            email        => q{jenny.rosen@example.com},
            name         => "Jenny Rosen",
            phone_number => "+18888675309",
            type         => "individual", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Issuing::Card::Holder object or a hash
    reference, this will create a Stripe issuing cardholder and return an
    Net::API::Stripe::Issuing::Card::Holder object.

    Possible parameters are:

    "billing"
        Required. The cardholder's billing address.

    "company"
        Additional information about a "company" cardholder.

    "email"
        The cardholder's email address.

    "individual"
        Additional information about an "individual" cardholder.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        Required. The cardholder's name. This will be printed on cards
        issued to them. The maximum length of this field is 24 characters.
        This field cannot contain any special characters or numbers.

    "phone_number"
        The cardholder's phone number. This will be transformed to E.164
        <https://en.wikipedia.org/wiki/E.164> if it is not provided in that
        format already. This is required for all cardholders who will be
        creating EU cards. See the 3D Secure documentation
        <https://stripe.com/docs/issuing/3d-secure#when-is-3d-secure-applied
        > for more details.

    "spending_controls"
        Rules that control spending across this cardholder's cards. Refer to
        our documentation
        <https://stripe.com/docs/issuing/controls/spending-controls> for
        more details.

    "status"
        Specifies whether to permit authorizations on this cardholder's
        cards. Defaults to "active".

    "type"
        Required. One of "individual" or "company".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cardholders/create>

  list
        my $obj = $stripe->issuing_cardholders( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a issuing cardholder object, this issue an api call to get
    the list of all issuing cardholder.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "email"
        Only return cardholders that have the given email address.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "phone_number"
        Only return cardholders that have the given phone number.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return cardholders that have the given status. One of "active",
        "inactive", or "blocked".

    "type"
        Only return cardholders that have the given type. One of
        "individual" or "company".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cardholders/list>

  retrieve
        my $obj = $stripe->issuing_cardholders( retrieve => $args ) || die( $stripe->error );

    Provided with a issuing cardholder object or a hash reference, this will
    retrieve a Stripe issuing cardholder and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cardholders/retrieve>

  update
        my $obj = $stripe->issuing_cardholders( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a issuing cardholder object or a hash reference, this will
    update a Stripe issuing cardholder and return its corresponding object

    Possible parameters are:

    "billing"
        The cardholder's billing address.

    "company"
        Additional information about a "company" cardholder.

    "email"
        The cardholder's email address.

    "individual"
        Additional information about an "individual" cardholder.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "phone_number"
        The cardholder's phone number. This is required for all cardholders
        who will be creating EU cards. See the 3D Secure documentation
        <https://stripe.com/docs/issuing/3d-secure> for more details.

    "spending_controls"
        Rules that control spending across this cardholder's cards. Refer to
        our documentation
        <https://stripe.com/docs/issuing/controls/spending-controls> for
        more details.

    "status"
        Specifies whether to permit authorizations on this cardholder's
        cards.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/cardholders/update>

ISSUING DISPUTE
    You can create, list, retrieve, submit or update issuing dispute

  create
        my $obj = $stripe->issuing_disputes( create => {
            evidence    =>
            {
                fraudulent =>
                {
                    explanation => "Purchase was unrecognized.",
                }
                reason     => "fraudulent",
            }
            transaction => "ipi_1JIdAl2eZvKYlo2Cfr8US8uB", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Issuing::Dispute object or a hash
    reference, this will create a Stripe issuing dispute and return an
    Net::API::Stripe::Issuing::Dispute object.

    Possible parameters are:

    "evidence"
        Evidence provided for the dispute.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "transaction"
        The ID of the issuing transaction to create a dispute for. For
        transaction on Treasury FinancialAccounts, use
        "treasury.received_debit".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/disputes/create>

  list
        my $obj = $stripe->issuing_disputes( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a issuing dispute object, this issue an api call to get
    the list of all issuing dispute.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Select Issuing disputes with the given status.

    "transaction"
        Select the Issuing dispute for the given transaction.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/disputes/list>

  retrieve
        my $obj = $stripe->issuing_disputes( retrieve => $args ) || die( $stripe->error );

    Provided with a issuing dispute object or a hash reference, this will
    retrieve a Stripe issuing dispute and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/disputes/retrieve>

  submit
        my $obj = $stripe->issuing_disputes( submit => $args ) || die( $stripe->error );

    Provided with a issuing dispute, or a hash reference, this will issue a
    submit api call.

    Returns an Issuing "Dispute" object in "submitted" status if submission
    succeeds.

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/dispute/submit>

  update
        my $obj = $stripe->issuing_disputes( update => {
            evidence =>
            {
                not_received =>
                {
                    expected_at         => "1590000000",
                    explanation         => "",
                    product_description => "Baseball cap",
                    product_type        => "merchandise",
                }
                reason       => "not_received",
            } } ) || die( $stripe->error );

    Provided with a issuing dispute object or a hash reference, this will
    update a Stripe issuing dispute and return its corresponding object

    Possible parameters are:

    "evidence"
        Evidence provided for the dispute.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/disputes/update>

ISSUING TRANSACTION
    You can list, retrieve or update issuing transaction

  list
        my $obj = $stripe->issuing_transactions( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a issuing transaction object, this issue an api call to
    get the list of all issuing transaction.

    Possible parameters are:

    "card"
        Only return transactions that belong to the given card.

    "cardholder"
        Only return transactions that belong to the given cardholder.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "type"
        Only return transactions that have the given type. One of "capture"
        or "refund".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/transactions/list>

  retrieve
        my $obj = $stripe->issuing_transactions( retrieve => $args ) || die( $stripe->error );

    Provided with a issuing transaction object or a hash reference, this
    will retrieve a Stripe issuing transaction and return its corresponding
    object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/transactions/retrieve>

  update
        my $obj = $stripe->issuing_transactions( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a issuing transaction object or a hash reference, this
    will update a Stripe issuing transaction and return its corresponding
    object

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/issuing/transactions/update>

LINE ITEM
    You can lines line item

  lines
        my $obj = $stripe->line_items( lines => $args ) || die( $stripe->error );

    Provided with a line item, or a hash reference, this will issue a lines
    api call.

    Returns a list of line_item objects
    <https://stripe.com/docs/api/invoices/line_item>.

    Possible parameters are:

    "automatic_tax"
        Settings for automatic tax lookup for this invoice preview.

    "coupon"
        The code of the coupon to apply. If "subscription" or
        "subscription_items" is provided, the invoice returned will preview
        updating or creating a subscription with that coupon. Otherwise, it
        will preview applying that coupon to the customer for the next
        upcoming invoice from among the customer's subscriptions. The
        invoice can be previewed without a coupon by passing this value as
        an empty string.

    "currency"
        The currency to preview this invoice in. Defaults to that of
        "customer" if not specified.

    "customer"
        Required if subscription unset The identifier of the customer whose
        upcoming invoice you'd like to retrieve.

    "customer_details"
        Required if subscription and customer unset Details about the
        customer you want to invoice or overrides for an existing customer.

    "discounts"
        The coupons to redeem into discounts for the invoice preview. If not
        specified, inherits the discount from the customer or subscription.
        This only works for coupons directly applied to the invoice. To
        apply a coupon to a subscription, you must use the "coupon"
        parameter instead. Pass an empty string to avoid inheriting any
        discounts. To preview the upcoming invoice for a subscription that
        hasn't been created, use "coupon" instead.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "invoice_items"
        List of invoice items to add or update in the upcoming invoice
        preview.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "schedule"
        The identifier of the unstarted schedule whose upcoming invoice
        you'd like to retrieve. Cannot be used with subscription or
        subscription fields.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "subscription"
        The identifier of the subscription for which you'd like to retrieve
        the upcoming invoice. If not provided, but a "subscription_items" is
        provided, you will preview creating a subscription with those items.
        If neither "subscription" nor "subscription_items" is provided, you
        will retrieve the next upcoming invoice from among the customer's
        subscriptions.

    "subscription_billing_cycle_anchor"
        For new subscriptions, a future timestamp to anchor the
        subscription's billing cycle
        <https://stripe.com/docs/subscriptions/billing-cycle>. This is used
        to determine the date of the first full invoice, and, for plans with
        "month" or "year" intervals, the day of the month for subsequent
        invoices. For existing subscriptions, the value can only be set to
        "now" or "unchanged".

    "subscription_cancel_at"
        Timestamp indicating when the subscription should be scheduled to
        cancel. Will prorate if within the current period and prorations
        have been enabled using "proration_behavior".

    "subscription_cancel_at_period_end"
        Boolean indicating whether this subscription should cancel at the
        end of the current period.

    "subscription_cancel_now"
        This simulates the subscription being canceled or expired
        immediately.

    "subscription_default_tax_rates"
        If provided, the invoice returned will preview updating or creating
        a subscription with these default tax rates. The default tax rates
        will apply to any line item that does not have "tax_rates" set.

    "subscription_items"
        A list of up to 20 subscription items, each with an attached price.

    "subscription_proration_behavior"
        Determines how to handle prorations
        <https://stripe.com/docs/subscriptions/billing-cycle#prorations>
        when the billing cycle changes (e.g., when switching plans,
        resetting "billing_cycle_anchor=now", or starting a trial), or if an
        item's "quantity" changes.

    "subscription_proration_date"
        If previewing an update to a subscription, and doing proration,
        "subscription_proration_date" forces the proration to be calculated
        as though the update was done at the specified time. The time given
        must be within the current subscription period, and cannot be before
        the subscription was on its current plan. If set, "subscription",
        and one of "subscription_items", or "subscription_trial_end" are
        required. Also, "subscription_proration_behavior" cannot be set to
        'none'.

    "subscription_start_date"
        Date a subscription is intended to start (can be future or past)

    "subscription_trial_end"
        If provided, the invoice returned will preview updating or creating
        a subscription with that trial end. If set, one of
        "subscription_items" or "subscription" is required.

    "subscription_trial_from_plan"
        Indicates if a plan's "trial_period_days" should be applied to the
        subscription. Setting "subscription_trial_end" per subscription is
        preferred, and this defaults to "false". Setting this flag to "true"
        together with "subscription_trial_end" is not allowed. See Using
        trial periods on subscriptions
        <https://stripe.com/docs/billing/subscriptions/trials> to learn
        more.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/invoices/upcoming_invoice_lines>

LOGIN LINK
    You can create login link

  create
        my $obj = $stripe->login_links( create => $args ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::Account::LoginLink object or
    a hash reference, this will create a Stripe login link and return an
    Net::API::Stripe::Connect::Account::LoginLink object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/account/create_login_link>

MANDATE
    You can retrieve mandate

  retrieve
        my $obj = $stripe->mandates( retrieve => $args ) || die( $stripe->error );

    Provided with a mandate object or a hash reference, this will retrieve a
    Stripe mandate and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/mandates/retrieve>

PAYMENT INTENT
    You can apply_customer_balance, cancel, capture, confirm, create,
    increment, increment_authorization, list, reconcile, retrieve, search,
    update, verify or verify_microdeposits payment intent

  apply_customer_balance
        my $obj = $stripe->payment_intents( apply_customer_balance => $args ) || die( $stripe->error );

    Provided with a payment intent, or a hash reference, this will issue a
    apply_customer_balance api call.

    Returns a PaymentIntent object.

    Possible parameters are:

    "amount"
        Amount intended to be applied to this PaymentIntent from the
        customer’s cash balance.

        A positive integer representing how much to charge in the smallest
        currency unit <https://stripe.com/docs/currencies#zero-decimal>
        (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a
        zero-decimal currency).

        The maximum amount is the amount of the PaymentIntent.

        When omitted, the amount defaults to the remaining amount requested
        on the PaymentIntent.

    "currency"
        Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/apply_customer_balance>

  cancel
        my $obj = $stripe->payment_intents( cancel => $args ) || die( $stripe->error );

    Provided with a payment intent, or a hash reference, this will issue a
    cancel api call.

    Returns a PaymentIntent object if the cancellation succeeded. Returns an
    error if the PaymentIntent has already been canceled or is not in a
    cancelable state.

    Possible parameters are:

    "cancellation_reason"
        Reason for canceling this PaymentIntent. Possible values are
        "duplicate", "fraudulent", "requested_by_customer", or "abandoned"

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/cancel>

  capture
        my $obj = $stripe->payment_intents( capture => $args ) || die( $stripe->error );

    Provided with a payment intent, or a hash reference, this will issue a
    capture api call.

    Returns a PaymentIntent object with "status="succeeded"" if the
    PaymentIntent was capturable. Returns an error if the PaymentIntent was
    not capturable or an invalid amount to capture was provided.

    Possible parameters are:

    "amount_to_capture"
        The amount to capture from the PaymentIntent, which must be less
        than or equal to the original amount. Any additional amount will be
        automatically refunded. Defaults to the full "amount_capturable" if
        not provided.

    "application_fee_amount"
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application owner's
        Stripe account. The amount of the application fee collected will be
        capped at the total payment amount. For more information, see the
        PaymentIntents use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    "statement_descriptor"
        For non-card charges, you can use this value as the complete
        description that appears on your customers’ statements. Must contain
        at least one letter, maximum 22 characters.

    "statement_descriptor_suffix"
        Provides information about a card payment that customers see on
        their statements. Concatenated with the prefix (shortened
        descriptor) or statement descriptor that’s set on the account to
        form the complete statement descriptor. Maximum 22 characters for
        the concatenated descriptor.

    "transfer_data"
        The parameters used to automatically create a Transfer when the
        payment is captured. For more information, see the PaymentIntents
        use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/capture>

  confirm
        my $obj = $stripe->payment_intents( confirm => {
            payment_method => "pm_card_visa", } ) || die( $stripe->error );

    Provided with a payment intent, or a hash reference, this will issue a
    confirm api call.

    Returns the resulting PaymentIntent after all possible transitions are
    applied.

    Possible parameters are:

    "capture_method"
        Controls when the funds will be captured from the customer's
        account.

    "error_on_requires_action"
        Set to "true" to fail the payment attempt if the PaymentIntent
        transitions into "requires_action". This parameter is intended for
        simpler integrations that do not handle customer actions, like
        saving cards without authentication
        <https://stripe.com/docs/payments/save-card-without-authentication>.

    "mandate"
        ID of the mandate to be used for this payment.

    "mandate_data"
        This hash contains details about the Mandate to create

    "off_session"
        Set to "true" to indicate that the customer is not in your checkout
        flow during this payment attempt, and therefore is unable to
        authenticate. This parameter is intended for scenarios where you
        collect card details and charge them later
        <https://stripe.com/docs/payments/cards/charging-saved-cards>.

    "payment_method"
        ID of the payment method (a PaymentMethod, Card, or compatible
        Source
        <https://stripe.com/docs/payments/payment-methods/transitioning#comp
        atibility> object) to attach to this PaymentIntent.

    "payment_method_data"
        If provided, this hash will be used to create a PaymentMethod. The
        new PaymentMethod will appear in the payment_method
        <https://stripe.com/docs/api/payment_intents/object#payment_intent_o
        bject-payment_method> property on the PaymentIntent.

    "payment_method_options"
        Payment-method-specific configuration for this PaymentIntent.

    "payment_method_types"
        The list of payment method types (e.g. card) that this PaymentIntent
        is allowed to use. Use automatic*payment*methods to manage payment
        methods from the Stripe Dashboard
        <https://dashboard.stripe.com/settings/payment_methods>.

    "radar_options"
        Options to configure Radar. See Radar Session
        <https://stripe.com/docs/radar/radar-session> for more information.

    "receipt_email"
        Email address that the receipt for the resulting payment will be
        sent to. If "receipt_email" is specified for a payment in live mode,
        a receipt will be sent regardless of your email settings
        <https://dashboard.stripe.com/account/emails>.

    "return_url"
        The URL to redirect your customer back to after they authenticate or
        cancel their payment on the payment method's app or site. If you'd
        prefer to redirect to a mobile application, you can alternatively
        supply an application URI scheme. This parameter is only used for
        cards and other redirect-based payment methods.

    "setup_future_usage"
        Indicates that you intend to make future payments with this
        PaymentIntent's payment method.

        Providing this parameter will attach the payment method
        <https://stripe.com/docs/payments/save-during-payment> to the
        PaymentIntent's Customer, if present, after the PaymentIntent is
        confirmed and any required actions from the user are complete. If no
        Customer was provided, the payment method can still be attached
        <https://stripe.com/docs/api/payment_methods/attach> to a Customer
        after the transaction completes.

        When processing card payments, Stripe also uses "setup_future_usage"
        to dynamically optimize your payment flow and comply with regional
        legislation and network rules, such as SCA
        <https://stripe.com/docs/strong-customer-authentication>.

        If "setup_future_usage" is already set and you are performing a
        request using a publishable key, you may only update the value from
        "on_session" to "off_session".

    "shipping"
        Shipping information for this PaymentIntent.

    "use_stripe_sdk"
        Set to "true" only when using manual confirmation and the iOS or
        Android SDKs to handle additional authentication steps.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/confirm>

  create
        my $obj = $stripe->payment_intents( create => {
            amount               => "2000",
            currency             => "usd",
            payment_method_types => [qw( card )], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Payment::Intent object or a hash
    reference, this will create a Stripe payment intent and return an
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    "amount"
        Required. Amount intended to be collected by this PaymentIntent. A
        positive integer representing how much to charge in the smallest
        currency unit <https://stripe.com/docs/currencies#zero-decimal>
        (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a
        zero-decimal currency). The minimum amount is $0.50 US or equivalent
        in charge currency
        <https://stripe.com/docs/currencies#minimum-and-maximum-charge-amoun
        ts>. The amount value supports up to eight digits (e.g., a value of
        99999999 for a USD charge of $999,999.99).

    "application_fee_amount"
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application owner's
        Stripe account. The amount of the application fee collected will be
        capped at the total payment amount. For more information, see the
        PaymentIntents use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    "automatic_payment_methods"
        When enabled, this PaymentIntent will accept payment methods that
        you have enabled in the Dashboard and are compatible with this
        PaymentIntent's other parameters.

    "capture_method"
        Controls when the funds will be captured from the customer's
        account.

    "confirm"
        Set to "true" to attempt to confirm
        <https://stripe.com/docs/api/payment_intents/confirm> this
        PaymentIntent immediately. This parameter defaults to "false". When
        creating and confirming a PaymentIntent at the same time, parameters
        available in the confirm
        <https://stripe.com/docs/api/payment_intents/confirm> API may also
        be provided.

    "confirmation_method"
    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "customer"
        ID of the Customer this PaymentIntent belongs to, if one exists.

        Payment methods attached to other Customers cannot be used with this
        PaymentIntent.

        If present in combination with setup*future*usage
        <https://stripe.com/docs/api/payment_intents/object#payment_intent_o
        bject-setup_future_usage>, this PaymentIntent's payment method will
        be attached to the Customer after the PaymentIntent has been
        confirmed and any required actions from the user are complete.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "error_on_requires_action"
        Set to "true" to fail the payment attempt if the PaymentIntent
        transitions into "requires_action". This parameter is intended for
        simpler integrations that do not handle customer actions, like
        saving cards without authentication
        <https://stripe.com/docs/payments/save-card-without-authentication>.
        This parameter can only be used with "confirm=true"
        <https://stripe.com/docs/api/payment_intents/create#create_payment_i
        ntent-confirm>.

    "mandate"
        ID of the mandate to be used for this payment. This parameter can
        only be used with "confirm=true"
        <https://stripe.com/docs/api/payment_intents/create#create_payment_i
        ntent-confirm>.

    "mandate_data"
        This hash contains details about the Mandate to create. This
        parameter can only be used with "confirm=true"
        <https://stripe.com/docs/api/payment_intents/create#create_payment_i
        ntent-confirm>.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "off_session"
        Set to "true" to indicate that the customer is not in your checkout
        flow during this payment attempt, and therefore is unable to
        authenticate. This parameter is intended for scenarios where you
        collect card details and charge them later
        <https://stripe.com/docs/payments/cards/charging-saved-cards>. This
        parameter can only be used with "confirm=true"
        <https://stripe.com/docs/api/payment_intents/create#create_payment_i
        ntent-confirm>.

    "on_behalf_of"
        The Stripe account ID for which these funds are intended. For
        details, see the PaymentIntents use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    "payment_method"
        ID of the payment method (a PaymentMethod, Card, or compatible
        Source
        <https://stripe.com/docs/payments/payment-methods/transitioning#comp
        atibility> object) to attach to this PaymentIntent.

        If this parameter is omitted with "confirm=true",
        "customer.default_source" will be attached as this PaymentIntent's
        payment instrument to improve the migration experience for users of
        the Charges API. We recommend that you explicitly provide the
        "payment_method" going forward.

    "payment_method_data"
        If provided, this hash will be used to create a PaymentMethod. The
        new PaymentMethod will appear in the payment_method
        <https://stripe.com/docs/api/payment_intents/object#payment_intent_o
        bject-payment_method> property on the PaymentIntent.

    "payment_method_options"
        Payment-method-specific configuration for this PaymentIntent.

    "payment_method_types"
        The list of payment method types
        <https://stripe.com/docs/payments/payment-methods/overview> that
        this PaymentIntent is allowed to use. If this is not provided,
        defaults to "[“card”]". Valid payment method types include:
        "acss_debit", "affirm", "afterpay_clearpay", "alipay",
        "au_becs_debit", "bacs_debit", "bancontact", "blik", "boleto",
        "card", "card_present", "eps", "fpx", "giropay", "grabpay", "ideal",
        "klarna", "konbini", "link", "oxxo", "p24", "paynow", "promptpay",
        "sepa_debit", "sofort", "us_bank_account", and "wechat_pay".

    "radar_options"
        Options to configure Radar. See Radar Session
        <https://stripe.com/docs/radar/radar-session> for more information.

    "receipt_email"
        Email address that the receipt for the resulting payment will be
        sent to. If "receipt_email" is specified for a payment in live mode,
        a receipt will be sent regardless of your email settings
        <https://dashboard.stripe.com/account/emails>.

    "return_url"
        The URL to redirect your customer back to after they authenticate or
        cancel their payment on the payment method's app or site. If you'd
        prefer to redirect to a mobile application, you can alternatively
        supply an application URI scheme. This parameter can only be used
        with "confirm=true"
        <https://stripe.com/docs/api/payment_intents/create#create_payment_i
        ntent-confirm>.

    "setup_future_usage"
        Indicates that you intend to make future payments with this
        PaymentIntent's payment method.

        Providing this parameter will attach the payment method
        <https://stripe.com/docs/payments/save-during-payment> to the
        PaymentIntent's Customer, if present, after the PaymentIntent is
        confirmed and any required actions from the user are complete. If no
        Customer was provided, the payment method can still be attached
        <https://stripe.com/docs/api/payment_methods/attach> to a Customer
        after the transaction completes.

        When processing card payments, Stripe also uses "setup_future_usage"
        to dynamically optimize your payment flow and comply with regional
        legislation and network rules, such as SCA
        <https://stripe.com/docs/strong-customer-authentication>.

    "shipping"
        Shipping information for this PaymentIntent.

    "statement_descriptor"
        For non-card charges, you can use this value as the complete
        description that appears on your customers’ statements. Must contain
        at least one letter, maximum 22 characters.

    "statement_descriptor_suffix"
        Provides information about a card payment that customers see on
        their statements. Concatenated with the prefix (shortened
        descriptor) or statement descriptor that’s set on the account to
        form the complete statement descriptor. Maximum 22 characters for
        the concatenated descriptor.

    "transfer_data"
        The parameters used to automatically create a Transfer when the
        payment succeeds. For more information, see the PaymentIntents use
        case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    "transfer_group"
        A string that identifies the resulting payment as part of a group.
        See the PaymentIntents use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts> for details.

    "use_stripe_sdk"
        Set to "true" only when using manual confirmation and the iOS or
        Android SDKs to handle additional authentication steps.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/create>

  increment_authorization
        my $obj = $stripe->payment_intents( increment_authorization => {
            amount => "2099", } ) || die( $stripe->error );

    Provided with a payment intent, or a hash reference, this will issue a
    increment_authorization api call.

    Returns a PaymentIntent object with the updated amount if the
    incremental authorization succeeded. Returns an error if the incremental
    authorization failed or the PaymentIntent isn’t eligible for incremental
    authorizations.

    Possible parameters are:

    "amount"
        Required. The updated total amount you intend to collect from the
        cardholder. This amount must be greater than the currently
        authorized amount.

    "application_fee_amount"
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application owner's
        Stripe account. The amount of the application fee collected will be
        capped at the total payment amount. For more information, see the
        PaymentIntents use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "transfer_data"
        The parameters used to automatically create a Transfer when the
        payment is captured. For more information, see the PaymentIntents
        use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/increment_authorization>

  list
        my $obj = $stripe->payment_intents( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a payment intent object, this issue an api call to get the
    list of all payment intent.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "customer"
        Only return PaymentIntents for the customer specified by this
        customer ID.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/list>

  retrieve
        my $obj = $stripe->payment_intents( retrieve => $args ) || die( $stripe->error );

    Provided with a payment intent object or a hash reference, this will
    retrieve a Stripe payment intent and return its corresponding object

    Possible parameters are:

    "client_secret"
        Required. The client secret of the PaymentIntent. Required if a
        publishable key is used to retrieve the source.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/retrieve>

  search
        my $obj = $stripe->payment_intents( search => {
            query => "status:'succeeded' AND metadata['order_id']:'6735'", } ) || die( $stripe->error );

    Provided with a payment intent, or a hash reference, this will issue a
    search api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" PaymentIntents. If no objects match the query, the resulting
    array will be empty. See the related guide on expanding properties in
    lists <https://stripe.com/docs/expand#lists>.

    Possible parameters are:

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "page"
        A cursor for pagination across multiple pages of results. Don't
        include this parameter on the first call. Use the next_page value
        returned in a previous response to request subsequent results.

    "query"
        Required. The search query string. See search query language
        <https://stripe.com/docs/search#search-query-language> and the list
        of supported query fields for payment intents
        <https://stripe.com/docs/search#query-fields-for-payment-intents>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/search>

  update
        my $obj = $stripe->payment_intents( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a payment intent object or a hash reference, this will
    update a Stripe payment intent and return its corresponding object

    Possible parameters are:

    "amount"
        Amount intended to be collected by this PaymentIntent. A positive
        integer representing how much to charge in the smallest currency
        unit <https://stripe.com/docs/currencies#zero-decimal> (e.g., 100
        cents to charge $1.00 or 100 to charge ¥100, a zero-decimal
        currency). The minimum amount is $0.50 US or equivalent in charge
        currency
        <https://stripe.com/docs/currencies#minimum-and-maximum-charge-amoun
        ts>. The amount value supports up to eight digits (e.g., a value of
        99999999 for a USD charge of $999,999.99).

    "application_fee_amount"
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application owner's
        Stripe account. The amount of the application fee collected will be
        capped at the total payment amount. For more information, see the
        PaymentIntents use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    "capture_method"
        Controls when the funds will be captured from the customer's
        account.

    "currency"
        Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "customer"
        ID of the Customer this PaymentIntent belongs to, if one exists.

        Payment methods attached to other Customers cannot be used with this
        PaymentIntent.

        If present in combination with setup*future*usage
        <https://stripe.com/docs/api/payment_intents/object#payment_intent_o
        bject-setup_future_usage>, this PaymentIntent's payment method will
        be attached to the Customer after the PaymentIntent has been
        confirmed and any required actions from the user are complete.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "payment_method"
        ID of the payment method (a PaymentMethod, Card, or compatible
        Source
        <https://stripe.com/docs/payments/payment-methods/transitioning#comp
        atibility> object) to attach to this PaymentIntent.

    "payment_method_data"
        If provided, this hash will be used to create a PaymentMethod. The
        new PaymentMethod will appear in the payment_method
        <https://stripe.com/docs/api/payment_intents/object#payment_intent_o
        bject-payment_method> property on the PaymentIntent.

    "payment_method_options"
        Payment-method-specific configuration for this PaymentIntent.

    "payment_method_types"
        The list of payment method types (e.g. card) that this PaymentIntent
        is allowed to use. Use automatic*payment*methods to manage payment
        methods from the Stripe Dashboard
        <https://dashboard.stripe.com/settings/payment_methods>.

    "receipt_email"
        Email address that the receipt for the resulting payment will be
        sent to. If "receipt_email" is specified for a payment in live mode,
        a receipt will be sent regardless of your email settings
        <https://dashboard.stripe.com/account/emails>.

    "setup_future_usage"
        Indicates that you intend to make future payments with this
        PaymentIntent's payment method.

        Providing this parameter will attach the payment method
        <https://stripe.com/docs/payments/save-during-payment> to the
        PaymentIntent's Customer, if present, after the PaymentIntent is
        confirmed and any required actions from the user are complete. If no
        Customer was provided, the payment method can still be attached
        <https://stripe.com/docs/api/payment_methods/attach> to a Customer
        after the transaction completes.

        When processing card payments, Stripe also uses "setup_future_usage"
        to dynamically optimize your payment flow and comply with regional
        legislation and network rules, such as SCA
        <https://stripe.com/docs/strong-customer-authentication>.

        If "setup_future_usage" is already set and you are performing a
        request using a publishable key, you may only update the value from
        "on_session" to "off_session".

    "shipping"
        Shipping information for this PaymentIntent.

    "statement_descriptor"
        For non-card charges, you can use this value as the complete
        description that appears on your customers’ statements. Must contain
        at least one letter, maximum 22 characters.

    "statement_descriptor_suffix"
        Provides information about a card payment that customers see on
        their statements. Concatenated with the prefix (shortened
        descriptor) or statement descriptor that’s set on the account to
        form the complete statement descriptor. Maximum 22 characters for
        the concatenated descriptor.

    "transfer_data"
        The parameters used to automatically create a Transfer when the
        payment succeeds. For more information, see the PaymentIntents use
        case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts>.

    "transfer_group"
        A string that identifies the resulting payment as part of a group.
        "transfer_group" may only be provided if it has not been set. See
        the PaymentIntents use case for connected accounts
        <https://stripe.com/docs/payments/connected-accounts> for details.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/update>

  verify_microdeposits
        my $obj = $stripe->payment_intents( verify_microdeposits => $args ) || die( $stripe->error );

    Provided with a payment intent, or a hash reference, this will issue a
    verify_microdeposits api call.

    Returns a PaymentIntent object.

    Possible parameters are:

    "amounts"
        Two positive integers, in *cents*, equal to the values of the
        microdeposits sent to the bank account.

    "client_secret"
        Required. The client secret of the PaymentIntent.

    "descriptor_code"
        A six-character code starting with SM present in the microdeposit
        sent to the bank account.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_intents/verify_microdeposits>

PAYMENT INTENTS
    You can create retrieve update confirm capture cancel list payment
    intents

  cancel
    Provided with a Net::API::Stripe::Payment::Intent object or an hash
    reference, this will cancel the Stripe payment intent and return a
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    *cancellation_reason* String
        Reason for canceling this PaymentIntent. Possible values are
        "duplicate", "fraudulent", "requested_by_customer", or "abandoned"

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_intents/cancel>

  capture
    Provided with a Net::API::Stripe::Payment::Intent object or an hash
    reference, this will capture the Stripe payment intent and return a
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    *amount_to_capture* Integer
        The amount to capture from the PaymentIntent, which must be less
        than or equal to the original amount. Any additional amount will be
        automatically refunded. Defaults to the full amount_capturable if
        not provided.

    *application_fee_amount* Integer
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application
        ownerâs Stripe account. The amount of the application fee
        collected will be capped at the total payment amount. For more
        information, see the PaymentIntents use case for connected accounts.

    *statement_descriptor* String
        For non-card charges, you can use this value as the complete
        description that appears on your customersâ statements. Must
        contain at least one letter, maximum 22 characters.

    *statement_descriptor_suffix* String
        Provides information about a card payment that customers see on
        their statements. Concatenated with the prefix (shortened
        descriptor) or statement descriptor thatâs set on the account to
        form the complete statement descriptor. Maximum 22 characters for
        the concatenated descriptor.

    *transfer_data* Hash
        The parameters used to automatically create a Transfer when the
        payment is captured. For more information, see the PaymentIntents
        use case for connected accounts.

        It has the following properties:

        *amount* Integer
                The amount that will be transferred automatically when a
                charge succeeds.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_intents/capture>

  confirm
    Provided with a Net::API::Stripe::Payment::Intent object or an hash
    reference, this will confirm the Stripe payment intent and return a
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    *error_on_requires_action* Boolean
        Set to true to fail the payment attempt if the PaymentIntent
        transitions into requires_action. This parameter is intended for
        simpler integrations that do not handle customer actions, like
        saving cards without authentication.

    *mandate* String
        ID of the mandate to be used for this payment.

    *mandate_data* Hash
        This hash contains details about the Mandate to create. This
        parameter can only be used with confirm=true.

        *customer_acceptance* Hash required
                This hash contains details about the customer acceptance of
                the Mandate.

                *type* String required
                            The type of customer acceptance information
                            included with the Mandate. One of online or
                            offline.

                *accepted_at* Datetime
                            The time at which the customer accepted the
                            Mandate.

                *offline* Hash
                            If this is a Mandate accepted offline, this hash
                            contains details about the offline acceptance.

                *online* Hash
                            If this is a Mandate accepted online, this hash
                            contains details about the online acceptance.

                            *ip_address* String
                                            The IP address from which the
                                            Mandate was accepted by the
                                            customer.

                            *user_agent* String
                                            The user agent of the browser
                                            from which the Mandate was
                                            accepted by the customer.

    *off_session* Boolean
        Set to true to indicate that the customer is not in your checkout
        flow during this payment attempt, and therefore is unable to
        authenticate. This parameter is intended for scenarios where you
        collect card details and charge them later.

    *payment_method* String
        ID of the payment method (a PaymentMethod, Card, or compatible
        Source object) to attach to this PaymentIntent.

    *payment_method_data* Hash
        If provided, this hash will be used to create a PaymentMethod. The
        new PaymentMethod will appear in the payment_method property on the
        PaymentIntent.

        *alipay* Hash
                If this is an Alipay PaymentMethod, this hash contains
                details about the Alipay payment method.

                No documented property.

        *au_becs_debit* Hash
                If this is an au_becs_debit PaymentMethod, this hash
                contains details about the bank account.

                *account_number* String
                            The account number for the bank account.

                *bsb_number* String
                            Bank-State-Branch number of the bank account.

        *bacs_debit* Hash
                If this is a bacs_debit PaymentMethod, this hash contains
                details about the Bacs Direct Debit bank account.

                *account_number* String
                            Account number of the bank account that the
                            funds will be debited from.

                *sort_code* String
                            Sort code of the bank account. (e.g., 10-20-30)

        *bancontact* Hash
                If this is a bancontact PaymentMethod, this hash contains
                details about the Bancontact payment method.

                No documented property.

        *billing_details* Hash
                Billing information associated with the PaymentMethod that
                may be used or required by particular types of payment
                methods.

                *address* Hash
                            Billing address.

                            *city* String   City, district, suburb, town, or
                                            village.

                            *country* String
                                            Two-letter country code (ISO
                                            3166-1 alpha-2).

                            *line1* String  Address line 1 (e.g., street, PO
                                            Box, or company name).

                            *line2* String  Address line 2 (e.g., apartment,
                                            suite, unit, or building).

                            *postal_code* String
                                            ZIP or postal code.

                            *state* String  State, county, province, or
                                            region.

                *email* String
                            Email address.

                *name* String
                            Full name.

                *phone* String
                            Billing phone number (including extension).

        *eps* hash
                If this is an eps PaymentMethod, this hash contains details
                about the EPS payment method.

                No documented property.

        *fpx* Hash
                If this is an fpx PaymentMethod, this hash contains details
                about the FPX payment method.

                *bank* String required
                            The customerâs bank.

        *giropay* Hash
                If this is a giropay PaymentMethod, this hash contains
                details about the Giropay payment method.

                No documented property.

        *grabpay* Hash
                If this is a grabpay PaymentMethod, this hash contains
                details about the GrabPay payment method.

                No documented property.

        *ideal* Hash
                If this is an ideal PaymentMethod, this hash contains
                details about the iDEAL payment method.

                *bank* String
                            The customerâs bank.

        *interac_present* Hash
                If this is an interac_present PaymentMethod, this hash
                contains details about the Interac Present payment method.

                No documented property.

        *metadata* Hash
                Set of key-value pairs 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.

        *oxxo* Hash
                If this is an oxxo PaymentMethod, this hash contains details
                about the OXXO payment method.

                No documented property.

        *p24* Hash
                If this is a p24 PaymentMethod, this hash contains details
                about the P24 payment method.

                *bank* String
                            The customerâs bank.

        *sepa_debit* Hash
                If this is a sepa_debit PaymentMethod, this hash contains
                details about the SEPA debit bank account.

                *iban* String required
                            IBAN of the bank account.

        *sofort* Hash
                If this is a sofort PaymentMethod, this hash contains
                details about the SOFORT payment method.

                *country* String required
                            Two-letter ISO code representing the country the
                            bank account is located in.

        *type* String
                The type of the PaymentMethod. An additional hash is
                included on the PaymentMethod with a name matching this
                value. It contains additional information specific to the
                PaymentMethod type.

    *payment_method_options* Hash
        Payment-method-specific configuration for this PaymentIntent.

        *alipay* Hash
                If this is a alipay PaymentMethod, this sub-hash contains
                details about the Alipay payment method options.

                No documented property.

        *bancontact* Hash
                If this is a bancontact PaymentMethod, this sub-hash
                contains details about the Bancontact payment method
                options.

                *preferred_language* String
                            Preferred language of the Bancontact
                            authorization page that the customer is
                            redirected to.

        *card* Hash
                Configuration for any card payments attempted on this
                PaymentIntent.

                *cvc_token* A single-use cvc_update Token that represents a
                            card CVC value. When provided, the CVC value
                            will be verified during the card payment
                            attempt. This parameter can only be provided
                            during confirmation.

                *installments*
                            Installment configuration for payments attempted
                            on this PaymentIntent (Mexico Only).

                            For more information, see the installments
                            integration guide
                            <https://stripe.com/docs/payments/installments>.

                            *enabled* Boolean
                                            Setting to true enables
                                            installments for this
                                            PaymentIntent. This will cause
                                            the response to contain a list
                                            of available installment plans.
                                            Setting to false will prevent
                                            any selected plan from applying
                                            to a charge.

                            *plan* Hash     The selected installment plan to
                                            use for this payment attempt.
                                            This parameter can only be
                                            provided during confirmation.

                                            *count* Integer required
                                                                For
                                                                fixed_count
                                                                installment
                                                                plans, this
                                                                is the
                                                                number of
                                                                installment
                                                                payments
                                                                your
                                                                customer
                                                                will make to
                                                                their credit
                                                                card.

                                            *interval* String required
                                                                For
                                                                fixed_count
                                                                installment
                                                                plans, this
                                                                is the
                                                                interval
                                                                between
                                                                installment
                                                                payments
                                                                your
                                                                customer
                                                                will make to
                                                                their credit
                                                                card. One of
                                                                month.

                                            *type* String required
                                                                Type of
                                                                installment
                                                                plan, one of
                                                                fixed_count.

                *network* String
                            Selected network to process this PaymentIntent
                            on. Depends on the available networks of the
                            card attached to the PaymentIntent. Can be only
                            set confirm-time.

                *request_three_d_secure* String
                            We strongly recommend that you rely on our SCA
                            Engine to automatically prompt your customers
                            for authentication based on risk level and other
                            requirements. However, if you wish to request 3D
                            Secure based on logic from your own fraud
                            engine, provide this option. Permitted values
                            include: automatic or any. If not provided,
                            defaults to automatic. Read our guide on
                            manually requesting 3D Secure for more
                            information on how this configuration interacts
                            with Radar and our SCA Engine.

        *oxxo* Hash
                If this is a oxxo PaymentMethod, this sub-hash contains
                details about the OXXO payment method options.

                *expires_after_days* Integer
                            The number of calendar days before an OXXO
                            voucher expires. For example, if you create an
                            OXXO voucher on Monday and you set
                            expires_after_days to 2, the OXXO invoice will
                            expire on Wednesday at 23:59 America/Mexico_City
                            time.

        *p24* Hash
                If this is a p24 PaymentMethod, this sub-hash contains
                details about the Przelewy24 payment method options.

                No property documented.

        *sepa_debit* Hash
                If this is a sepa_debit PaymentIntent, this sub-hash
                contains details about the SEPA Debit payment method
                options.

                *mandate_options* Hash
                            Additional fields for Mandate creation

                            No property provided.

        *sofort* Hash
                If this is a sofort PaymentMethod, this sub-hash contains
                details about the SOFORT payment method options.

                *preferred_language* String
                            Language shown to the payer on redirect.

    *payment_method_types* Array of strings
        The list of payment method types (e.g. card) that this PaymentIntent
        is allowed to use.

    *receipt_email* String
        Email address that the receipt for the resulting payment will be
        sent to. If receipt_email is specified for a payment in live mode, a
        receipt will be sent regardless of your email settings.

    *return_url* String
        The URL to redirect your customer back to after they authenticate or
        cancel their payment on the payment methodâs app or site. If
        youâd prefer to redirect to a mobile application, you can
        alternatively supply an application URI scheme. This parameter is
        only used for cards and other redirect-based payment methods.

    *setup_future_usage* String
        Indicates that you intend to make future payments with this
        PaymentIntentâs payment method.

        Providing this parameter will attach the payment method to the
        PaymentIntentâs Customer, if present, after the PaymentIntent is
        confirmed and any required actions from the user are complete. If no
        Customer was provided, the payment method can still be attached to a
        Customer after the transaction completes.

        When processing card payments, Stripe also uses setup_future_usage
        to dynamically optimize your payment flow and comply with regional
        legislation and network rules, such as SCA.

        If setup_future_usage is already set and you are performing a
        request using a publishable key, you may only update the value from
        on_session to off_session.

    *shipping* Hash
        Shipping information for this PaymentIntent.

        *address* String required
                Shipping address.

                *city* String
                            City, district, suburb, town, or village.

                *country* String
                            Two-letter country code (ISO 3166-1 alpha-2).

                *line1* String required
                            Address line 1 (e.g., street, PO Box, or company
                            name).

                *line2* String
                            Address line 2 (e.g., apartment, suite, unit, or
                            building).

                *postal_code* String
                            ZIP or postal code.

                *state* String
                            State, county, province, or region.

        *use_stripe_sdk* Boolean
                Set to true only when using manual confirmation and the iOS
                or Android SDKs to handle additional authentication steps.

        For more information, see Stripe documentation here:
        <https://stripe.com/docs/api/payment_intents/confirm>

  create
    Provided with a Net::API::Stripe::Payment::Intent object or an hash
    reference, this will create a Stripe payment intent and return a
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    *amount* Integer
        Amount intended to be collected by this PaymentIntent. A positive
        integer representing how much to charge in the smallest currency
        unit (e.g., 100 cents to charge $1.00 or 100 to charge Â¥100, a
        zero-decimal currency). The minimum amount is $0.50 US or equivalent
        in charge currency. The amount value supports up to eight digits
        (e.g., a value of 99999999 for a USD charge of $999,999.99).

    *application_fee_amount* Integer
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application
        ownerâs Stripe account. The amount of the application fee
        collected will be capped at the total payment amount. For more
        information, see the PaymentIntents use case for connected accounts.

    *capture_method* String
        Controls when the funds will be captured from the customerâs
        account.

        Possible enum values

        *automatic* String
                (Default) Stripe automatically captures funds when the
                customer authorizes the payment.

        *manual* String
                Place a hold on the funds when the customer authorizes the
                payment, but donât capture the funds until later. (Not all
                payment methods support this.)

    *confirmation_method* String
        Possible enum values

        *automatic* String
                (Default) PaymentIntent can be confirmed using a publishable
                key. After next_actions are handled, no additional
                confirmation is required to complete the payment.

        *manual* String
                All payment attempts must be made using a secret key. The
                PaymentIntent returns to the requires_confirmation state
                after handling next_actions, and requires your server to
                initiate each payment attempt with an explicit confirmation.

    *currency* String
        Three-letter ISO currency code, in lowercase. Must be a supported
        currency.

    *confirm* Boolean
        Set to true to attempt to confirm this PaymentIntent immediately.
        This parameter defaults to false. When creating and confirming a
        PaymentIntent at the same time, parameters available in the confirm
        API may also be provided.

    *customer* String.
        ID of the Customer this PaymentIntent belongs to, if one exists.

        Payment methods attached to other Customers cannot be used with this
        PaymentIntent.

        If present in combination with setup_future_usage, this
        PaymentIntentâs payment method will be attached to the Customer
        after the PaymentIntent has been confirmed and any required actions
        from the user are complete.

    *description* String
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    *error_on_requires_action* Boolean
        Set to true to fail the payment attempt if the PaymentIntent
        transitions into requires_action. This parameter is intended for
        simpler integrations that do not handle customer actions, like
        saving cards without authentication. This parameter can only be used
        with confirm=true.

    *mandate* String
        ID of the mandate to be used for this payment. This parameter can
        only be used with confirm=true.

    *mandate_data* Hash
        This hash contains details about the Mandate to create. This
        parameter can only be used with confirm=true.

        *customer_acceptance* Hash required
                This hash contains details about the customer acceptance of
                the Mandate.

                *type* String required
                            The type of customer acceptance information
                            included with the Mandate. One of online or
                            offline.

                *accepted_at* Datetime
                            The time at which the customer accepted the
                            Mandate.

                *offline* Hash
                            If this is a Mandate accepted offline, this hash
                            contains details about the offline acceptance.

                *online* Hash
                            If this is a Mandate accepted online, this hash
                            contains details about the online acceptance.

                            *ip_address* String
                                            The IP address from which the
                                            Mandate was accepted by the
                                            customer.

                            *user_agent* String
                                            The user agent of the browser
                                            from which the Mandate was
                                            accepted by the customer.

    *metadata* Hash
        Set of key-value pairs 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.

    *on_behalf_of* String
        The Stripe account ID for which these funds are intended. For
        details, see the PaymentIntents use case for connected accounts.

    *off_session* String
        Set to true to indicate that the customer is not in your checkout
        flow during this payment attempt, and therefore is unable to
        authenticate. This parameter is intended for scenarios where you
        collect card details and charge them later. This parameter can only
        be used with confirm=true.

    *payment_method* String
        ID of the payment method (a PaymentMethod, Card, or compatible
        Source object) to attach to this PaymentIntent.

        If this parameter is omitted with confirm=true,
        customer.default_source will be attached as this PaymentIntentâs
        payment instrument to improve the migration experience for users of
        the Charges API. We recommend that you explicitly provide the
        payment_method going forward.

    *payment_method_data* Hash
        If provided, this hash will be used to create a PaymentMethod. The
        new PaymentMethod will appear in the payment_method property on the
        PaymentIntent.

        *alipay* Hash
                If this is an Alipay PaymentMethod, this hash contains
                details about the Alipay payment method.

                No documented property.

        *au_becs_debit* Hash
                If this is an au_becs_debit PaymentMethod, this hash
                contains details about the bank account.

                *account_number* String
                            The account number for the bank account

                *bsb_number* String
                            Bank-State-Branch number of the bank account.

        *bacs_debit* Hash
                If this is a bacs_debit PaymentMethod, this hash contains
                details about the Bacs Direct Debit bank account.

                *account_number* String
                            Account number of the bank account that the
                            funds will be debited from.

                *sort_code* String
                            Sort code of the bank account. (e.g., 10-20-30)

        *bancontact* Hash
                If this is a bancontact PaymentMethod, this hash contains
                details about the Bancontact payment method.

                No documented property.

        *billing_details* Hash
                Billing information associated with the PaymentMethod that
                may be used or required by particular types of payment
                methods.

                *address* Hash
                            Billing address.

                            *city* String   City, district, suburb, town, or
                                            village.

                            *country* String
                                            Two-letter country code (ISO
                                            3166-1 alpha-2).

                            *line1* String  Address line 1 (e.g., street, PO
                                            Box, or company name).

                            *line2* String  Address line 2 (e.g., apartment,
                                            suite, unit, or building).

                            *postal_code* String
                                            ZIP or postal code.

                            *state* String  State, county, province, or
                                            region.

                *email* String
                            Email address.

                *name* String
                            Full name.

                *phone* String
                            Billing phone number (including extension).

        *eps* hash
                If this is an eps PaymentMethod, this hash contains details
                about the EPS payment method.

                No documented property.

        *fpx* Hash
                If this is an fpx PaymentMethod, this hash contains details
                about the FPX payment method.

                *bank* String
                            The customerâs bank.

        *giropay* Hash
                If this is a giropay PaymentMethod, this hash contains
                details about the Giropay payment method.

                No documented property.

        *grabpay* Hash
                If this is a grabpay PaymentMethod, this hash contains
                details about the GrabPay payment method.

                No documented property.

        *ideal* Hash
                If this is an ideal PaymentMethod, this hash contains
                details about the iDEAL payment method.

                *bank* String
                            The customerâs bank.

        *interac_present* Hash
                If this is an interac_present PaymentMethod, this hash
                contains details about the Interac Present payment method.

                No documented property.

        *metadata* Hash
                Set of key-value pairs 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.

        *oxxo* Hash
                If this is an oxxo PaymentMethod, this hash contains details
                about the OXXO payment method.

                No documented property.

        *p24* Hash
                If this is a p24 PaymentMethod, this hash contains details
                about the P24 payment method.

                *bank* String
                            The customerâs bank.

        *sepa_debit* Hash
                If this is a sepa_debit PaymentMethod, this hash contains
                details about the SEPA debit bank account.

                *iban* String required
                            IBAN of the bank account.

        *sofort* Hash
                If this is a sofort PaymentMethod, this hash contains
                details about the SOFORT payment method.

                *country*   Two-letter ISO code representing the country the
                            bank account is located in.

        *type* String
                The type of the PaymentMethod. An additional hash is
                included on the PaymentMethod with a name matching this
                value. It contains additional information specific to the
                PaymentMethod type.

    *payment_method_options* Hash
        Payment-method-specific configuration for this PaymentIntent.

        *alipay* Hash
                If this is a alipay PaymentMethod, this sub-hash contains
                details about the Alipay payment method options.

                No documented property.

        *bancontact* Hash
                If this is a bancontact PaymentMethod, this sub-hash
                contains details about the Bancontact payment method
                options.

                *preferred_language* String
                            Preferred language of the Bancontact
                            authorization page that the customer is
                            redirected to.

        *card* Hash
                Configuration for any card payments attempted on this
                PaymentIntent.

                *cvc_token* A single-use cvc_update Token that represents a
                            card CVC value. When provided, the CVC value
                            will be verified during the card payment
                            attempt. This parameter can only be provided
                            during confirmation.

                *installments*
                            Installment configuration for payments attempted
                            on this PaymentIntent (Mexico Only).

                            For more information, see the installments
                            integration guide
                            <https://stripe.com/docs/payments/installments>.

                            *enabled* Boolean
                                            Setting to true enables
                                            installments for this
                                            PaymentIntent. This will cause
                                            the response to contain a list
                                            of available installment plans.
                                            Setting to false will prevent
                                            any selected plan from applying
                                            to a charge.

                            *plan* Hash     The selected installment plan to
                                            use for this payment attempt.
                                            This parameter can only be
                                            provided during confirmation.

                                            *count* Integer required
                                                                For
                                                                fixed_count
                                                                installment
                                                                plans, this
                                                                is the
                                                                number of
                                                                installment
                                                                payments
                                                                your
                                                                customer
                                                                will make to
                                                                their credit
                                                                card.

                                            *interval* String required
                                                                For
                                                                fixed_count
                                                                installment
                                                                plans, this
                                                                is the
                                                                interval
                                                                between
                                                                installment
                                                                payments
                                                                your
                                                                customer
                                                                will make to
                                                                their credit
                                                                card. One of
                                                                month.

                                            *type* String required
                                                                Type of
                                                                installment
                                                                plan, one of
                                                                fixed_count.

                *network* String
                            Selected network to process this PaymentIntent
                            on. Depends on the available networks of the
                            card attached to the PaymentIntent. Can be only
                            set confirm-time.

                *request_three_d_secure* String
                            We strongly recommend that you rely on our SCA
                            Engine to automatically prompt your customers
                            for authentication based on risk level and other
                            requirements. However, if you wish to request 3D
                            Secure based on logic from your own fraud
                            engine, provide this option. Permitted values
                            include: automatic or any. If not provided,
                            defaults to automatic. Read our guide on
                            manually requesting 3D Secure for more
                            information on how this configuration interacts
                            with Radar and our SCA Engine.

        *oxxo* Hash
                If this is a oxxo PaymentMethod, this sub-hash contains
                details about the OXXO payment method options.

                *expires_after_days* Integer
                            The number of calendar days before an OXXO
                            voucher expires. For example, if you create an
                            OXXO voucher on Monday and you set
                            expires_after_days to 2, the OXXO invoice will
                            expire on Wednesday at 23:59 America/Mexico_City
                            time.

        *p24* Hash
                If this is a p24 PaymentMethod, this sub-hash contains
                details about the Przelewy24 payment method options.

                No property documented.

        *sepa_debit* Hash
                If this is a sepa_debit PaymentIntent, this sub-hash
                contains details about the SEPA Debit payment method
                options.

                *mandate_options* Hash
                            Additional fields for Mandate creation

                            No property provided.

        *sofort* Hash
                If this is a sofort PaymentMethod, this sub-hash contains
                details about the SOFORT payment method options.

                *preferred_language* String
                            Language shown to the payer on redirect.

    *payment_method_types* array of strings
        The list of payment method types that this PaymentIntent is allowed
        to use. If this is not provided, defaults to [âcardâ]. Valid
        payment method types include: alipay, au_becs_debit, bancontact,
        card, card_present, eps, giropay, ideal, interac_present, p24,
        sepa_debit, and sofort.

    *receipt_email* String
        Email address that the receipt for the resulting payment will be
        sent to. If receipt_email is specified for a payment in live mode, a
        receipt will be sent regardless of your email settings.

    *return_url* String
        The URL to redirect your customer back to after they authenticate or
        cancel their payment on the payment methodâs app or site. If
        youâd prefer to redirect to a mobile application, you can
        alternatively supply an application URI scheme. This parameter can
        only be used with confirm=true.

    *setup_future_usage* String
        Indicates that you intend to make future payments with this
        PaymentIntentâs payment method.

        Providing this parameter will attach the payment method to the
        PaymentIntentâs Customer, if present, after the PaymentIntent is
        confirmed and any required actions from the user are complete. If no
        Customer was provided, the payment method can still be attached to a
        Customer after the transaction completes.

        When processing card payments, Stripe also uses setup_future_usage
        to dynamically optimize your payment flow and comply with regional
        legislation and network rules, such as SCA.

        Possible enum values

        *on_session* String
                Use on_session if you intend to only reuse the payment
                method when your customer is present in your checkout flow.

        *off_session* String
                Use off_session if your customer may or may not be present
                in your checkout flow.

    *shipping* Hash
        Shipping information for this PaymentIntent.

        *address* Hash required
                Shipping address.

                *city* String
                            City, district, suburb, town, or village.

                *country* String
                            Two-letter country code (ISO 3166-1 alpha-2).

                *line1* String required
                            Address line 1 (e.g., street, PO Box, or company
                            name).

                *line2* String
                            Address line 2 (e.g., apartment, suite, unit, or
                            building).

                *postal_code* String
                            ZIP or postal code.

                *state* String
                            State, county, province, or region.

        *name* String required
                Recipient name.

        *carrier* String
                The delivery service that shipped a physical product, such
                as Fedex, UPS, USPS, etc.

        *phone* String
                Recipient phone (including extension).

        *tracking_number* String
                The tracking number for a physical product, obtained from
                the delivery service. If multiple tracking numbers were
                generated for this purchase, please separate them with
                commas.

    *statement_descriptor* String
        For non-card charges, you can use this value as the complete
        description that appears on your customersâ statements. Must
        contain at least one letter, maximum 22 characters.

    *statement_descriptor_suffix* Text
        Provides information about a card payment that customers see on
        their statements. Concatenated with the prefix (shortened
        descriptor) or statement descriptor thatâs set on the account to
        form the complete statement descriptor. Maximum 22 characters for
        the concatenated descriptor.

    *transfer_data* Hash
        The parameters used to automatically create a Transfer when the
        payment succeeds. For more information, see the PaymentIntents use
        case for connected accounts.

        *destination* String required
                If specified, successful charges will be attributed to the
                destination account for tax reporting, and the funds from
                charges will be transferred to the destination account. The
                ID of the resulting transfer will be returned on the
                successful chargeâs transfer field.

        *amount* Integer
                The amount that will be transferred automatically when a
                charge succeeds. The amount is capped at the total
                transaction amount and if no amount is set, the full amount
                is transferred.

                If you intend to collect a fee and you need a more robust
                reporting experience, using application_fee_amount might be
                a better fit for your integration.

    *transfer_group* String
        A string that identifies the resulting payment as part of a group.
        See the PaymentIntents use case for connected accounts for details.

    *use_stripe_sdk* Boolean
        Set to true only when using manual confirmation and the iOS or
        Android SDKs to handle additional authentication steps.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_intents/create>

  list
    Provided with an hash reference of parameters, and this will get a list
    of payment methods and return a Net::API::Stripe::List object.

    Provided with a Net::API::Stripe::Payment::Intent object or an hash
    reference, this will update the Stripe payment intent and return a
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    *customer* A Stripe customer id
        Only return PaymentIntents for the customer specified by this
        customer ID.

    *created* Hash
        A filter on the list based on the object created field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

        *gt* Datetime
                Return results where the created field is greater than this
                value.

        *gte* Datetime
                Return results where the created field is greater than or
                equal to this value.

        *lt* Datetime
                Return results where the created field is less than this
                value.

        *lte* Datetime
                Return results where the created field is less than or equal
                to this value.

    *ending_before* String
        A cursor for use in pagination. ending_before is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with obj_bar, your
        subsequent call can include ending_before=obj_bar in order to fetch
        the previous page of the list.

    *limit* Integer
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    *starting_after* String
        A cursor for use in pagination. starting_after is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, ending with obj_foo, your
        subsequent call can include starting_after=obj_foo in order to fetch
        the next page of the list.

  retrieve
    Provided with a Net::API::Stripe::Payment::Intent object or an hash
    reference, this will retrieve a Stripe payment intent and return a
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    *client_secret* String required
        The client secret of the PaymentIntent. Required if a publishable
        key is used to retrieve the source.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_intents/retrieve>

  update
    Provided with a Net::API::Stripe::Payment::Intent object or an hash
    reference, this will update the Stripe payment intent and return a
    Net::API::Stripe::Payment::Intent object.

    Possible parameters are:

    *amount* Integer
        Amount intended to be collected by this PaymentIntent. A positive
        integer representing how much to charge in the smallest currency
        unit (e.g., 100 cents to charge $1.00 or 100 to charge Â¥100, a
        zero-decimal currency). The minimum amount is $0.50 US or equivalent
        in charge currency. The amount value supports up to eight digits
        (e.g., a value of 99999999 for a USD charge of $999,999.99).

    *application_fee_amount* Integer
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application
        ownerâs Stripe account. The amount of the application fee
        collected will be capped at the total payment amount. For more
        information, see the PaymentIntents use case for connected accounts.

    *capture_method* String
        Controls when the funds will be captured from the customerâs
        account.

        Possible enum values

        *automatic* String
                (Default) Stripe automatically captures funds when the
                customer authorizes the payment.

        *manual* String
                Place a hold on the funds when the customer authorizes the
                payment, but donât capture the funds until later. (Not all
                payment methods support this.)

    *confirmation_method* String
        Possible enum values

        *automatic* String
                (Default) PaymentIntent can be confirmed using a publishable
                key. After next_actions are handled, no additional
                confirmation is required to complete the payment.

        *manual* String
                All payment attempts must be made using a secret key. The
                PaymentIntent returns to the requires_confirmation state
                after handling next_actions, and requires your server to
                initiate each payment attempt with an explicit confirmation.

    *currency* String
        Three-letter ISO currency code, in lowercase. Must be a supported
        currency.

    *confirm* Boolean
        Set to true to attempt to confirm this PaymentIntent immediately.
        This parameter defaults to false. When creating and confirming a
        PaymentIntent at the same time, parameters available in the confirm
        API may also be provided.

    *customer* String.
        ID of the Customer this PaymentIntent belongs to, if one exists.

        Payment methods attached to other Customers cannot be used with this
        PaymentIntent.

        If present in combination with setup_future_usage, this
        PaymentIntentâs payment method will be attached to the Customer
        after the PaymentIntent has been confirmed and any required actions
        from the user are complete.

    *description* String
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    *error_on_requires_action* Boolean
        Set to true to fail the payment attempt if the PaymentIntent
        transitions into requires_action. This parameter is intended for
        simpler integrations that do not handle customer actions, like
        saving cards without authentication. This parameter can only be used
        with confirm=true.

    *mandate* String
        ID of the mandate to be used for this payment. This parameter can
        only be used with confirm=true.

    *mandate_data* Hash
        This hash contains details about the Mandate to create. This
        parameter can only be used with confirm=true.

        *customer_acceptance* Hash required
                This hash contains details about the customer acceptance of
                the Mandate.

                *type* String required
                            The type of customer acceptance information
                            included with the Mandate. One of online or
                            offline.

                *accepted_at* Datetime
                            The time at which the customer accepted the
                            Mandate.

                *offline* Hash
                            If this is a Mandate accepted offline, this hash
                            contains details about the offline acceptance.

                *online* Hash
                            If this is a Mandate accepted online, this hash
                            contains details about the online acceptance.

                            *ip_address* String
                                            The IP address from which the
                                            Mandate was accepted by the
                                            customer.

                            *user_agent* String
                                            The user agent of the browser
                                            from which the Mandate was
                                            accepted by the customer.

    *metadata* Hash
        Set of key-value pairs 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.

    *on_behalf_of* String
        The Stripe account ID for which these funds are intended. For
        details, see the PaymentIntents use case for connected accounts.

    *payment_method* String
        ID of the payment method (a PaymentMethod, Card, or compatible
        Source object) to attach to this PaymentIntent.

    *payment_method_data* Hash
        If provided, this hash will be used to create a PaymentMethod. The
        new PaymentMethod will appear in the payment_method property on the
        PaymentIntent.

        *alipay* Hash
                If this is an Alipay PaymentMethod, this hash contains
                details about the Alipay payment method.

                No documented property.

        *au_becs_debit* Hash
                If this is an au_becs_debit PaymentMethod, this hash
                contains details about the bank account.

                *account_number* String
                            The account number for the bank account.

                *bsb_number* String
                            Bank-State-Branch number of the bank account.

        *bacs_debit* Hash
                If this is a bacs_debit PaymentMethod, this hash contains
                details about the Bacs Direct Debit bank account.

                *account_number* String
                            Account number of the bank account that the
                            funds will be debited from.

                *sort_code* String
                            Sort code of the bank account. (e.g., 10-20-30)

        *bancontact* Hash
                If this is a bancontact PaymentMethod, this hash contains
                details about the Bancontact payment method.

                No documented property.

        *billing_details* Hash
                Billing information associated with the PaymentMethod that
                may be used or required by particular types of payment
                methods.

                *address* Hash
                            Billing address.

                            *city* String   City, district, suburb, town, or
                                            village.

                            *country* String
                                            Two-letter country code (ISO
                                            3166-1 alpha-2).

                            *line1* String  Address line 1 (e.g., street, PO
                                            Box, or company name).

                            *line2* String  Address line 2 (e.g., apartment,
                                            suite, unit, or building).

                            *postal_code* String
                                            ZIP or postal code.

                            *state* String  State, county, province, or
                                            region.

                *email* String
                            Email address.

                *name* String
                            Full name.

                *phone* String
                            Billing phone number (including extension).

        *eps* hash
                If this is an eps PaymentMethod, this hash contains details
                about the EPS payment method.

                No documented property.

        *fpx* Hash
                If this is an fpx PaymentMethod, this hash contains details
                about the FPX payment method.

                *bank* String required
                            The customerâs bank.

        *giropay* Hash
                If this is a giropay PaymentMethod, this hash contains
                details about the Giropay payment method.

                No documented property.

        *grabpay* Hash
                If this is a grabpay PaymentMethod, this hash contains
                details about the GrabPay payment method.

                No documented property.

        *ideal* Hash
                If this is an ideal PaymentMethod, this hash contains
                details about the iDEAL payment method.

                *bank* String
                            The customerâs bank.

        *interac_present* Hash
                If this is an interac_present PaymentMethod, this hash
                contains details about the Interac Present payment method.

                No documented property.

        *metadata* Hash
                Set of key-value pairs 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.

        *oxxo* Hash
                If this is an oxxo PaymentMethod, this hash contains details
                about the OXXO payment method.

                No documented property.

        *p24* Hash
                If this is a p24 PaymentMethod, this hash contains details
                about the P24 payment method.

                *bank* String
                            The customerâs bank.

        *sepa_debit* Hash
                If this is a sepa_debit PaymentMethod, this hash contains
                details about the SEPA debit bank account.

                *iban* String required
                            IBAN of the bank account.

        *sofort* Hash
                If this is a sofort PaymentMethod, this hash contains
                details about the SOFORT payment method.

                *country* String required
                            Two-letter ISO code representing the country the
                            bank account is located in.

        *type* String
                The type of the PaymentMethod. An additional hash is
                included on the PaymentMethod with a name matching this
                value. It contains additional information specific to the
                PaymentMethod type.

    *payment_method_options* Hash
        Payment-method-specific configuration for this PaymentIntent.

        *alipay* Hash
                If this is a alipay PaymentMethod, this sub-hash contains
                details about the Alipay payment method options.

                No documented property.

        *bancontact* Hash
                If this is a bancontact PaymentMethod, this sub-hash
                contains details about the Bancontact payment method
                options.

                *preferred_language* String
                            Preferred language of the Bancontact
                            authorization page that the customer is
                            redirected to.

        *card* Hash
                Configuration for any card payments attempted on this
                PaymentIntent.

                *cvc_token* A single-use cvc_update Token that represents a
                            card CVC value. When provided, the CVC value
                            will be verified during the card payment
                            attempt. This parameter can only be provided
                            during confirmation.

                *installments*
                            Installment configuration for payments attempted
                            on this PaymentIntent (Mexico Only).

                            For more information, see the installments
                            integration guide
                            <https://stripe.com/docs/payments/installments>.

                            *enabled* Boolean
                                            Setting to true enables
                                            installments for this
                                            PaymentIntent. This will cause
                                            the response to contain a list
                                            of available installment plans.
                                            Setting to false will prevent
                                            any selected plan from applying
                                            to a charge.

                            *plan* Hash     The selected installment plan to
                                            use for this payment attempt.
                                            This parameter can only be
                                            provided during confirmation.

                                            *count* Integer required
                                                                For
                                                                fixed_count
                                                                installment
                                                                plans, this
                                                                is the
                                                                number of
                                                                installment
                                                                payments
                                                                your
                                                                customer
                                                                will make to
                                                                their credit
                                                                card.

                                            *interval* String required
                                                                For
                                                                fixed_count
                                                                installment
                                                                plans, this
                                                                is the
                                                                interval
                                                                between
                                                                installment
                                                                payments
                                                                your
                                                                customer
                                                                will make to
                                                                their credit
                                                                card. One of
                                                                month.

                                            *type* String required
                                                                Type of
                                                                installment
                                                                plan, one of
                                                                fixed_count.

                *network* String
                            Selected network to process this PaymentIntent
                            on. Depends on the available networks of the
                            card attached to the PaymentIntent. Can be only
                            set confirm-time.

                *request_three_d_secure* String
                            We strongly recommend that you rely on our SCA
                            Engine to automatically prompt your customers
                            for authentication based on risk level and other
                            requirements. However, if you wish to request 3D
                            Secure based on logic from your own fraud
                            engine, provide this option. Permitted values
                            include: automatic or any. If not provided,
                            defaults to automatic. Read our guide on
                            manually requesting 3D Secure for more
                            information on how this configuration interacts
                            with Radar and our SCA Engine.

        *oxxo* Hash
                If this is a oxxo PaymentMethod, this sub-hash contains
                details about the OXXO payment method options.

                *expires_after_days* Integer
                            The number of calendar days before an OXXO
                            voucher expires. For example, if you create an
                            OXXO voucher on Monday and you set
                            expires_after_days to 2, the OXXO invoice will
                            expire on Wednesday at 23:59 America/Mexico_City
                            time.

        *p24* Hash
                If this is a p24 PaymentMethod, this sub-hash contains
                details about the Przelewy24 payment method options.

                No property documented.

        *sepa_debit* Hash
                If this is a sepa_debit PaymentIntent, this sub-hash
                contains details about the SEPA Debit payment method
                options.

                *mandate_options* Hash
                            Additional fields for Mandate creation

                            No property provided.

        *sofort* Hash
                If this is a sofort PaymentMethod, this sub-hash contains
                details about the SOFORT payment method options.

                *preferred_language* String
                            Language shown to the payer on redirect.

    *off_session* String
        Set to true to indicate that the customer is not in your checkout
        flow during this payment attempt, and therefore is unable to
        authenticate. This parameter is intended for scenarios where you
        collect card details and charge them later. This parameter can only
        be used with confirm=true.

    *payment_method_types* Array of strings
        The list of payment method types (e.g. card) that this PaymentIntent
        is allowed to use.

    *receipt_email* String
        Email address that the receipt for the resulting payment will be
        sent to. If receipt_email is specified for a payment in live mode, a
        receipt will be sent regardless of your email settings.

    *setup_future_usage* String
        Indicates that you intend to make future payments with this
        PaymentIntentâs payment method.

        Providing this parameter will attach the payment method to the
        PaymentIntentâs Customer, if present, after the PaymentIntent is
        confirmed and any required actions from the user are complete. If no
        Customer was provided, the payment method can still be attached to a
        Customer after the transaction completes.

        When processing card payments, Stripe also uses setup_future_usage
        to dynamically optimize your payment flow and comply with regional
        legislation and network rules, such as SCA.

        If setup_future_usage is already set and you are performing a
        request using a publishable key, you may only update the value from
        on_session to off_session.

        Possible enum values

        *on_session* String
                Use on_session if you intend to only reuse the payment
                method when your customer is present in your checkout flow.

        *off_session* String
                Use off_session if your customer may or may not be present
                in your checkout flow.

    *return_url* String
        The URL to redirect your customer back to after they authenticate or
        cancel their payment on the payment methodâs app or site. If
        youâd prefer to redirect to a mobile application, you can
        alternatively supply an application URI scheme. This parameter can
        only be used with confirm=true.

    *shipping* Hash
        Shipping information for this PaymentIntent.

        *address* String required
                Shipping address.

                *city* String
                            City, district, suburb, town, or village.

                *country* String
                            Two-letter country code (ISO 3166-1 alpha-2).

                *line1* String required
                            Address line 1 (e.g., street, PO Box, or company
                            name).

                *line2* String
                            Address line 2 (e.g., apartment, suite, unit, or
                            building).

                *postal_code* String
                            ZIP or postal code.

                *state* String
                            State, county, province, or region.

        *name* String required
                Recipient name.

        *carrier* String
                The delivery service that shipped a physical product, such
                as Fedex, UPS, USPS, etc.

        *phone* String
                Recipient phone (including extension).

        *tracking_number* String
                The tracking number for a physical product, obtained from
                the delivery service. If multiple tracking numbers were
                generated for this purchase, please separate them with
                commas.

    *statement_descriptor* String
        For non-card charges, you can use this value as the complete
        description that appears on your customersâ statements. Must
        contain at least one letter, maximum 22 characters.

    *statement_descriptor_suffix* Text
        Provides information about a card payment that customers see on
        their statements. Concatenated with the prefix (shortened
        descriptor) or statement descriptor thatâs set on the account to
        form the complete statement descriptor. Maximum 22 characters for
        the concatenated descriptor.

    *transfer_data* Hash
        The parameters used to automatically create a Transfer when the
        payment succeeds. For more information, see the PaymentIntents use
        case for connected accounts.

        *amount* Integer
                The amount that will be transferred automatically when a
                charge succeeds.

    *transfer_group* String
        A string that identifies the resulting payment as part of a group.
        transfer_group may only be provided if it has not been set. See the
        PaymentIntents use case for connected accounts for details.

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_intents/create>

PAYMENT LINK
    You can create, items, line_items, list, retrieve or update payment link

  create
        my $obj = $stripe->payment_links( create => {
            line_items => [,
                price    => "price_1Le1oa2eZvKYlo2CuD7mwpZu",
                quantity => "1",
            ], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Payment::Link object or a hash
    reference, this will create a Stripe payment link and return an
    Net::API::Stripe::Payment::Link object.

    Possible parameters are:

    "after_completion"
        Behavior after the purchase is complete.

    "allow_promotion_codes"
        Enables user redeemable promotion codes.

    "application_fee_amount"
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application owner's
        Stripe account. Can only be applied when there are no line items
        with recurring prices.

    "application_fee_percent"
        A non-negative decimal between 0 and 100, with at most two decimal
        places. This represents the percentage of the subscription invoice
        subtotal that will be transferred to the application owner's Stripe
        account. There must be at least 1 line item with a recurring price
        to use this field.

    "automatic_tax"
        Configuration for automatic tax collection.

    "billing_address_collection"
        Configuration for collecting the customer's billing address.

    "consent_collection"
        Configure fields to gather active consent from customers.

    "currency"
        Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>
        and supported by each line item's price.

    "customer_creation"
        Configures whether checkout sessions
        <https://stripe.com/docs/api/checkout/sessions> created by this
        payment link create a Customer
        <https://stripe.com/docs/api/customers>.

    "line_items"
        Required. The line items representing what is being sold. Each line
        item represents an item being sold. Up to 20 line items are
        supported.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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". Metadata
        associated with this Payment Link will automatically be copied to
        checkout sessions <https://stripe.com/docs/api/checkout/sessions>
        created by this payment link.

    "on_behalf_of"
        The account on behalf of which to charge.

    "payment_intent_data"
        A subset of parameters to be passed to PaymentIntent creation for
        Checkout Sessions in "payment" mode.

    "payment_method_collection"
        Specify whether Checkout should collect a payment method. When set
        to "if_required", Checkout will not collect a payment method when
        the total due for the session is 0.This may occur if the Checkout
        Session includes a free trial or a discount.

        Can only be set in "subscription" mode.

        If you'd like information on how to collect a payment method outside
        of Checkout, read the guide on configuring subscriptions with a free
        trial <https://stripe.com/docs/payments/checkout/free-trials>.

    "payment_method_types"
        The list of payment method types that customers can use. If no value
        is passed, Stripe will dynamically show relevant payment methods
        from your payment method settings
        <https://dashboard.stripe.com/settings/payment_methods> (20+ payment
        methods supported
        <https://stripe.com/docs/payments/payment-methods/integration-option
        s#payment-method-product-support>).

    "phone_number_collection"
        Controls phone number collection settings during checkout.

        We recommend that you review your privacy policy and check with your
        legal contacts.

    "shipping_address_collection"
        Configuration for collecting the customer's shipping address.

    "shipping_options"
        The shipping rate options to apply to checkout sessions
        <https://stripe.com/docs/api/checkout/sessions> created by this
        payment link.

    "submit_type"
        Describes the type of transaction being performed in order to
        customize relevant text on the page, such as the submit button.
        Changing this value will also affect the hostname in the url
        <https://stripe.com/docs/api/payment_links/payment_links/object#url>
        property (example: "donate.stripe.com").

    "subscription_data"
        When creating a subscription, the specified configuration data will
        be used. There must be at least one line item with a recurring price
        to use "subscription_data".

    "tax_id_collection"
        Controls tax ID collection during checkout.

    "transfer_data"
        The account (if any) the payments will be attributed to for tax
        reporting, and where funds from each payment will be transferred to.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_links/payment_links/create>

  line_items
        my $obj = $stripe->payment_links( line_items => $args ) || die( $stripe->error );

    Provided with a payment link, or a hash reference, this will issue a
    line_items api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" payment link line items, starting after Line Item
    "starting_after". Each entry in the array is a separate Line Item
    object. If no more line items are available, the resulting array will be
    empty.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_links/line_items>

  list
        my $obj = $stripe->payment_links( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a payment link object, this issue an api call to get the
    list of all payment link.

    Possible parameters are:

    "active"
        Only return payment links that are active or inactive (e.g., pass
        "false" to list all inactive payment links).

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_links/payment_links/list>

  retrieve
        my $obj = $stripe->payment_links( retrieve => $args ) || die( $stripe->error );

    Provided with a payment link object or a hash reference, this will
    retrieve a Stripe payment link and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_links/payment_links/retrieve>

  update
        my $obj = $stripe->payment_links( update => {
            active => "0", } ) || die( $stripe->error );

    Provided with a payment link object or a hash reference, this will
    update a Stripe payment link and return its corresponding object

    Possible parameters are:

    "active"
        Whether the payment link's "url" is active. If "false", customers
        visiting the URL will be shown a page saying that the link has been
        deactivated.

    "after_completion"
        Behavior after the purchase is complete.

    "allow_promotion_codes"
        Enables user redeemable promotion codes.

    "automatic_tax"
        Configuration for automatic tax collection.

    "billing_address_collection"
        Configuration for collecting the customer's billing address.

    "customer_creation"
        Configures whether checkout sessions
        <https://stripe.com/docs/api/checkout/sessions> created by this
        payment link create a Customer
        <https://stripe.com/docs/api/customers>.

    "line_items"
        The line items representing what is being sold. Each line item
        represents an item being sold. Up to 20 line items are supported.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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". Metadata
        associated with this Payment Link will automatically be copied to
        checkout sessions <https://stripe.com/docs/api/checkout/sessions>
        created by this payment link.

    "payment_method_collection"
        Specify whether Checkout should collect a payment method. When set
        to "if_required", Checkout will not collect a payment method when
        the total due for the session is 0.This may occur if the Checkout
        Session includes a free trial or a discount.

        Can only be set in "subscription" mode.

        If you'd like information on how to collect a payment method outside
        of Checkout, read the guide on configuring subscriptions with a free
        trial <https://stripe.com/docs/payments/checkout/free-trials>.

    "payment_method_types"
        The list of payment method types that customers can use. Pass an
        empty string to enable automatic payment methods that use your
        payment method settings
        <https://dashboard.stripe.com/settings/payment_methods>.

    "shipping_address_collection"
        Configuration for collecting the customer's shipping address.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_links/payment_links/update>

PAYMENT METHOD
    You can attach, create, detach, list, list_customer_payment_methods,
    retrieve, retrieve_customer_payment_method or update payment method

  attach
        my $obj = $stripe->payment_methods( attach => {
            customer => "cus_AJ78ZaALpqgiuZ", } ) || die( $stripe->error );

    Provided with a payment method, or a hash reference, this will issue a
    attach api call.

    Returns a PaymentMethod object.

    Possible parameters are:

    "customer"
        Required. The ID of the customer to which to attach the
        PaymentMethod.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/attach>

  create
        my $obj = $stripe->payment_methods( create => {
            card =>
            {
                cvc       => "314",
                exp_month => "9",
                exp_year  => "2023",
                number    => "4242424242424242",
            }
            type => "card", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Payment::Method object or a hash
    reference, this will create a Stripe payment method and return an
    Net::API::Stripe::Payment::Method object.

    Possible parameters are:

    "acss_debit"
        If this is an "acss_debit" PaymentMethod, this hash contains details
        about the ACSS Debit payment method.

    "affirm"
        If this is an "affirm" PaymentMethod, this hash contains details
        about the Affirm payment method.

    "afterpay_clearpay"
        If this is an "AfterpayClearpay" PaymentMethod, this hash contains
        details about the AfterpayClearpay payment method.

    "alipay"
        If this is an "Alipay" PaymentMethod, this hash contains details
        about the Alipay payment method.

    "au_becs_debit"
        If this is an "au_becs_debit" PaymentMethod, this hash contains
        details about the bank account.

    "bacs_debit"
        If this is a "bacs_debit" PaymentMethod, this hash contains details
        about the Bacs Direct Debit bank account.

    "bancontact"
        If this is a "bancontact" PaymentMethod, this hash contains details
        about the Bancontact payment method.

    "billing_details"
        Billing information associated with the PaymentMethod that may be
        used or required by particular types of payment methods.

    "blik"
        If this is a "blik" PaymentMethod, this hash contains details about
        the BLIK payment method.

    "boleto"
        If this is a "boleto" PaymentMethod, this hash contains details
        about the Boleto payment method.

    "card"
        If this is a "card" PaymentMethod, this hash contains the user's
        card details. For backwards compatibility, you can alternatively
        provide a Stripe token (e.g., for Apple Pay, Amex Express Checkout,
        or legacy Checkout) into the card hash with format "card: {token:
        "tok_visa"}". When providing a card number, you must meet the
        requirements for PCI compliance
        <https://stripe.com/docs/security#validating-pci-compliance>. We
        strongly recommend using Stripe.js instead of interacting with this
        API directly.

    "customer_balance"
        If this is a "customer_balance" PaymentMethod, this hash contains
        details about the CustomerBalance payment method.

    "eps"
        If this is an "eps" PaymentMethod, this hash contains details about
        the EPS payment method.

    "fpx"
        If this is an "fpx" PaymentMethod, this hash contains details about
        the FPX payment method.

    "giropay"
        If this is a "giropay" PaymentMethod, this hash contains details
        about the Giropay payment method.

    "grabpay"
        If this is a "grabpay" PaymentMethod, this hash contains details
        about the GrabPay payment method.

    "ideal"
        If this is an "ideal" PaymentMethod, this hash contains details
        about the iDEAL payment method.

    "interac_present"
        If this is an "interac_present" PaymentMethod, this hash contains
        details about the Interac Present payment method.

    "klarna"
        If this is a "klarna" PaymentMethod, this hash contains details
        about the Klarna payment method.

    "konbini"
        If this is a "konbini" PaymentMethod, this hash contains details
        about the Konbini payment method.

    "link"
        If this is an "Link" PaymentMethod, this hash contains details about
        the Link payment method.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "oxxo"
        If this is an "oxxo" PaymentMethod, this hash contains details about
        the OXXO payment method.

    "p24"
        If this is a "p24" PaymentMethod, this hash contains details about
        the P24 payment method.

    "paynow"
        If this is a "paynow" PaymentMethod, this hash contains details
        about the PayNow payment method.

    "promptpay"
        If this is a "promptpay" PaymentMethod, this hash contains details
        about the PromptPay payment method.

    "radar_options"
        Options to configure Radar. See Radar Session
        <https://stripe.com/docs/radar/radar-session> for more information.

    "sepa_debit"
        If this is a "sepa_debit" PaymentMethod, this hash contains details
        about the SEPA debit bank account.

    "sofort"
        If this is a "sofort" PaymentMethod, this hash contains details
        about the SOFORT payment method.

    "type"
        Required. The type of the PaymentMethod. An additional hash is
        included on the PaymentMethod with a name matching this value. It
        contains additional information specific to the PaymentMethod type.
        Required unless "payment_method" is specified (see the Cloning
        PaymentMethods
        <https://stripe.com/docs/payments/payment-methods/connect#cloning-pa
        yment-methods> guide).

    "us_bank_account"
        If this is an "us_bank_account" PaymentMethod, this hash contains
        details about the US bank account payment method.

    "wechat_pay"
        If this is an "wechat_pay" PaymentMethod, this hash contains details
        about the wechat_pay payment method.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/create>

  detach
        my $obj = $stripe->payment_methods( detach => $args ) || die( $stripe->error );

    Provided with a payment method, or a hash reference, this will issue a
    detach api call.

    Returns a PaymentMethod object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/detach>

  list
        my $obj = $stripe->payment_methods( list => {
            customer => "cus_AJ78ZaALpqgiuZ",
            type     => "card", } ) || die( $stripe->error );

    Provided with a payment method object, this issue an api call to get the
    list of all payment method.

    Possible parameters are:

    "customer"
        The ID of the customer whose PaymentMethods will be retrieved.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "type"
        Required. A required filter on the list, based on the object "type"
        field.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/list>

  list_customer_payment_methods
        my $obj = $stripe->payment_methods( list_customer_payment_methods => {
            type => "card", } ) || die( $stripe->error );

    Provided with a payment method, or a hash reference, this will issue a
    list_customer_payment_methods api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" PaymentMethods of type "type", starting after PaymentMethods
    "starting_after". Each entry in the array is a separate PaymentMethod
    object. If no more PaymentMethods are available, the resulting array
    will be empty. This request should never return an error.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "type"
        Required. A required filter on the list, based on the object "type"
        field.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/customer_list>

  retrieve
        my $obj = $stripe->payment_methods( retrieve => $args ) || die( $stripe->error );

    Provided with a payment method object or a hash reference, this will
    retrieve a Stripe payment method and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/retrieve>

  retrieve_customer_payment_method
        my $obj = $stripe->payment_methods( retrieve_customer_payment_method => {
            type => "card", } ) || die( $stripe->error );

    Provided with a payment method, or a hash reference, this will issue a
    retrieve_customer_payment_method api call.

    Returns a PaymentMethod object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/customer>

  update
        my $obj = $stripe->payment_methods( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a payment method object or a hash reference, this will
    update a Stripe payment method and return its corresponding object

    Possible parameters are:

    "billing_details"
        Billing information associated with the PaymentMethod that may be
        used or required by particular types of payment methods.

    "card"
        If this is a "card" PaymentMethod, this hash contains the user's
        card details.

    "link"
        If this is an "Link" PaymentMethod, this hash contains details about
        the Link payment method.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "us_bank_account"
        If this is an "us_bank_account" PaymentMethod, this hash contains
        details about the US bank account payment method.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payment_methods/update>

PAYMENT METHODS
    You can create, retrieve, update, list, attach, detach, payment methods.

  attach
    Provided with a Net::API::Stripe::Customer or a
    Net::API::Stripe::Payment::Method object or an hash reference and this
    will attach the Stripe payment method to the given customer and return
    its Net::API::Stripe::Payment::Method object.

    Possible parameters are:

    *id* A Stripe payment method id
    *customer* A Stripe customer id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_methods/attach>

  create
    Provided with a Net::API::Stripe::Payment::Method object or an hash
    reference and this will create a Stripe payment method and return its
    Net::API::Stripe::Payment::Method object.

    Possible parameters are:

    *type* String. Any of card, fpx, ideal or sepa_debit
    *billing_details* An hash reference with the following properties:
    address.city address.country address.line1 address.line2
    address.postal_code address.state email name phone
    *metadata* An arbitrary hash reference
    *card* An hash reference with the following properties: exp_month
    exp_year number cvc
    *fpx* An hash reference with the property *bank*
    *ideal* An hash reference with the property *bank*
    *sepa_debit* An hash reference with the property *iban*

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_methods/create>

  detach
    Provided with a Net::API::Stripe::Customer or a
    Net::API::Stripe::Payment::Method object or an hash reference and this
    will dettach the Stripe payment method from the given customer and
    return its Net::API::Stripe::Payment::Method object.

    Possible parameters are:

    *id* A Stripe payment method id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_methods/detach>

  list
    Provided with an hash reference of parameters, and this will get a list
    of payment methods and return a Net::API::Stripe::List object.

    Possible parameters are:

    *customer* A Stripe customer id
    *type* String. One of card fpx ideal or sepa_debit
    *ending_before* A Stripe payment method id
    *limit* Integer
    *starting_after* A Stripe payment method id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_methods/list>

  retrieve
    Provided with a Net::API::Stripe::Payment::Method object or an hash
    reference and this will retrieve a Stripe payment method and return its
    Net::API::Stripe::Payment::Method object.

    Possible parameters are:

    *id* A Stripe payment method id. This is required

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_methods/retrieve>

  update
    Provided with a Net::API::Stripe::Payment::Method object or an hash
    reference and this will update the Stripe payment method and return its
    Net::API::Stripe::Payment::Method object.

    Possible parameters are:

    *id* A Stripe payment method id. This is required.
    *billing_details* An hash reference with the following properties:
    address.city address.country address.line1 address.line2
    address.postal_code address.state email name phone
    *metadata* An arbitrary hash reference.
    *card* An hash reference with the following properties: exp_month
    exp_year
    *sepa_debit* An hash reference with the following property: iban

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/payment_methods/update>

PAYOUT
    You can cancel, create, list, retrieve, reverse or update payout

  cancel
        my $obj = $stripe->payouts( cancel => $args ) || die( $stripe->error );

    Provided with a payout, or a hash reference, this will issue a cancel
    api call.

    Returns the payout object if the cancellation succeeded. Returns an
    error if the payout has already been canceled or cannot be canceled.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payouts/cancel>

  create
        my $obj = $stripe->payouts( create => {
            amount   => "1100",
            currency => "usd", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Payout object or a hash reference,
    this will create a Stripe payout and return an Net::API::Stripe::Payout
    object.

    Possible parameters are:

    "amount"
        Required. A positive integer in cents representing how much to
        payout.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "destination"
        The ID of a bank account or a card to send the payout to. If no
        destination is supplied, the default external account for the
        specified currency will be used.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "method"
        The method used to send this payout, which can be "standard" or
        "instant". "instant" is only supported for payouts to debit cards.
        (See Instant payouts for marketplaces for more information
        <https://stripe.com/blog/instant-payouts-for-marketplaces).>

    "source_type"
        The balance type of your Stripe balance to draw this payout from.
        Balances for different payment sources are kept separately. You can
        find the amounts with the balances API. One of "bank_account",
        "card", or "fpx".

    "statement_descriptor"
        A string to be displayed on the recipient's bank or card statement.
        This may be at most 22 characters. Attempting to use a
        "statement_descriptor" longer than 22 characters will return an
        error. Note: Most banks will truncate this information and/or
        display it inconsistently. Some may not display it at all.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payouts/create>

  list
        my $obj = $stripe->payouts( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a payout object, this issue an api call to get the list of
    all payout.

    Possible parameters are:

    "arrival_date"
        A filter on the list based on the object "arrival_date" field. The
        value can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "destination"
        The ID of an external account - only return payouts sent to this
        external account.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return payouts that have the given status: "pending", "paid",
        "failed", or "canceled".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payouts/list>

  retrieve
        my $obj = $stripe->payouts( retrieve => $args ) || die( $stripe->error );

    Provided with a payout object or a hash reference, this will retrieve a
    Stripe payout and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payouts/retrieve>

  reverse
        my $obj = $stripe->payouts( reverse => $args ) || die( $stripe->error );

    Provided with a payout, or a hash reference, this will issue a reverse
    api call.

    Returns the reversing payout object if the reversal was successful.
    Returns an error if the payout has already been reversed or cannot be
    reversed.

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payouts/reverse>

  update
        my $obj = $stripe->payouts( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a payout object or a hash reference, this will update a
    Stripe payout and return its corresponding object

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/payouts/update>

PERSON
    You can create, delete, list, retrieve or update person

  create
        my $obj = $stripe->persons( create => {
            first_name => "Jane",
            last_name  => "Diaz", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::Person object or a hash
    reference, this will create a Stripe person and return an
    Net::API::Stripe::Connect::Person object.

    Possible parameters are:

    "address"
        The person's address.

    "address_kana"
        The Kana variation of the person's address (Japan only).

    "address_kanji"
        The Kanji variation of the person's address (Japan only).

    "dob"
        The person's date of birth.

    "documents"
        Documents that may be submitted to satisfy various informational
        requests.

    "email"
        The person's email address.

    "first_name"
        The person's first name.

    "first_name_kana"
        The Kana variation of the person's first name (Japan only).

    "first_name_kanji"
        The Kanji variation of the person's first name (Japan only).

    "full_name_aliases"
        A list of alternate names or aliases that the person is known by.

    "gender"
        The person's gender (International regulations require either "male"
        or "female").

    "id_number"
        The person's ID number, as appropriate for their country. For
        example, a social security number in the U.S., social insurance
        number in Canada, etc. Instead of the number itself, you can also
        provide a PII token provided by Stripe.js
        <https://stripe.com/docs/js/tokens_sources/create_token?type=pii>.

    "id_number_secondary"
        The person's secondary ID number, as appropriate for their country,
        will be used for enhanced verification checks. In Thailand, this
        would be the laser code found on the back of an ID card. Instead of
        the number itself, you can also provide a PII token provided by
        Stripe.js
        <https://stripe.com/docs/js/tokens_sources/create_token?type=pii>.

    "last_name"
        The person's last name.

    "last_name_kana"
        The Kana variation of the person's last name (Japan only).

    "last_name_kanji"
        The Kanji variation of the person's last name (Japan only).

    "maiden_name"
        The person's maiden name.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "nationality"
        The country where the person is a national. Two-letter country code
        (ISO 3166-1 alpha-2
        <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)>, or "XX" if
        unavailable.

    "person_token"
        A person token <https://stripe.com/docs/connect/account-tokens>,
        used to securely provide details to the person.

    "phone"
        The person's phone number.

    "political_exposure"
        Indicates if the person or any of their representatives, family
        members, or other closely related persons, declares that they hold
        or have held an important public job or function, in any
        jurisdiction.

    "registered_address"
        The person's registered address.

    "relationship"
        The relationship that this person has with the account's legal
        entity.

    "ssn_last_4"
        The last four digits of the person's Social Security number (U.S.
        only).

    "verification"
        The person's verification status.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/persons/create>

  delete
        my $obj = $stripe->persons( delete => $args ) || die( $stripe->error );

    Provided with a person, or a hash reference, this will issue an api call
    to Stripe to remove the person. It returns the person object that was
    deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/persons/delete>

  list
        my $obj = $stripe->persons( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a person object, this issue an api call to get the list of
    all person.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "relationship"
        Filters on the list of people returned based on the person's
        relationship to the account's company.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/persons/list>

  retrieve
        my $obj = $stripe->persons( retrieve => $args ) || die( $stripe->error );

    Provided with a person object or a hash reference, this will retrieve a
    Stripe person and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/persons/retrieve>

  update
        my $obj = $stripe->persons( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a person object or a hash reference, this will update a
    Stripe person and return its corresponding object

    Possible parameters are:

    "address"
        The person's address.

    "address_kana"
        The Kana variation of the person's address (Japan only).

    "address_kanji"
        The Kanji variation of the person's address (Japan only).

    "dob"
        The person's date of birth.

    "documents"
        Documents that may be submitted to satisfy various informational
        requests.

    "email"
        The person's email address.

    "first_name"
        The person's first name.

    "first_name_kana"
        The Kana variation of the person's first name (Japan only).

    "first_name_kanji"
        The Kanji variation of the person's first name (Japan only).

    "full_name_aliases"
        A list of alternate names or aliases that the person is known by.

    "gender"
        The person's gender (International regulations require either "male"
        or "female").

    "id_number"
        The person's ID number, as appropriate for their country. For
        example, a social security number in the U.S., social insurance
        number in Canada, etc. Instead of the number itself, you can also
        provide a PII token provided by Stripe.js
        <https://stripe.com/docs/js/tokens_sources/create_token?type=pii>.

    "id_number_secondary"
        The person's secondary ID number, as appropriate for their country,
        will be used for enhanced verification checks. In Thailand, this
        would be the laser code found on the back of an ID card. Instead of
        the number itself, you can also provide a PII token provided by
        Stripe.js
        <https://stripe.com/docs/js/tokens_sources/create_token?type=pii>.

    "last_name"
        The person's last name.

    "last_name_kana"
        The Kana variation of the person's last name (Japan only).

    "last_name_kanji"
        The Kanji variation of the person's last name (Japan only).

    "maiden_name"
        The person's maiden name.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "nationality"
        The country where the person is a national. Two-letter country code
        (ISO 3166-1 alpha-2
        <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)>, or "XX" if
        unavailable.

    "person_token"
        A person token <https://stripe.com/docs/connect/account-tokens>,
        used to securely provide details to the person.

    "phone"
        The person's phone number.

    "political_exposure"
        Indicates if the person or any of their representatives, family
        members, or other closely related persons, declares that they hold
        or have held an important public job or function, in any
        jurisdiction.

    "registered_address"
        The person's registered address.

    "relationship"
        The relationship that this person has with the account's legal
        entity.

    "ssn_last_4"
        The last four digits of the person's Social Security number (U.S.
        only).

    "verification"
        The person's verification status.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/persons/update>

PLAN
    You can create, delete, list, retrieve or update plan

  create
        my $obj = $stripe->plans( create => {
            amount   => "1200",
            currency => "usd",
            interval => "month",
            product  => "prod_MMlLy1NOplKgdo", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Plan object or a hash
    reference, this will create a Stripe plan and return an
    Net::API::Stripe::Billing::Plan object.

    Possible parameters are:

    "active"
        Whether the plan is currently available for new subscriptions.
        Defaults to "true".

    "aggregate_usage"
        Specifies a usage aggregation strategy for plans of
        "usage_type=metered". Allowed values are "sum" for summing up all
        usage during a period, "last_during_period" for using the last usage
        record reported within a period, "last_ever" for using the last
        usage record ever (across period bounds) or "max" which uses the
        usage record with the maximum reported usage during a period.
        Defaults to "sum".

    "amount"
        Required unless billing_scheme=tiered A positive integer in JPY (or
        0 for a free plan) representing how much to charge on a recurring
        basis.

    "amount_decimal"
        Same as "amount", but accepts a decimal value with at most 12
        decimal places. Only one of "amount" and "amount_decimal" can be
        set.

    "billing_scheme"
        Describes how to compute the price per period. Either "per_unit" or
        "tiered". "per_unit" indicates that the fixed amount (specified in
        "amount") will be charged per unit in "quantity" (for plans with
        "usage_type=licensed"), or per unit of total usage (for plans with
        "usage_type=metered"). "tiered" indicates that the unit pricing will
        be computed using a tiering strategy as defined using the "tiers"
        and "tiers_mode" attributes.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "id"
        An identifier randomly generated by Stripe. Used to identify this
        plan when subscribing a customer. You can optionally override this
        ID, but the ID must be unique across all plans in your Stripe
        account. You can, however, use the same plan ID in both live and
        test modes.

    "interval"
        Required. Specifies billing frequency. Either "day", "week", "month"
        or "year".

    "interval_count"
        The number of intervals between subscription billings. For example,
        "interval=month" and "interval_count=3" bills every 3 months.
        Maximum of one year interval allowed (1 year, 12 months, or 52
        weeks).

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "nickname"
        A brief description of the plan, hidden from customers.

    "product"
        Required. The product whose pricing the created plan will represent.
        This can either be the ID of an existing product, or a dictionary
        containing fields used to create a service product
        <https://stripe.com/docs/api#product_object-type>.

    "tiers"
        Required if billing_scheme=tiered Each element represents a pricing
        tier. This parameter requires "billing_scheme" to be set to
        "tiered". See also the documentation for "billing_scheme".

    "tiers_mode"
        Required if billing_scheme=tiered Defines if the tiering price
        should be "graduated" or "volume" based. In "volume"-based tiering,
        the maximum quantity within a period determines the per unit price,
        in "graduated" tiering pricing can successively change as the
        quantity grows.

    "transform_usage"
        Apply a transformation to the reported usage or set quantity before
        computing the billed price. Cannot be combined with "tiers".

    "trial_period_days"
        Default number of trial days when subscribing a customer to this
        plan using "trial_from_plan=true"
        <https://stripe.com/docs/api#create_subscription-trial_from_plan>.

    "usage_type"
        Configures how the quantity per period should be determined. Can be
        either "metered" or "licensed". "licensed" automatically bills the
        "quantity" set when adding it to a subscription. "metered"
        aggregates the total usage based on usage records. Defaults to
        "licensed".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/plans/create>

  delete
        my $obj = $stripe->plans( delete => $args ) || die( $stripe->error );

    Provided with a plan, or a hash reference, this will issue an api call
    to Stripe to remove the plan. It returns the plan object that was
    deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/plans/delete>

  list
        my $obj = $stripe->plans( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a plan object, this issue an api call to get the list of
    all plan.

    Possible parameters are:

    "active"
        Only return plans that are active or inactive (e.g., pass "false" to
        list all inactive plans).

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "product"
        Only return plans for the given product.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/plans/list>

  retrieve
        my $obj = $stripe->plans( retrieve => $args ) || die( $stripe->error );

    Provided with a plan object or a hash reference, this will retrieve a
    Stripe plan and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/plans/retrieve>

  update
        my $obj = $stripe->plans( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a plan object or a hash reference, this will update a
    Stripe plan and return its corresponding object

    Possible parameters are:

    "active"
        Whether the plan is currently available for new subscriptions.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "nickname"
        A brief description of the plan, hidden from customers.

    "product"
        The product the plan belongs to. This cannot be changed once it has
        been used in a subscription or subscription schedule.

    "trial_period_days"
        Default number of trial days when subscribing a customer to this
        plan using "trial_from_plan=true"
        <https://stripe.com/docs/api#create_subscription-trial_from_plan>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/plans/update>

PLANS
    You can create, retrieve, update, list, delete plans.

  create
    Provided with a Net::API::Stripe::Billing::Plan object or an hash
    reference of parameters and this will create a Stripe plan and return
    its Net::API::Stripe::Billing::Plan object.

    Possible parameters are:

    *id* A Stripe plan id (optional)
    *active* Boolean
    *aggregate_usage* String
    *amount* Integer
    *amount_decimal* Decimal
    *billing_scheme* String. One of per_unit or tiered
    *currency* A 3-letter ISO 4217 code such as "jpy" for Japanese Yen or
    "eur" for Euro
    *interval* String. One of day, week, month or year
    *interval_count* Integer
    *metadata* An arbitrary hash reference
    *nickname* String
    *product* A Stripe product id
    *tiers* An hash reference with the following properties: up_to
    flat_amount flat_amount_decimal unit_amount unit_amount_decimal
    *tiers_mode* String. One of graduated or volume
    *transform_usage* An hash reference with the following properties:
    divide_by round
    *trial_period_days* Integer
    *usage_type* String. One of metered|licensed

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/plans/create>

  delete
    Provided with a Net::API::Stripe::Billing::Plan object or an hash
    reference of parameters and this will remove a Stripe plan and return
    its Net::API::Stripe::Billing::Plan object.

    Possible parameters are:

    *id* A Stripe plan id. This is required

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/plans/delete>

  list
    Provided with an hash reference of parameters, this will get the list of
    Stripe plans and return a Net::API::Stripe::List object.

    Possible parameters are:

    *created* Date or unix timestamp
    *email* String. E-mail address
    *ending_before* A Stripe credit note id
    *limit* Integer
    *product* A Stripe product id
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/plans/list>

  retrieve
    Provided with a Net::API::Stripe::Billing::Plan object or an hash
    reference of parameters and this will retrieve a Stripe plan and return
    its Net::API::Stripe::Billing::Plan object.

    Possible parameters are:

    *id* A Stripe plan id

    For more information, see Stripe documentation here:
    <hhttps://stripe.com/docs/api/plans/retrieve>

  update
    Provided with a Net::API::Stripe::Billing::Plan object or an hash
    reference of parameters and this will update a Stripe plan and return
    its Net::API::Stripe::Billing::Plan object.

    Possible parameters are:

    *id* A Stripe plan id (optional)
    *active* Boolean
    *metadata* An arbitrary hash reference
    *nickname* String
    *product* A Stripe product id
    *trial_period_days* Integer

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/plans/update>

PRICE
    You can create, list, retrieve, search or update price

  create
        my $obj = $stripe->prices( create => {
            currency    => "usd",
            product     => "prod_MMlLy1NOplKgdo",
            recurring   =>
            {
                interval => "month",
            }
            unit_amount => "1200", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Price object or a hash reference, this
    will create a Stripe price and return an Net::API::Stripe::Price object.

    Possible parameters are:

    "active"
        Whether the price can be used for new purchases. Defaults to "true".

    "billing_scheme"
        Describes how to compute the price per period. Either "per_unit" or
        "tiered". "per_unit" indicates that the fixed amount (specified in
        "unit_amount" or "unit_amount_decimal") will be charged per unit in
        "quantity" (for prices with "usage_type=licensed"), or per unit of
        total usage (for prices with "usage_type=metered"). "tiered"
        indicates that the unit pricing will be computed using a tiering
        strategy as defined using the "tiers" and "tiers_mode" attributes.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "currency_options"
        Prices defined in each available currency option. Each key must be a
        three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html> and a supported
        currency <https://stripe.com/docs/currencies>. For example, to
        define your price in "eur", pass the fields below in the "eur" key
        of "currency_options".

    "custom_unit_amount"
        Required unless unit_amount is provided When set, provides
        configuration for the amount to be adjusted by the customer during
        Checkout Sessions and Payment Links.

    "lookup_key"
        A lookup key used to retrieve prices dynamically from a static
        string. This may be up to 200 characters.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "nickname"
        A brief description of the price, hidden from customers.

    "product"
        required unless product_data is provided The ID of the product that
        this price will belong to.

    "product_data"
        required unless product is provided These fields can be used to
        create a new product that this price will belong to.

    "recurring"
        The recurring components of a price such as "interval" and
        "usage_type".

    "tax_behavior"
        Specifies whether the price is considered inclusive of taxes or
        exclusive of taxes. One of "inclusive", "exclusive", or
        "unspecified". Once specified as either "inclusive" or "exclusive",
        it cannot be changed.

    "tiers"
        Required if billing_scheme=tiered Each element represents a pricing
        tier. This parameter requires "billing_scheme" to be set to
        "tiered". See also the documentation for "billing_scheme".

    "tiers_mode"
        Required if billing_scheme=tiered Defines if the tiering price
        should be "graduated" or "volume" based. In "volume"-based tiering,
        the maximum quantity within a period determines the per unit price,
        in "graduated" tiering pricing can successively change as the
        quantity grows.

    "transfer_lookup_key"
        If set to true, will atomically remove the lookup key from the
        existing price, and assign it to this price.

    "transform_quantity"
        Apply a transformation to the reported usage or set quantity before
        computing the billed price. Cannot be combined with "tiers".

    "unit_amount"
        Required conditionally A positive integer in JPY (or 0 for a free
        price) representing how much to charge. One of "unit_amount" or
        "custom_unit_amount" is required, unless "billing_scheme=tiered".

    "unit_amount_decimal"
        Same as "unit_amount", but accepts a decimal value in JPY with at
        most 12 decimal places. Only one of "unit_amount" and
        "unit_amount_decimal" can be set.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/prices/create>

  list
        my $obj = $stripe->prices( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a price object, this issue an api call to get the list of
    all price.

    Possible parameters are:

    "active"
        Only return prices that are active or inactive (e.g., pass "false"
        to list all inactive prices).

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "currency"
        Only return prices for the given currency.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "lookup_keys"
        Only return the price with these lookup_keys, if any exist.

    "product"
        Only return prices for the given product.

    "recurring"
        Only return prices with these recurring fields.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "type"
        Only return prices of type "recurring" or "one_time".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/prices/list>

  retrieve
        my $obj = $stripe->prices( retrieve => $args ) || die( $stripe->error );

    Provided with a price object or a hash reference, this will retrieve a
    Stripe price and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/prices/retrieve>

  search
        my $obj = $stripe->prices( search => {
            query => "active:'true' AND metadata['order_id']:'6735'", } ) || die( $stripe->error );

    Provided with a price, or a hash reference, this will issue a search api
    call.

    A dictionary with a "data" property that contains an array of up to
    "limit" prices. If no objects match the query, the resulting array will
    be empty. See the related guide on expanding properties in lists
    <https://stripe.com/docs/expand#lists>.

    Possible parameters are:

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "page"
        A cursor for pagination across multiple pages of results. Don't
        include this parameter on the first call. Use the next_page value
        returned in a previous response to request subsequent results.

    "query"
        Required. The search query string. See search query language
        <https://stripe.com/docs/search#search-query-language> and the list
        of supported query fields for prices
        <https://stripe.com/docs/search#query-fields-for-prices>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/prices/search>

  update
        my $obj = $stripe->prices( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a price object or a hash reference, this will update a
    Stripe price and return its corresponding object

    Possible parameters are:

    "active"
        Whether the price can be used for new purchases. Defaults to "true".

    "currency_options"
        Prices defined in each available currency option. Each key must be a
        three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html> and a supported
        currency <https://stripe.com/docs/currencies>. For example, to
        define your price in "eur", pass the fields below in the "eur" key
        of "currency_options".

    "lookup_key"
        A lookup key used to retrieve prices dynamically from a static
        string. This may be up to 200 characters.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "nickname"
        A brief description of the price, hidden from customers.

    "tax_behavior"
        Specifies whether the price is considered inclusive of taxes or
        exclusive of taxes. One of "inclusive", "exclusive", or
        "unspecified". Once specified as either "inclusive" or "exclusive",
        it cannot be changed.

    "transfer_lookup_key"
        If set to true, will atomically remove the lookup key from the
        existing price, and assign it to this price.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/prices/update>

PRICES
    You can create, retrieve, update, list products

  create
    Provided with a Net::API::Stripe::Price object or an hash reference of
    parameters and this will create a Stripe product and return its
    Net::API::Stripe::Price object

    Possible parameters are:

    *active* boolean
        Whether the price is currently active. Defaults to true.

    *billing_scheme* string
    *currency* String
        Three-letter ISO currency code, in lowercase. Must be a supported
        currency.

    *lookup_key* string
    *metadata* Hash
        Set of key-value pairs 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.

    *nickname* String
        A brief description of the price, hidden from customers.

    *product_data*
        A hash or Net::API::Stripe::Product

    *unit_amount* A number
        A positive integer in JPY (or 0 for a free price) representing how
        much to charge.

        This is required only if *billing-scheme* is set to "perl-unit"

    *recurring*
        The recurring components of a price such as interval and usage_type.

        Possible properties are :

        *interval* string
        *aggregate_usage* string
        *interval_count* number
        *trial_period_days* number
        *usage_type* string

    *tiers* hash
        See Net::API::Stripe::Price for details

    *tiers_mode* string
    *transfer_lookup_key* string
    *transform_quantity* number
    *unit_amount_decimal* number

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/prices/create#create_price>

  list
    Provided with an hash reference of parameters, this will retrieve a list
    of Stripe prices and return a Net::API::Stripe::List object

    Possible parameters are:

    *active* Boolean
    *created* Date or unix timestamp
    *currency* String
    *ending_before* A Stripe credit note id
    *limit* Integer
    *lookup_key* String
    *product* Net::API::String::Product id or object
    *recurring* Hash with "inerval" and "usage_type" properties
    *starting_after* A Stripe credit note id
    *type* String. One of "recurring" or "one_time"

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/prices/list>

  retrieve
    Provided with a Net::API::Stripe::Price object or an hash reference of
    parameters and this will retrieve a Stripe price and return its
    Net::API::Stripe::Price object

    Possible parameters are:

    *id* A Stripe price id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/prices/retrieve#retrieve_price>

  update
    Provided with a Net::API::Stripe::Price object or an hash reference of
    parameters and this will update a Stripe price and return its updated
    Net::API::Stripe::Price object

    As per the Stripe documentation, "After prices are created, you can only
    update their metadata, nickname, and active fields." (see Products and
    Prices <https://stripe.com/docs/billing/prices-guide|>)

    Possible parameters are:

    *id* A Stripe price id
    *active* boolean
        Whether the price is currently active. Defaults to true.

    *lookup_key* string
    *metadata* Hash
        Set of key-value pairs 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.

    *nickname* String
        A brief description of the price, hidden from customers.

    *recurring*
        The recurring components of a price such as interval and usage_type.

        Possible properties are :

        *interval* string
        *aggregate_usage* string
        *interval_count* number
        *trial_period_days* number
        *usage_type* string

    *transfer_lookup_key* string

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/prices/update>

PRODUCT
    You can create, delete, list, retrieve, search or update product

  create
        my $obj = $stripe->products( create => {
            name => "Gold Special", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Product object or a hash reference,
    this will create a Stripe product and return an
    Net::API::Stripe::Product object.

    Possible parameters are:

    "active"
        Whether the product is currently available for purchase. Defaults to
        "true".

    "default_price_data"
        Data used to generate a new Price
        <https://stripe.com/docs/api/prices> object. This Price will be set
        as the default price for this product.

    "description"
        The product's description, meant to be displayable to the customer.
        Use this field to optionally store a long form explanation of the
        product being sold for your own rendering purposes.

    "id"
        An identifier will be randomly generated by Stripe. You can
        optionally override this ID, but the ID must be unique across all
        products in your Stripe account.

    "images"
        A list of up to 8 URLs of images for this product, meant to be
        displayable to the customer.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        Required. The product's name, meant to be displayable to the
        customer.

    "package_dimensions"
        The dimensions of this product for shipping purposes.

    "shippable"
        Whether this product is shipped (i.e., physical goods).

    "statement_descriptor"
        An arbitrary string to be displayed on your customer's credit card
        or bank statement. While most banks display this information
        consistently, some may display it incorrectly or not at all.

        This may be up to 22 characters. The statement description may not
        include "&lt;", "&gt;", "\", """, "'" characters, and will appear on
        your customer's statement in capital letters. Non-ASCII characters
        are automatically stripped. It must contain at least one letter.

    "tax_code"
        A tax code <https://stripe.com/docs/tax/tax-categories> ID.

    "unit_label"
        A label that represents units of this product in Stripe and on
        customers’ receipts and invoices. When set, this will be included in
        associated invoice line item descriptions.

    "url"
        A URL of a publicly-accessible webpage for this product.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/products/create>

  delete
        my $obj = $stripe->products( delete => $args ) || die( $stripe->error );

    Provided with a product, or a hash reference, this will issue an api
    call to Stripe to remove the product. It returns the product object that
    was deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/products/delete>

  list
        my $obj = $stripe->products( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a product object, this issue an api call to get the list
    of all product.

    Possible parameters are:

    "active"
        Only return products that are active or inactive (e.g., pass "false"
        to list all inactive products).

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "ids"
        Only return products with the given IDs. Cannot be used with
        starting_after
        <https://stripe.com/docs/api/products/list#list_products-starting_af
        ter> or ending_before
        <https://stripe.com/docs/api/products/list#list_products-ending_befo
        re>.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "shippable"
        Only return products that can be shipped (i.e., physical, not
        digital products).

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "url"
        Only return products with the given url.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/products/list>

  retrieve
        my $obj = $stripe->products( retrieve => $args ) || die( $stripe->error );

    Provided with a product object or a hash reference, this will retrieve a
    Stripe product and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/products/retrieve>

  search
        my $obj = $stripe->products( search => {
            query => "active:'true' AND metadata['order_id']:'6735'", } ) || die( $stripe->error );

    Provided with a product, or a hash reference, this will issue a search
    api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" products. If no objects match the query, the resulting array
    will be empty. See the related guide on expanding properties in lists
    <https://stripe.com/docs/expand#lists>.

    Possible parameters are:

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "page"
        A cursor for pagination across multiple pages of results. Don't
        include this parameter on the first call. Use the next_page value
        returned in a previous response to request subsequent results.

    "query"
        Required. The search query string. See search query language
        <https://stripe.com/docs/search#search-query-language> and the list
        of supported query fields for products
        <https://stripe.com/docs/search#query-fields-for-products>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/products/search>

  update
        my $obj = $stripe->products( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a product object or a hash reference, this will update a
    Stripe product and return its corresponding object

    Possible parameters are:

    "active"
        Whether the product is available for purchase.

    "default_price"
        The ID of the Price <https://stripe.com/docs/api/prices> object that
        is the default price for this product.

    "description"
        The product's description, meant to be displayable to the customer.
        Use this field to optionally store a long form explanation of the
        product being sold for your own rendering purposes.

    "images"
        A list of up to 8 URLs of images for this product, meant to be
        displayable to the customer.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        The product's name, meant to be displayable to the customer.

    "package_dimensions"
        The dimensions of this product for shipping purposes.

    "shippable"
        Whether this product is shipped (i.e., physical goods).

    "statement_descriptor"
        An arbitrary string to be displayed on your customer's credit card
        or bank statement. While most banks display this information
        consistently, some may display it incorrectly or not at all.

        This may be up to 22 characters. The statement description may not
        include "&lt;", "&gt;", "\", """, "'" characters, and will appear on
        your customer's statement in capital letters. Non-ASCII characters
        are automatically stripped. It must contain at least one letter. May
        only be set if "type=service".

    "tax_code"
        A tax code <https://stripe.com/docs/tax/tax-categories> ID.

    "unit_label"
        A label that represents units of this product in Stripe and on
        customers’ receipts and invoices. When set, this will be included in
        associated invoice line item descriptions. May only be set if
        "type=service".

    "url"
        A URL of a publicly-accessible webpage for this product.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/products/update>

PRODUCTS
    You can create, retrieve, update, list, delete products

  create
    Provided with a Net::API::Stripe::Product object or an hash reference of
    parameters and this will create a Stripe product and return its
    Net::API::Stripe::Product object

    Possible parameters are:

    *id* An id to be used as a Stripe product id
    *active* Boolean
    *attributes* An array of up to 5 elements
    *caption* String
    *deactivate_on* Date or timestamp
    *description* Text
    *images* An array of up to 8 images
    *metadata* An arbitrary of hash reference
    *name* Stripe. Max length of 250 characters
    *package_dimensions* An hash reference with the following properties:
    height, length, weight and width
    *shippable* Boolean
    *statement_descriptor* Text
    *type* String. One of good or service
    *unit_label* String
    *url* An url. For goods

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/service_products/create>

  delete
    Provided with a Net::API::Stripe::Product object or an hash reference of
    parameters and this will remove a Stripe product and return its
    Net::API::Stripe::Product object with its property *deleted* set to
    true.

    Possible parameters are:

    *id* A Stripe product id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/service_products/delete>

  list
    Provided with an hash reference of parameters, this will retrieve a list
    of Stripe products and return a Net::API::Stripe::List object

    Possible parameters are:

    *active* Boolean
    *created* Date or unix timestamp
    *email* String. E-mail address
    *ending_before* A Stripe credit note id
    *ids* An array
    *limit* Integer
    *shippable* Boolean
    *starting_after* A Stripe credit note id
    *type* String. One of service or good
    *url* The product url

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/service_products/list>

  retrieve
    Provided with a Net::API::Stripe::Product object or an hash reference of
    parameters and this will retrieve a Stripe product and return its
    Net::API::Stripe::Product object

    Possible parameters are:

    *id* A Stripe product id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/service_products/retrieve>

  update
    Possible parameters are:

    *id* A Stripe product id
    *active* Boolean
    *attributes* An array of up to 5 elements
    *caption* String
    *deactivate_on* Date or timestamp
    *description* Text
    *images* An array of up to 8 images
    *metadata* An arbitrary of hash reference
    *name* Stripe. Max length of 250 characters
    *package_dimensions* An hash reference with the following properties:
    height, length, weight and width
    *shippable* Boolean
    *statement_descriptor* Text
    *type* String. One of good or service
    *unit_label* String
    *url* An url. For goods

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/service_products/update>

PROMOTION CODE
    You can create, list, retrieve or update promotion code

  create
        my $obj = $stripe->promotion_codes( create => {
            coupon => "Z4OV52SU", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::PromotionCode object or a
    hash reference, this will create a Stripe promotion code and return an
    Net::API::Stripe::Billing::PromotionCode object.

    Possible parameters are:

    "active"
        Whether the promotion code is currently active.

    "code"
        The customer-facing code. Regardless of case, this code must be
        unique across all active promotion codes for a specific customer. If
        left blank, we will generate one automatically.

    "coupon"
        Required. The coupon for this promotion code.

    "customer"
        The customer that this promotion code can be used by. If not set,
        the promotion code can be used by all customers.

    "expires_at"
        The timestamp at which this promotion code will expire. If the
        coupon has specified a "redeems_by", then this value cannot be after
        the coupon's "redeems_by".

    "max_redemptions"
        A positive integer specifying the number of times the promotion code
        can be redeemed. If the coupon has specified a "max_redemptions",
        then this value cannot be greater than the coupon's
        "max_redemptions".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "restrictions"
        Settings that restrict the redemption of the promotion code.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/promotion_codes/create>

  list
        my $obj = $stripe->promotion_codes( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a promotion code object, this issue an api call to get the
    list of all promotion code.

    Possible parameters are:

    "active"
        Filter promotion codes by whether they are active.

    "code"
        Only return promotion codes that have this case-insensitive code.

    "coupon"
        Only return promotion codes for this coupon.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "customer"
        Only return promotion codes that are restricted to this customer.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/promotion_codes/list>

  retrieve
        my $obj = $stripe->promotion_codes( retrieve => $args ) || die( $stripe->error );

    Provided with a promotion code object or a hash reference, this will
    retrieve a Stripe promotion code and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/promotion_codes/retrieve>

  update
        my $obj = $stripe->promotion_codes( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a promotion code object or a hash reference, this will
    update a Stripe promotion code and return its corresponding object

    Possible parameters are:

    "active"
        Whether the promotion code is currently active. A promotion code can
        only be reactivated when the coupon is still valid and the promotion
        code is otherwise redeemable.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "restrictions"
        Settings that restrict the redemption of the promotion code.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/promotion_codes/update>

QUOTE
    You can accept, cancel, create, download, finalize, line_items, lines,
    list, retrieve, update, upfront_line_items or upfront_lines quote

  accept
        my $obj = $stripe->quotes( accept => $args ) || die( $stripe->error );

    Provided with a quote, or a hash reference, this will issue a accept api
    call.

    Returns an accepted quote and creates an invoice, subscription or
    subscription schedule. Returns an error
    <https://stripe.com/docs/api/errors> otherwise.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/accept>

  cancel
        my $obj = $stripe->quotes( cancel => $args ) || die( $stripe->error );

    Provided with a quote, or a hash reference, this will issue a cancel api
    call.

    Returns a canceled quote. Returns an error
    <https://stripe.com/docs/api/errors> otherwise.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/cancel>

  create
        my $obj = $stripe->quotes( create => {
            customer   => "cus_AJ78ZaALpqgiuZ",
            line_items => [,
                price    => "price_1Le1oa2eZvKYlo2CuD7mwpZu",
                quantity => "2",
            ], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Quote object or a hash
    reference, this will create a Stripe quote and return an
    Net::API::Stripe::Billing::Quote object.

    Possible parameters are:

    "application_fee_amount"
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application owner's
        Stripe account. There cannot be any line items with recurring prices
        when using this field.

    "application_fee_percent"
        A non-negative decimal between 0 and 100, with at most two decimal
        places. This represents the percentage of the subscription invoice
        subtotal that will be transferred to the application owner's Stripe
        account. There must be at least 1 line item with a recurring price
        to use this field.

    "automatic_tax"
        Settings for automatic tax lookup for this quote and resulting
        invoices and subscriptions.

    "collection_method"
        Either "charge_automatically", or "send_invoice". When charging
        automatically, Stripe will attempt to pay invoices at the end of the
        subscription cycle or at invoice finalization using the default
        payment method attached to the subscription or customer. When
        sending an invoice, Stripe will email your customer an invoice with
        payment instructions. Defaults to "charge_automatically".

    "customer"
        The customer for which this quote belongs to. A customer is required
        before finalizing the quote. Once specified, it cannot be changed.

    "default_tax_rates"
        The tax rates that will apply to any line item that does not have
        "tax_rates" set.

    "description"
        A description that will be displayed on the quote PDF. If no value
        is passed, the default description configured in your quote template
        settings <https://dashboard.stripe.com/settings/billing/quote> will
        be used.

    "discounts"
        The discounts applied to the quote. You can only set up to one
        discount.

    "expires_at"
        A future timestamp on which the quote will be canceled if in "open"
        or "draft" status. Measured in seconds since the Unix epoch. If no
        value is passed, the default expiration date configured in your
        quote template settings
        <https://dashboard.stripe.com/settings/billing/quote> will be used.

    "footer"
        A footer that will be displayed on the quote PDF. If no value is
        passed, the default footer configured in your quote template
        settings <https://dashboard.stripe.com/settings/billing/quote> will
        be used.

    "from_quote"
        Clone an existing quote. The new quote will be created in
        "status=draft". When using this parameter, you cannot specify any
        other parameters except for "expires_at".

    "header"
        A header that will be displayed on the quote PDF. If no value is
        passed, the default header configured in your quote template
        settings <https://dashboard.stripe.com/settings/billing/quote> will
        be used.

    "invoice_settings"
        All invoices will be billed using the specified settings.

    "line_items"
        A list of line items the customer is being quoted for. Each line
        item includes information about the product, the quantity, and the
        resulting cost.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "on_behalf_of"
        The account on behalf of which to charge.

    "subscription_data"
        When creating a subscription or subscription schedule, the specified
        configuration data will be used. There must be at least one line
        item with a recurring price for a subscription or subscription
        schedule to be created. A subscription schedule is created if
        "subscription_data[effective_date]" is present and in the future,
        otherwise a subscription is created.

    "test_clock"
        ID of the test clock to attach to the quote.

    "transfer_data"
        The data with which to automatically create a Transfer for each of
        the invoices.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/create>

  download
        my $obj = $stripe->quotes( download => $args ) || die( $stripe->error );

    Provided with a quote, or a hash reference, this will issue a download
    api call.

    The PDF file for the quote.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/pdf>

  finalize
        my $obj = $stripe->quotes( finalize => $args ) || die( $stripe->error );

    Provided with a quote, or a hash reference, this will issue a finalize
    api call.

    Returns an open quote. Returns an error
    <https://stripe.com/docs/api/errors> otherwise.

    Possible parameters are:

    "expires_at"
        A future timestamp on which the quote will be canceled if in "open"
        or "draft" status. Measured in seconds since the Unix epoch.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/finalize>

  line_items
        my $obj = $stripe->quotes( line_items => $args ) || die( $stripe->error );

    Provided with a quote, or a hash reference, this will issue a line_items
    api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" quote line items, starting after Line Item "starting_after".
    Each entry in the array is a separate Line Item object. If no more line
    items are available, the resulting array will be empty.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/line_items/list>

  list
        my $obj = $stripe->quotes( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a quote object, this issue an api call to get the list of
    all quote.

    Possible parameters are:

    "customer"
        The ID of the customer whose quotes will be retrieved.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        The status of the quote.

    "test_clock"
        Provides a list of quotes that are associated with the specified
        test clock. The response will not include quotes with test clocks if
        this and the customer parameter is not set.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/list>

  retrieve
        my $obj = $stripe->quotes( retrieve => $args ) || die( $stripe->error );

    Provided with a quote object or a hash reference, this will retrieve a
    Stripe quote and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/retrieve>

  update
        my $obj = $stripe->quotes( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a quote object or a hash reference, this will update a
    Stripe quote and return its corresponding object

    Possible parameters are:

    "application_fee_amount"
        The amount of the application fee (if any) that will be requested to
        be applied to the payment and transferred to the application owner's
        Stripe account. There cannot be any line items with recurring prices
        when using this field.

    "application_fee_percent"
        A non-negative decimal between 0 and 100, with at most two decimal
        places. This represents the percentage of the subscription invoice
        subtotal that will be transferred to the application owner's Stripe
        account. There must be at least 1 line item with a recurring price
        to use this field.

    "automatic_tax"
        Settings for automatic tax lookup for this quote and resulting
        invoices and subscriptions.

    "collection_method"
        Either "charge_automatically", or "send_invoice". When charging
        automatically, Stripe will attempt to pay invoices at the end of the
        subscription cycle or at invoice finalization using the default
        payment method attached to the subscription or customer. When
        sending an invoice, Stripe will email your customer an invoice with
        payment instructions. Defaults to "charge_automatically".

    "customer"
        The customer for which this quote belongs to. A customer is required
        before finalizing the quote. Once specified, it cannot be changed.

    "default_tax_rates"
        The tax rates that will apply to any line item that does not have
        "tax_rates" set.

    "description"
        A description that will be displayed on the quote PDF.

    "discounts"
        The discounts applied to the quote. You can only set up to one
        discount.

    "expires_at"
        A future timestamp on which the quote will be canceled if in "open"
        or "draft" status. Measured in seconds since the Unix epoch.

    "footer"
        A footer that will be displayed on the quote PDF.

    "header"
        A header that will be displayed on the quote PDF.

    "invoice_settings"
        All invoices will be billed using the specified settings.

    "line_items"
        A list of line items the customer is being quoted for. Each line
        item includes information about the product, the quantity, and the
        resulting cost.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "on_behalf_of"
        The account on behalf of which to charge.

    "subscription_data"
        When creating a subscription or subscription schedule, the specified
        configuration data will be used. There must be at least one line
        item with a recurring price for a subscription or subscription
        schedule to be created. A subscription schedule is created if
        "subscription_data[effective_date]" is present and in the future,
        otherwise a subscription is created.

    "transfer_data"
        The data with which to automatically create a Transfer for each of
        the invoices.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/update>

  upfront_line_items
        my $obj = $stripe->quotes( upfront_line_items => $args ) || die( $stripe->error );

    Provided with a quote, or a hash reference, this will issue a
    upfront_line_items api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" upfront line items, starting after Line Item "starting_after".
    Each entry in the array is a separate Line Item object. If no more
    upfront line items are available, the resulting array will be empty.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/quotes/line_items/upfront/list>

RADAR EARLY FRAUD WARNING
    You can list or retrieve radar early fraud warning

  list
        my $obj = $stripe->radar_early_fraud_warnings( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a radar early fraud warning object, this issue an api call
    to get the list of all radar early fraud warning.

    Possible parameters are:

    "charge"
        Only return early fraud warnings for the charge specified by this
        charge ID.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "payment_intent"
        Only return early fraud warnings for charges that were created by
        the PaymentIntent specified by this PaymentIntent ID.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/early_fraud_warnings/list>

  retrieve
        my $obj = $stripe->radar_early_fraud_warnings( retrieve => $args ) || die( $stripe->error );

    Provided with a radar early fraud warning object or a hash reference,
    this will retrieve a Stripe radar early fraud warning and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/early_fraud_warnings/retrieve>

RADAR VALUE LIST
    You can create, delete, list, retrieve or update radar value list

  create
        my $obj = $stripe->radar_value_lists( create => {
            alias     => "custom_ip_blocklist",
            item_type => "ip_address",
            name      => "Custom IP Blocklist", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Fraud::ValueList object or a hash
    reference, this will create a Stripe radar value list and return an
    Net::API::Stripe::Fraud::ValueList object.

    Possible parameters are:

    "alias"
        Required. The name of the value list for use in rules.

    "item_type"
        Type of the items in the value list. One of "card_fingerprint",
        "card_bin", "email", "ip_address", "country", "string",
        "case_sensitive_string", or "customer_id". Use "string" if the item
        type is unknown or mixed.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        Required. The human-readable name of the value list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_lists/create>

  delete
        my $obj = $stripe->radar_value_lists( delete => $args ) || die( $stripe->error );

    Provided with a radar value list, or a hash reference, this will issue
    an api call to Stripe to remove the radar value list. It returns the
    radar value list object that was deleted with its property "deleted" set
    to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_lists/delete>

  list
        my $obj = $stripe->radar_value_lists( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a radar value list object, this issue an api call to get
    the list of all radar value list.

    Possible parameters are:

    "alias"
        The alias used to reference the value list when writing rules.

    "contains"
        A value contained within a value list - returns all value lists
        containing this value.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_lists/list>

  retrieve
        my $obj = $stripe->radar_value_lists( retrieve => $args ) || die( $stripe->error );

    Provided with a radar value list object or a hash reference, this will
    retrieve a Stripe radar value list and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_lists/retrieve>

  update
        my $obj = $stripe->radar_value_lists( update => {
            name => "Updated IP Block List", } ) || die( $stripe->error );

    Provided with a radar value list object or a hash reference, this will
    update a Stripe radar value list and return its corresponding object

    Possible parameters are:

    "alias"
        The name of the value list for use in rules.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "name"
        The human-readable name of the value list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_lists/update>

RADAR VALUE LIST ITEM
    You can create, delete, list or retrieve radar value list item

  create
        my $obj = $stripe->radar_value_list_items( create => {
            value      => "1.2.3.4",
            value_list => "rsl_1Le9F32eZvKYlo2CWsVfMmYL", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Fraud::ValueList::Item object or a
    hash reference, this will create a Stripe radar value list item and
    return an Net::API::Stripe::Fraud::ValueList::Item object.

    Possible parameters are:

    "value"
        Required. The value of the item (whose type must match the type of
        the parent value list).

    "value_list"
        Required. The identifier of the value list which the created item
        will be added to.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_list_items/create>

  delete
        my $obj = $stripe->radar_value_list_items( delete => $args ) || die( $stripe->error );

    Provided with a radar value list item, or a hash reference, this will
    issue an api call to Stripe to remove the radar value list item. It
    returns the radar value list item object that was deleted with its
    property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_list_items/delete>

  list
        my $obj = $stripe->radar_value_list_items( list => {
            limit      => "3",
            value_list => "rsl_1Le9F32eZvKYlo2CWsVfMmYL", } ) || die( $stripe->error );

    Provided with a radar value list item object, this issue an api call to
    get the list of all radar value list item.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "value"
        Return items belonging to the parent list whose value matches the
        specified value (using an "is like" match).

    "value_list"
        Required. Identifier for the parent value list this item belongs to.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_list_items/list>

  retrieve
        my $obj = $stripe->radar_value_list_items( retrieve => $args ) || die( $stripe->error );

    Provided with a radar value list item object or a hash reference, this
    will retrieve a Stripe radar value list item and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/value_list_items/retrieve>

REFUND
    You can cancel, create, list, retrieve or update refund

  cancel
        my $obj = $stripe->refunds( cancel => $args ) || die( $stripe->error );

    Provided with a refund, or a hash reference, this will issue a cancel
    api call.

    Returns the refund object if the cancelation succeeded. This call will
    return an error <https://stripe.com/docs/api/errors> if the refund is
    unable to be canceled.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/refunds/cancel>

  create
        my $obj = $stripe->refunds( create => {
            charge => "ch_3Le9Ez2eZvKYlo2C1rWzICyb", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Refund object or a hash reference,
    this will create a Stripe refund and return an Net::API::Stripe::Refund
    object.

    Possible parameters are:

    "amount"
        A positive integer in *JPY* representing how much of this charge to
        refund. Can refund only up to the remaining, unrefunded amount of
        the charge.

    "charge"
        The identifier of the charge to refund.

    "metadata"
        A set of key-value pairs that you can attach to a "Refund" object.
        This can be useful for storing additional information about the
        refund in a structured format. You can unset individual keys if you
        POST an empty value for that key. You can clear all keys if you POST
        an empty value for "metadata"

    "payment_intent"
        ID of the PaymentIntent to refund.

    "reason"
        String indicating the reason for the refund. If set, possible values
        are "duplicate", "fraudulent", and "requested_by_customer". If you
        believe the charge to be fraudulent, specifying "fraudulent" as the
        reason will add the associated card and email to your block lists
        <https://stripe.com/docs/radar/lists>, and will also help us improve
        our fraud detection algorithms.

    "refund_application_fee"
        Boolean indicating whether the application fee should be refunded
        when refunding this charge. If a full charge refund is given, the
        full application fee will be refunded. Otherwise, the application
        fee will be refunded in an amount proportional to the amount of the
        charge refunded.

        An application fee can be refunded only by the application that
        created the charge.

    "reverse_transfer"
        Boolean indicating whether the transfer should be reversed when
        refunding this charge. The transfer will be reversed proportionally
        to the amount being refunded (either the entire or partial amount).

        A transfer can be reversed only by the application that created the
        charge.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/refunds/create>

  list
        my $obj = $stripe->refunds( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a refund object, this issue an api call to get the list of
    all refund.

    Possible parameters are:

    "charge"
        Only return refunds for the charge specified by this charge ID.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "payment_intent"
        Only return refunds for the PaymentIntent specified by this ID.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/refunds/list>

  retrieve
        my $obj = $stripe->refunds( retrieve => $args ) || die( $stripe->error );

    Provided with a refund object or a hash reference, this will retrieve a
    Stripe refund and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/refunds/retrieve>

  update
        my $obj = $stripe->refunds( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a refund object or a hash reference, this will update a
    Stripe refund and return its corresponding object

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/refunds/update>

REPORTING REPORT RUN
    You can create, list or retrieve reporting report run

  create
        my $obj = $stripe->reporting_report_runs( create => {
            parameters  =>
            {
                interval_end   => "1525132800",
                interval_start => "1522540800",
            }
            report_type => "balance.summary.1", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Reporting::ReportRun object or a hash
    reference, this will create a Stripe reporting report run and return an
    Net::API::Stripe::Reporting::ReportRun object.

    Possible parameters are:

    "parameters"
        Parameters specifying how the report should be run. Different Report
        Types have different required and optional parameters, listed in the
        API Access to Reports
        <https://stripe.com/docs/reporting/statements/api> documentation.

    "report_type"
        Required. The ID of the report type
        <https://stripe.com/docs/reporting/statements/api#report-types> to
        run, such as "balance.summary.1".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/reporting/report_run/create>

  list
        my $obj = $stripe->reporting_report_runs( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a reporting report run object, this issue an api call to
    get the list of all reporting report run.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/reporting/report_run/list>

  retrieve
        my $obj = $stripe->reporting_report_runs( retrieve => $args ) || die( $stripe->error );

    Provided with a reporting report run object or a hash reference, this
    will retrieve a Stripe reporting report run and return its corresponding
    object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/reporting/report_run/retrieve>

REPORTING REPORT TYPE
    You can list or retrieve reporting report type

  list
        my $obj = $stripe->reporting_report_types( list => $args ) || die( $stripe->error );

    Provided with a reporting report type object, this issue an api call to
    get the list of all reporting report type.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/reporting/report_type/list>

  retrieve
        my $obj = $stripe->reporting_report_types( retrieve => $args ) || die( $stripe->error );

    Provided with a reporting report type object or a hash reference, this
    will retrieve a Stripe reporting report type and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/reporting/report_type/retrieve>

REVIEW
    You can approve, list or retrieve review

  approve
        my $obj = $stripe->reviews( approve => $args ) || die( $stripe->error );

    Provided with a review, or a hash reference, this will issue a approve
    api call.

    Returns the approved "Review" object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/reviews/approve>

  list
        my $obj = $stripe->reviews( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a review object, this issue an api call to get the list of
    all review.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/reviews/list>

  retrieve
        my $obj = $stripe->reviews( retrieve => $args ) || die( $stripe->error );

    Provided with a review object or a hash reference, this will retrieve a
    Stripe review and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/radar/reviews/retrieve>

SCHEDULED QUERY RUN
    You can list or retrieve scheduled query run

  list
        my $obj = $stripe->scheduled_query_runs( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a scheduled query run object, this issue an api call to
    get the list of all scheduled query run.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/sigma/scheduled_queries/list>

  retrieve
        my $obj = $stripe->scheduled_query_runs( retrieve => $args ) || die( $stripe->error );

    Provided with a scheduled query run object or a hash reference, this
    will retrieve a Stripe scheduled query run and return its corresponding
    object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/sigma/scheduled_queries/retrieve>

SETUP ATTEMPT
    You can list setup attempt

  list
        my $obj = $stripe->setup_attempts( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a setup attempt object, this issue an api call to get the
    list of all setup attempt.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "setup_intent"
        Required. Only return SetupAttempts created by the SetupIntent
        specified by this ID.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_attempts/list>

SETUP INTENT
    You can cancel, confirm, create, list, retrieve, update, verify or
    verify_microdeposits setup intent

  cancel
        my $obj = $stripe->setup_intents( cancel => $args ) || die( $stripe->error );

    Provided with a setup intent, or a hash reference, this will issue a
    cancel api call.

    Returns a SetupIntent object if the cancellation succeeded. Returns an
    error if the SetupIntent has already been canceled or is not in a
    cancelable state.

    Possible parameters are:

    "cancellation_reason"
        Reason for canceling this SetupIntent. Possible values are
        "abandoned", "requested_by_customer", or "duplicate"

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_intents/cancel>

  confirm
        my $obj = $stripe->setup_intents( confirm => {
            payment_method => "pm_card_visa", } ) || die( $stripe->error );

    Provided with a setup intent, or a hash reference, this will issue a
    confirm api call.

    Returns the resulting SetupIntent after all possible transitions are
    applied.

    Possible parameters are:

    "mandate_data"
        This hash contains details about the Mandate to create

    "payment_method"
        ID of the payment method (a PaymentMethod, Card, or saved Source
        object) to attach to this SetupIntent.

    "payment_method_data"
        When included, this hash creates a PaymentMethod that is set as the
        "payment_method"
        <https://stripe.com/docs/api/setup_intents/object#setup_intent_objec
        t-payment_method> value in the SetupIntent.

    "payment_method_options"
        Payment-method-specific configuration for this SetupIntent.

    "return_url"
        The URL to redirect your customer back to after they authenticate on
        the payment method's app or site. If you'd prefer to redirect to a
        mobile application, you can alternatively supply an application URI
        scheme. This parameter is only used for cards and other
        redirect-based payment methods.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_intents/confirm>

  create
        my $obj = $stripe->setup_intents( create => {
            payment_method_types => [qw( card )], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Payment::Intent::Setup object or a
    hash reference, this will create a Stripe setup intent and return an
    Net::API::Stripe::Payment::Intent::Setup object.

    Possible parameters are:

    "attach_to_self"
        If present, the SetupIntent's payment method will be attached to the
        in-context Stripe Account.

        It can only be used for this Stripe Account’s own money movement
        flows like InboundTransfer and OutboundTransfers. It cannot be set
        to true when setting up a PaymentMethod for a Customer, and defaults
        to false when attaching a PaymentMethod to a Customer.

    "confirm"
        Set to "true" to attempt to confirm this SetupIntent immediately.
        This parameter defaults to "false". If the payment method attached
        is a card, a return_url may be provided in case additional
        authentication is required.

    "customer"
        ID of the Customer this SetupIntent belongs to, if one exists.

        If present, the SetupIntent's payment method will be attached to the
        Customer on successful setup. Payment methods attached to other
        Customers cannot be used with this SetupIntent.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "flow_directions"
        Indicates the directions of money movement for which this payment
        method is intended to be used.

        Include "inbound" if you intend to use the payment method as the
        origin to pull funds from. Include "outbound" if you intend to use
        the payment method as the destination to send funds to. You can
        include both if you intend to use the payment method for both
        purposes.

    "mandate_data"
        This hash contains details about the Mandate to create. This
        parameter can only be used with "confirm=true"
        <https://stripe.com/docs/api/setup_intents/create#create_setup_inten
        t-confirm>.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "on_behalf_of"
        The Stripe account ID for which this SetupIntent is created.

    "payment_method"
        ID of the payment method (a PaymentMethod, Card, or saved Source
        object) to attach to this SetupIntent.

    "payment_method_data"
        When included, this hash creates a PaymentMethod that is set as the
        "payment_method"
        <https://stripe.com/docs/api/setup_intents/object#setup_intent_objec
        t-payment_method> value in the SetupIntent.

    "payment_method_options"
        Payment-method-specific configuration for this SetupIntent.

    "payment_method_types"
        The list of payment method types
        <https://stripe.com/docs/payments/payment-methods/overview> that
        this SetupIntent is allowed to set up. If this is not provided,
        defaults to "[“card”]". Valid payment method types include:
        "acss_debit", "au_becs_debit", "bacs_debit", "bancontact", "blik",
        "boleto", "card", "card_present", "ideal", "link", "sepa_debit",
        "sofort", and "us_bank_account".

    "return_url"
        The URL to redirect your customer back to after they authenticate or
        cancel their payment on the payment method's app or site. If you'd
        prefer to redirect to a mobile application, you can alternatively
        supply an application URI scheme. This parameter can only be used
        with "confirm=true"
        <https://stripe.com/docs/api/setup_intents/create#create_setup_inten
        t-confirm>.

    "single_use"
        If this hash is populated, this SetupIntent will generate a
        single_use Mandate on success.

    "usage"
        Indicates how the payment method is intended to be used in the
        future. If not provided, this value defaults to "off_session".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_intents/create>

  list
        my $obj = $stripe->setup_intents( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a setup intent object, this issue an api call to get the
    list of all setup intent.

    Possible parameters are:

    "attach_to_self"
        If present, the SetupIntent's payment method will be attached to the
        in-context Stripe Account.

        It can only be used for this Stripe Account’s own money movement
        flows like InboundTransfer and OutboundTransfers. It cannot be set
        to true when setting up a PaymentMethod for a Customer, and defaults
        to false when attaching a PaymentMethod to a Customer.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "customer"
        Only return SetupIntents for the customer specified by this customer
        ID.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "payment_method"
        Only return SetupIntents associated with the specified payment
        method.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_intents/list>

  retrieve
        my $obj = $stripe->setup_intents( retrieve => $args ) || die( $stripe->error );

    Provided with a setup intent object or a hash reference, this will
    retrieve a Stripe setup intent and return its corresponding object

    Possible parameters are:

    "client_secret"
        Required. The client secret of the SetupIntent. Required if a
        publishable key is used to retrieve the SetupIntent.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_intents/retrieve>

  update
        my $obj = $stripe->setup_intents( update => {
            metadata =>
            {
                user_id => "3435453",
            } } ) || die( $stripe->error );

    Provided with a setup intent object or a hash reference, this will
    update a Stripe setup intent and return its corresponding object

    Possible parameters are:

    "attach_to_self"
        If present, the SetupIntent's payment method will be attached to the
        in-context Stripe Account.

        It can only be used for this Stripe Account’s own money movement
        flows like InboundTransfer and OutboundTransfers. It cannot be set
        to true when setting up a PaymentMethod for a Customer, and defaults
        to false when attaching a PaymentMethod to a Customer.

    "customer"
        ID of the Customer this SetupIntent belongs to, if one exists.

        If present, the SetupIntent's payment method will be attached to the
        Customer on successful setup. Payment methods attached to other
        Customers cannot be used with this SetupIntent.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "flow_directions"
        Indicates the directions of money movement for which this payment
        method is intended to be used.

        Include "inbound" if you intend to use the payment method as the
        origin to pull funds from. Include "outbound" if you intend to use
        the payment method as the destination to send funds to. You can
        include both if you intend to use the payment method for both
        purposes.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "payment_method"
        ID of the payment method (a PaymentMethod, Card, or saved Source
        object) to attach to this SetupIntent.

    "payment_method_data"
        When included, this hash creates a PaymentMethod that is set as the
        "payment_method"
        <https://stripe.com/docs/api/setup_intents/object#setup_intent_objec
        t-payment_method> value in the SetupIntent.

    "payment_method_options"
        Payment-method-specific configuration for this SetupIntent.

    "payment_method_types"
        The list of payment method types (e.g. card) that this SetupIntent
        is allowed to set up. If this is not provided, defaults to ["card"].

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_intents/update>

  verify_microdeposits
        my $obj = $stripe->setup_intents( verify_microdeposits => $args ) || die( $stripe->error );

    Provided with a setup intent, or a hash reference, this will issue a
    verify_microdeposits api call.

    Returns a SetupIntent object.

    Possible parameters are:

    "amounts"
        Two positive integers, in *cents*, equal to the values of the
        microdeposits sent to the bank account.

    "client_secret"
        Required. The client secret of the SetupIntent.

    "descriptor_code"
        A six-character code starting with SM present in the microdeposit
        sent to the bank account.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/setup_intents/verify_microdeposits>

SETUP INTENTS
    You can create, retrieve, update, confirm or cancel and list setup
    inetnts

  cancel
  confirm
    Confirm that your customer intends to set up the current or provided
    payment method. For example, you would confirm a SetupIntent when a
    customer hits the âSaveâ button on a payment method management page
    on your website.

    If the selected payment method does not require any additional steps
    from the customer, the SetupIntent will transition to the "succeeded"
    status.

    Otherwise, it will transition to the "requires_action" status and
    suggest additional actions via "next_action". If setup fails, the
    SetupIntent will transition to the "requires_payment_method" status.

            =item I<payment_method> optional

            ID of the payment method (a PaymentMethod, Card, or saved Source object) to attach to this SetupIntent.

            =item I<mandate_data> optional

            This hash contains details about the Mandate to create

            =over 8

                =item I<customer_acceptance> required

                =over 12

                    =item type

                    The type of customer acceptance information included with the Mandate. One of C<online> or C<offline>.

                    =item accepted_at optional

                    The time at which the customer accepted the Mandate.

                    =item offline optional hash

                    If this is a Mandate accepted offline, this hash contains details about the offline acceptance.

                    =item online optional hash

                    If this is a Mandate accepted online, this hash contains details about the online acceptance.

                    =over 16

                        =item ip_address required

                        The IP address from which the Mandate was accepted by the customer.

                        =item user_agent required

                        The user agent of the browser from which the Mandate was accepted by the customer.

                    =back

                =back

            =back

            =item I<payment_method_options> optional hash

            Payment-method-specific configuration for this SetupIntent.

            =over 8

                =item acss_debit

                If this is a C<acss_debit> SetupIntent, this sub-hash contains details about the ACSS Debit payment method options.

                =over 12

                    =item currency

                    Three-letter ISO currency code, in lowercase. Must be a supported currency.

                    Possible enum values

                    =over 16

                        =item cad

                        Canadian dollars

                        =item usd

                        US dollars

                    =back

                    =item mandate_options

                    Additional fields for Mandate creation

                    =over 16

                        =item custom_mandate_url

                        A URL for custom mandate text to render during confirmation step. The URL will be rendered with additional GET parameters C<payment_intent> and C<payment_intent_client_secret> when confirming a Payment Intent, or C<setup_intent> and C<setup_intent_client_secret> when confirming a Setup Intent.

                        =item default_for

                        List of Stripe products where this mandate can be selected automatically.

                        Possible enum values

                        =over 20

                            =item invoice

                            Enables payments for Stripe Invoices. âsubscriptionâ must also be provided.

                            =item subscription

                            Enables payments for Stripe Subscriptions. âinvoiceâ must also be provided.

                        =back

                        =item interval_description

                        Description of the mandate interval. Only required if âpayment_scheduleâ parameter is âintervalâ or âcombinedâ.

                        =item payment_schedule

                        Payment schedule for the mandate.

                        Possible enum values

                        =over 20

                            =item interval

                            Payments are initiated at a regular pre-defined interval

                            =item sporadic

                            Payments are initiated sporadically

                            =item combined

                            Payments can be initiated at a pre-defined interval or sporadically

                        =back

                        =item transaction_type

                        Transaction type of the mandate.

                        Possible enum values

                        =over 20

                            =item personal

                            Transactions are made for personal reasons

                            =item business

                            Transactions are made for business reasons

                        =back

                    =back

                    =item verification_method

                    Verification method for the intent

                    Possible enum values

                    =over 16

                        =item automatic

                        Instant verification with fallback to microdeposits.

                        =item instant

                        Instant verification.

                        =item microdeposits

                        Verification using microdeposits.

                    =back

                    =item card

                    Configuration for any card setup attempted on this SetupIntent.

                    =over 16

                        =item request_three_d_secure

                        We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and other requirements. However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Permitted values include: automatic or any. If not provided, defaults to automatic. Read our guide on manually requesting 3D Secure for more information on how this configuration interacts with Radar and our SCA Engine.

                    =back

                    =item sepa_debit

                    If this is a C<sepa_debit> SetupIntent, this sub-hash contains details about the SEPA Debit payment method options.

                    =over 16

                        =item mandate_options

                        Additional fields for Mandate creation

                    =back

                =back

                =item I<return_url> optional

                The URL to redirect your customer back to after they authenticate on the payment methodâs app or site. If youâd prefer to redirect to a mobile application, you can alternatively supply an application URI scheme. This parameter is only used for cards and other redirect-based payment methods.

            =back

  create
    Provided with Net::API::Stripe::Payment::Intent::Setup object or an hash
    reference of parameters, this will create a Stripe setup intent and
    return a Net::API::Stripe::Payment::Intent::Setup object.

    Possible parameters are:

    *confirm* optional.
        Set to true to attempt to confirm this SetupIntent immediately. This
        parameter defaults to false. If the payment method attached is a
        card, a return_url may be provided in case additional authentication
        is required.

    *customer* optional.
        ID of the Customer this SetupIntent belongs to, if one exists.

        If present, the SetupIntentâs payment method will be attached to
        the Customer on successful setup. Payment methods attached to other
        Customers cannot be used with this SetupIntent.

    *description* optional
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    *metadata* hash
        Set of key-value pairs 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.

    *payment_method* optional
        ID of the payment method (a PaymentMethod, Card, or saved Source
        object) to attach to this SetupIntent.

    *payment_method_types* optional
        The list of payment method types that this SetupIntent is allowed to
        set up. If this is not provided, defaults to "[âcardâ]". Valid
        payment method types include: "au_becs_debit", "bancontact", "card",
        "card_present", "ideal", "sepa_debit", and "sofort".

    *usage* optional
        Indicates how the payment method is intended to be used in the
        future. If not provided, this value defaults to "off_session".

        Possible enum values

        on_session
                Use "on_session" if you intend to only reuse the payment
                method when the customer is in your checkout flow.

        off_session
                Use "off_session" if your customer may or may not be in your
                checkout flow.

    *mandate_data* optional hash
        This hash contains details about the Mandate to create. This
        parameter can only be used with "confirm=true".

        customer_acceptance required
                This hash contains details about the customer acceptance of
                the Mandate.

                type        The type of customer acceptance information
                            included with the Mandate. One of online or
                            "offline".

                accepted_at The time at which the customer accepted the
                            Mandate.

                offline     If this is a Mandate accepted offline, this hash
                            contains details about the offline acceptance.

                online      If this is a Mandate accepted online, this hash
                            contains details about the online acceptance.

                            ip_address required
                                            The IP address from which the
                                            Mandate was accepted by the
                                            customer.

                            user_agent required
                                            The user agent of the browser
                                            from which the Mandate was
                                            accepted by the customer.

    *on_behalf_of* optional
        The Stripe account ID for which this SetupIntent is created.

    *payment_method_options* optional hash
        Payment-method-specific configuration for this SetupIntent.

        acss_debit
                If this is a "acss_debit" SetupIntent, this sub-hash
                contains details about the ACSS Debit payment method
                options.

                currency    Three-letter ISO currency code, in lowercase.
                            Must be a supported currency.

                            Possible enum values

                            cad             Canadian dollars

                            usd             US dollars

                mandate_options
                            Additional fields for Mandate creation

                            custom_mandate_url
                                            A URL for custom mandate text to
                                            render during confirmation step.
                                            The URL will be rendered with
                                            additional GET parameters
                                            "payment_intent" and
                                            "payment_intent_client_secret"
                                            when confirming a Payment
                                            Intent, or "setup_intent" and
                                            "setup_intent_client_secret"
                                            when confirming a Setup Intent.

                            default_for     List of Stripe products where
                                            this mandate can be selected
                                            automatically.

                                            Possible enum values

                                            invoice             Enables
                                                                payments for
                                                                Stripe
                                                                Invoices.
                                                                âsubscript
                                                                ionâ must
                                                                also be
                                                                provided.

                                            subscription        Enables
                                                                payments for
                                                                Stripe
                                                                Subscription
                                                                s.
                                                                âinvoiceâ
                                                                 must also
                                                                be provided.

                            interval_description
                                            Description of the mandate
                                            interval. Only required if
                                            âpayment_scheduleâ parameter
                                            is âintervalâ or
                                            âcombinedâ.

                            payment_schedule
                                            Payment schedule for the
                                            mandate.

                                            Possible enum values

                                            interval            Payments are
                                                                initiated at
                                                                a regular
                                                                pre-defined
                                                                interval

                                            sporadic            Payments are
                                                                initiated
                                                                sporadically

                                            combined            Payments can
                                                                be initiated
                                                                at a
                                                                pre-defined
                                                                interval or
                                                                sporadically

                            transaction_type
                                            Transaction type of the mandate.

                                            Possible enum values

                                            personal            Transactions
                                                                are made for
                                                                personal
                                                                reasons

                                            business            Transactions
                                                                are made for
                                                                business
                                                                reasons

                verification_method
                            Verification method for the intent

                            Possible enum values

                            automatic       Instant verification with
                                            fallback to microdeposits.

                            instant         Instant verification.

                            microdeposits   Verification using
                                            microdeposits.

                card        Configuration for any card setup attempted on
                            this SetupIntent.

                            request_three_d_secure
                                            We strongly recommend that you
                                            rely on our SCA Engine to
                                            automatically prompt your
                                            customers for authentication
                                            based on risk level and other
                                            requirements. However, if you
                                            wish to request 3D Secure based
                                            on logic from your own fraud
                                            engine, provide this option.
                                            Permitted values include:
                                            automatic or any. If not
                                            provided, defaults to automatic.
                                            Read our guide on manually
                                            requesting 3D Secure for more
                                            information on how this
                                            configuration interacts with
                                            Radar and our SCA Engine.

                sepa_debit  If this is a "sepa_debit" SetupIntent, this
                            sub-hash contains details about the SEPA Debit
                            payment method options.

                            mandate_options Additional fields for Mandate
                                            creation

        *return_url* optional
                The URL to redirect your customer back to after they
                authenticate or cancel their payment on the payment
                methodâs app or site. If youâd prefer to redirect to a
                mobile application, you can alternatively supply an
                application URI scheme. This parameter can only be used with
                "confirm=true".

        *single_use* optional hash
                If this hash is populated, this SetupIntent will generate a
                single_use Mandate on success.

                amount      Amount the customer is granting permission to
                            collect later. A positive integer representing
                            how much to charge in the smallest currency unit
                            (e.g., 100 cents to charge $1.00 or 100 to
                            charge Â¥100, a zero-decimal currency). The
                            minimum amount is $0.50 US or equivalent in
                            charge currency. The amount value supports up to
                            eight digits (e.g., a value of 99999999 for a
                            USD charge of $999,999.99).

                currency    Three-letter ISO currency code, in lowercase.
                            Must be a supported currency.

  list
  retrieve
    Retrieves the details of a SetupIntent that has previously been created.

    Client-side retrieval using a publishable key is allowed when the
    client_secret is provided in the query string.

    When retrieved with a publishable key, only a subset of properties will
    be returned. Please refer to the SetupIntent object reference for more
    details.

    *client_secret* required if using publishable key
        The client secret of the SetupIntent. Required if a publishable key
        is used to retrieve the SetupIntent.

  update
    *customer* optional
        ID of the Customer this SetupIntent belongs to, if one exists.

        If present, the SetupIntentâs payment method will be attached to
        the Customer on successful setup. Payment methods attached to other
        Customers cannot be used with this SetupIntent.

    *description* optional
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    *metadata* optional hash
        Set of "key-value pairs" 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".

    *payment_method* optional
        ID of the payment method (a PaymentMethod, Card, or saved Source
        object) to attach to this SetupIntent.

    *payment_method_types* optional
        The list of payment method types (e.g. card) that this SetupIntent
        is allowed to set up. If this is not provided, defaults to
        [âcardâ].

    *payment_method_options* optional hash
        Payment-method-specific configuration for this SetupIntent.

        acss_debit
                If this is a "acss_debit" SetupIntent, this sub-hash
                contains details about the ACSS Debit payment method
                options.

                currency    Three-letter ISO currency code, in lowercase.
                            Must be a supported currency.

                            Possible enum values

                            cad             Canadian dollars

                            usd             US dollars

                mandate_options
                            Additional fields for Mandate creation

                            custom_mandate_url
                                            A URL for custom mandate text to
                                            render during confirmation step.
                                            The URL will be rendered with
                                            additional GET parameters
                                            "payment_intent" and
                                            "payment_intent_client_secret"
                                            when confirming a Payment
                                            Intent, or "setup_intent" and
                                            "setup_intent_client_secret"
                                            when confirming a Setup Intent.

                            default_for     List of Stripe products where
                                            this mandate can be selected
                                            automatically.

                                            Possible enum values

                                            invoice             Enables
                                                                payments for
                                                                Stripe
                                                                Invoices.
                                                                âsubscript
                                                                ionâ must
                                                                also be
                                                                provided.

                                            subscription        Enables
                                                                payments for
                                                                Stripe
                                                                Subscription
                                                                s.
                                                                âinvoiceâ
                                                                 must also
                                                                be provided.

                            interval_description
                                            Description of the mandate
                                            interval. Only required if
                                            âpayment_scheduleâ parameter
                                            is âintervalâ or
                                            âcombinedâ.

                            payment_schedule
                                            Payment schedule for the
                                            mandate.

                                            Possible enum values

                                            interval            Payments are
                                                                initiated at
                                                                a regular
                                                                pre-defined
                                                                interval

                                            sporadic            Payments are
                                                                initiated
                                                                sporadically

                                            combined            Payments can
                                                                be initiated
                                                                at a
                                                                pre-defined
                                                                interval or
                                                                sporadically

                            transaction_type
                                            Transaction type of the mandate.

                                            Possible enum values

                                            personal            Transactions
                                                                are made for
                                                                personal
                                                                reasons

                                            business            Transactions
                                                                are made for
                                                                business
                                                                reasons

                verification_method
                            Verification method for the intent

                            Possible enum values

                            automatic       Instant verification with
                                            fallback to microdeposits.

                            instant         Instant verification.

                            microdeposits   Verification using
                                            microdeposits.

                card        Configuration for any card setup attempted on
                            this SetupIntent.

                            request_three_d_secure
                                            We strongly recommend that you
                                            rely on our SCA Engine to
                                            automatically prompt your
                                            customers for authentication
                                            based on risk level and other
                                            requirements. However, if you
                                            wish to request 3D Secure based
                                            on logic from your own fraud
                                            engine, provide this option.
                                            Permitted values include:
                                            automatic or any. If not
                                            provided, defaults to automatic.
                                            Read our guide on manually
                                            requesting 3D Secure for more
                                            information on how this
                                            configuration interacts with
                                            Radar and our SCA Engine.

                sepa_debit  If this is a "sepa_debit" SetupIntent, this
                            sub-hash contains details about the SEPA Debit
                            payment method options.

                            mandate_options Additional fields for Mandate
                                            creation

SHIPPING RATE
    You can create, list, retrieve or update shipping rate

  create
        my $obj = $stripe->shipping_rates( create => {
            display_name => "Ground shipping",
            fixed_amount =>
            {
                amount   => "500",
                currency => "usd",
            }
            type         => "fixed_amount", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Shipping::Rate object or a hash
    reference, this will create a Stripe shipping rate and return an
    Net::API::Stripe::Shipping::Rate object.

    Possible parameters are:

    "delivery_estimate"
        The estimated range for how long shipping will take, meant to be
        displayable to the customer. This will appear on CheckoutSessions.

    "display_name"
        Required. The name of the shipping rate, meant to be displayable to
        the customer. This will appear on CheckoutSessions.

    "fixed_amount"
        Describes a fixed amount to charge for shipping. Must be present if
        type is "fixed_amount".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "tax_behavior"
        Specifies whether the rate is considered inclusive of taxes or
        exclusive of taxes. One of "inclusive", "exclusive", or
        "unspecified".

    "tax_code"
        A tax code <https://stripe.com/docs/tax/tax-categories> ID. The
        Shipping tax code is "txcd_92010001".

    "type"
        required The type of calculation to use on the shipping rate. Can
        only be "fixed_amount" for now.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/shipping_rates/create>

  list
        my $obj = $stripe->shipping_rates( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a shipping rate object, this issue an api call to get the
    list of all shipping rate.

    Possible parameters are:

    "active"
        Only return shipping rates that are active or inactive.

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "currency"
        Only return shipping rates for the given currency.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/shipping_rates/list>

  retrieve
        my $obj = $stripe->shipping_rates( retrieve => $args ) || die( $stripe->error );

    Provided with a shipping rate object or a hash reference, this will
    retrieve a Stripe shipping rate and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/shipping_rates/retrieve>

  update
        my $obj = $stripe->shipping_rates( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a shipping rate object or a hash reference, this will
    update a Stripe shipping rate and return its corresponding object

    Possible parameters are:

    "active"
        Whether the shipping rate can be used for new purchases. Defaults to
        "true".

    "fixed_amount"
        Describes a fixed amount to charge for shipping. Must be present if
        type is "fixed_amount".

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "tax_behavior"
        Specifies whether the rate is considered inclusive of taxes or
        exclusive of taxes. One of "inclusive", "exclusive", or
        "unspecified".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/shipping_rates/update>

SOURCE
    You can attach, create, detach, retrieve or update source

  attach
        my $obj = $stripe->sources( attach => $args ) || die( $stripe->error );

    Provided with a source, or a hash reference, this will issue a attach
    api call.

    Returns the attached Source object.

    Possible parameters are:

    "source"
        Required. The identifier of the source to be attached.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/sources/attach>

  create
        my $obj = $stripe->sources( create => $args ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Payment::Source object or a hash
    reference, this will create a Stripe source and return an
    Net::API::Stripe::Payment::Source object.

    Possible parameters are:

    "amount"
        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.

    "currency"
        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.

    "flow"
        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.

    "mandate"
        Information about a mandate possibility attached to a source object
        (generally for bank debits) as well as its acceptance status.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "owner"
        Information about the owner of the payment instrument that may be
        used or required by particular source types.

    "receiver"
        Optional parameters for the receiver flow. Can be set only if the
        source is a receiver ("flow" is "receiver").

    "redirect"
        Parameters required for the redirect flow. Required if the source is
        authenticated by a redirect ("flow" is "redirect").

    "source_order"
        Information about the items and shipping associated with the source.
        Required for transactional credit (for example Klarna) sources
        before you can charge it.

    "statement_descriptor"
        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.

    "token"
        An optional token used to create the source. When passed, token
        properties will override source parameters.

    "type"
        Required. 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)

    "usage"
        Either "reusable" or "single_use". Whether this source should be
        reusable or not. Some source types may or may not be reusable by
        construction, while others may leave the option at creation. If an
        incompatible value is passed, an error will be returned.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/sources/create>

  detach
        my $obj = $stripe->sources( detach => $args ) || die( $stripe->error );

    Provided with a source, or a hash reference, this will issue a detach
    api call.

    Returns the detached Source object.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/sources/detach>

  retrieve
        my $obj = $stripe->sources( retrieve => $args ) || die( $stripe->error );

    Provided with a source object or a hash reference, this will retrieve a
    Stripe source and return its corresponding object

    Possible parameters are:

    "client_secret"
        The client secret of the source. Required if a publishable key is
        used to retrieve the source.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/sources/retrieve>

  update
        my $obj = $stripe->sources( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a source object or a hash reference, this will update a
    Stripe source and return its corresponding object

    Possible parameters are:

    "amount"
        Amount associated with the source.

    "mandate"
        Information about a mandate possibility attached to a source object
        (generally for bank debits) as well as its acceptance status.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "owner"
        Information about the owner of the payment instrument that may be
        used or required by particular source types.

    "source_order"
        Information about the items and shipping associated with the source.
        Required for transactional credit (for example Klarna) sources
        before you can charge it.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/sources/update>

SOURCES
    You can create, retrieve, update, detach or attach sources

  attach
    Provided with a Net::API::Stripe::Customer object or a
    Net::API::Stripe::Payment::Source object or an hash reference of
    parameters, this will attach a Stripe source to a customer and return a
    Net::API::Stripe::Payment::Source object.

    Possible parameters are:

    *id* A Stripe customer id
    *source* A Stripe source id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/sources/attach>

  create
    Provided with Net::API::Stripe::Payment::Source object or an hash
    reference of parameters, this will create a Stripe source and return a
    Net::API::Stripe::Payment::Source object.

    Possible parameters are:

    *type* String. This is required.
    *amount* Integer
    *currency* A 3-letter iso 4217 code such as "jpy" or "eur"
    *flow* String. One of redirect, receiver, code_verification, none
    *mandate* An hash reference with the following properties: acceptance
    amount currency interval notification_method
    *metadata* An arbitrary hash reference
    *owner* An hash reference with the following properties: address email
    name phone
    *receiver* An hash reference with the following property:
    refund_attributes_method
    *redirect* An hash reference with the following property: return_url
    *source_order* An hash reference with the following properties: items
    shipping
    *statement_descriptor* Text
    *token* String
    *usage* String. One of reusable or single_use

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/sources/create>

  detach
    Provided with a Net::API::Stripe::Customer object or a
    Net::API::Stripe::Payment::Source object or an hash reference of
    parameters, this will detach a Stripe source from the customer and
    return a Net::API::Stripe::Payment::Source object.

    Possible parameters are:

    *id* A Stripe customer id
    *source* A Stripe source id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/sources/detach>

  retrieve
    Provided with Net::API::Stripe::Payment::Source object or an hash
    reference of parameters, this will retrieve a Stripe source and return a
    Net::API::Stripe::Payment::Source object.

    Possible parameters are:

    *id* A Stripe source id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/sources/retrieve>

  update
    Provided with Net::API::Stripe::Payment::Source object or an hash
    reference of parameters, this will update a Stripe source and return a
    Net::API::Stripe::Payment::Source object.

    Possible parameters are:

    *id* A Stripe source id
    *amount* Integer
    *mandate* An hash reference with the following properties: acceptance
    amount currency interval notification_method
    *metadata* An arbitrary hash reference
    *owner* An hash reference with the following properties: address email
    name phone
    *source_order* An hash reference with the following properties: items
    shipping

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/sources/update>

SUBSCRIPTION
    You can cancel, create, delete, delete_discount, list, retrieve, search
    or update subscription

  create
        my $obj = $stripe->subscriptions( create => {
            customer => "cus_AJ78ZaALpqgiuZ",
            items    => [,
                price => "price_1Le1oa2eZvKYlo2CuD7mwpZu",
            ], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Subscription object or a hash
    reference, this will create a Stripe subscription and return an
    Net::API::Stripe::Billing::Subscription object.

    Possible parameters are:

    "add_invoice_items"
        A list of prices and quantities that will generate invoice items
        appended to the next invoice for this subscription. You may pass up
        to 20 items.

    "application_fee_percent"
        A non-negative decimal between 0 and 100, with at most two decimal
        places. This represents the percentage of the subscription invoice
        subtotal that will be transferred to the application owner's Stripe
        account. The request must be made by a platform account on a
        connected account in order to set an application fee percentage. For
        more information, see the application fees documentation
        <https://stripe.com/docs/connect/subscriptions#collecting-fees-on-su
        bscriptions>.

    "automatic_tax"
        Automatic tax settings for this subscription. We recommend you only
        include this parameter when the existing value is being changed.

    "backdate_start_date"
        For new subscriptions, a past timestamp to backdate the
        subscription's start date to. If set, the first invoice will contain
        a proration for the timespan between the start date and the current
        time. Can be combined with trials and the billing cycle anchor.

    "billing_cycle_anchor"
        A future timestamp to anchor the subscription's billing cycle
        <https://stripe.com/docs/subscriptions/billing-cycle>. This is used
        to determine the date of the first full invoice, and, for plans with
        "month" or "year" intervals, the day of the month for subsequent
        invoices. The timestamp is in UTC format.

    "billing_thresholds"
        Define thresholds at which an invoice will be sent, and the
        subscription advanced to a new billing period. Pass an empty string
        to remove previously-defined thresholds.

    "cancel_at"
        A timestamp at which the subscription should cancel. If set to a
        date before the current period ends, this will cause a proration if
        prorations have been enabled using "proration_behavior". If set
        during a future period, this will always cause a proration for that
        period.

    "cancel_at_period_end"
        Boolean indicating whether this subscription should cancel at the
        end of the current period.

    "collection_method"
        Either "charge_automatically", or "send_invoice". When charging
        automatically, Stripe will attempt to pay this subscription at the
        end of the cycle using the default source attached to the customer.
        When sending an invoice, Stripe will email your customer an invoice
        with payment instructions. Defaults to "charge_automatically".

    "coupon"
        The ID of the coupon to apply to this subscription. A coupon applied
        to a subscription will only affect invoices created for that
        particular subscription.

    "currency"
        Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "customer"
        Required. The identifier of the customer to subscribe.

    "days_until_due"
        Number of days a customer has to pay invoices generated by this
        subscription. Valid only for subscriptions where "collection_method"
        is set to "send_invoice".

    "default_payment_method"
        ID of the default payment method for the subscription. It must
        belong to the customer associated with the subscription. This takes
        precedence over "default_source". If neither are set, invoices will
        use the customer's invoice*settings.default*payment_method
        <https://stripe.com/docs/api/customers/object#customer_object-invoic
        e_settings-default_payment_method> or default_source
        <https://stripe.com/docs/api/customers/object#customer_object-defaul
        t_source>.

    "default_source"
        ID of the default payment source for the subscription. It must
        belong to the customer associated with the subscription and be in a
        chargeable state. If "default_payment_method" is also set,
        "default_payment_method" will take precedence. If neither are set,
        invoices will use the customer's
        invoice*settings.default*payment_method
        <https://stripe.com/docs/api/customers/object#customer_object-invoic
        e_settings-default_payment_method> or default_source
        <https://stripe.com/docs/api/customers/object#customer_object-defaul
        t_source>.

    "default_tax_rates"
        The tax rates that will apply to any subscription item that does not
        have "tax_rates" set. Invoices created will have their
        "default_tax_rates" populated from the subscription.

    "description"
        The subscription's description, meant to be displayable to the
        customer. Use this field to optionally store an explanation of the
        subscription for rendering in Stripe surfaces.

    "items"
        required A list of up to 20 subscription items, each with an
        attached price.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "off_session"
        Indicates if a customer is on or off-session while an invoice
        payment is attempted.

    "payment_behavior"
        Use "allow_incomplete" to create subscriptions with
        "status=incomplete" if the first invoice cannot be paid. Creating
        subscriptions with this status allows you to manage scenarios where
        additional user actions are needed to pay a subscription's invoice.
        For example, SCA regulation may require 3DS authentication to
        complete payment. See the SCA Migration Guide
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation> for Billing to learn more. This is the default behavior.

        Use "default_incomplete" to create Subscriptions with
        "status=incomplete" when the first invoice requires payment,
        otherwise start as active. Subscriptions transition to
        "status=active" when successfully confirming the payment intent on
        the first invoice. This allows simpler management of scenarios where
        additional user actions are needed to pay a subscription’s invoice.
        Such as failed payments, SCA regulation
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation>, or collecting a mandate for a bank debit payment method. If
        the payment intent is not confirmed within 23 hours subscriptions
        transition to "status=incomplete_expired", which is a terminal
        state.

        Use "error_if_incomplete" if you want Stripe to return an HTTP 402
        status code if a subscription's first invoice cannot be paid. For
        example, if a payment method requires 3DS authentication due to SCA
        regulation and further user action is needed, this parameter does
        not create a subscription and returns an error instead. This was the
        default behavior for API versions prior to 2019-03-14. See the
        changelog <https://stripe.com/docs/upgrades#2019-03-14> to learn
        more.

        "pending_if_incomplete" is only used with updates and cannot be
        passed when creating a subscription.

    "payment_settings"
        Payment settings to pass to invoices created by the subscription.

    "pending_invoice_item_interval"
        Specifies an interval for how often to bill for any pending invoice
        items. It is analogous to calling Create an invoice
        <https://stripe.com/docs/api#create_invoice> for the given
        subscription at the specified interval.

    "promotion_code"
        The API ID of a promotion code to apply to this subscription. A
        promotion code applied to a subscription will only affect invoices
        created for that particular subscription.

    "proration_behavior"
        Determines how to handle prorations
        <https://stripe.com/docs/subscriptions/billing-cycle#prorations>
        resulting from the "billing_cycle_anchor". If no value is passed,
        the default is "create_prorations".

    "transfer_data"
        If specified, the funds from the subscription's invoices will be
        transferred to the destination and the ID of the resulting transfers
        will be found on the resulting charges.

    "trial_end"
        Unix timestamp representing the end of the trial period the customer
        will get before being charged for the first time. This will always
        overwrite any trials that might apply via a subscribed plan. If set,
        trial_end will override the default trial period of the plan the
        customer is being subscribed to. The special value "now" can be
        provided to end the customer's trial immediately. Can be at most two
        years from "billing_cycle_anchor". See Using trial periods on
        subscriptions <https://stripe.com/docs/billing/subscriptions/trials>
        to learn more.

    "trial_from_plan"
        Indicates if a plan's "trial_period_days" should be applied to the
        subscription. Setting "trial_end" per subscription is preferred, and
        this defaults to "false". Setting this flag to "true" together with
        "trial_end" is not allowed. See Using trial periods on subscriptions
        <https://stripe.com/docs/billing/subscriptions/trials> to learn
        more.

    "trial_period_days"
        Integer representing the number of trial period days before the
        customer is charged for the first time. This will always overwrite
        any trials that might apply via a subscribed plan. See Using trial
        periods on subscriptions
        <https://stripe.com/docs/billing/subscriptions/trials> to learn
        more.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscriptions/create>

  delete
        my $obj = $stripe->subscriptions( delete => $args ) || die( $stripe->error );

    Provided with a subscription, or a hash reference, this will issue an
    api call to Stripe to remove the subscription. It returns the
    subscription object that was deleted with its property "deleted" set to
    true.

    Possible parameters are:

    "invoice_now"
        Will generate a final invoice that invoices for any un-invoiced
        metered usage and new/pending proration invoice items.

    "prorate"
        Will generate a proration invoice item that credits remaining unused
        time until the subscription period end.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscriptions/cancel>

  list
        my $obj = $stripe->subscriptions( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a subscription object, this issue an api call to get the
    list of all subscription.

    Possible parameters are:

    "collection_method"
        The collection method of the subscriptions to retrieve. Either
        "charge_automatically" or "send_invoice".

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "current_period_end"
        A filter on the list based on the object "current_period_end" field.
        The value can be a string with an integer Unix timestamp, or it can
        be a dictionary with the following options:

    "current_period_start"
        A filter on the list based on the object "current_period_start"
        field. The value can be a string with an integer Unix timestamp, or
        it can be a dictionary with the following options:

    "customer"
        The ID of the customer whose subscriptions will be retrieved.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "price"
        Filter for subscriptions that contain this recurring price ID.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        The status of the subscriptions to retrieve. Passing in a value of
        "canceled" will return all canceled subscriptions, including those
        belonging to deleted customers. Pass "ended" to find subscriptions
        that are canceled and subscriptions that are expired due to
        incomplete payment
        <https://stripe.com/docs/billing/subscriptions/overview#subscription
        -statuses>. Passing in a value of "all" will return subscriptions of
        all statuses. If no value is supplied, all subscriptions that have
        not been canceled are returned.

    "test_clock"
        Filter for subscriptions that are associated with the specified test
        clock. The response will not include subscriptions with test clocks
        if this and the customer parameter is not set.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscriptions/list>

  retrieve
        my $obj = $stripe->subscriptions( retrieve => $args ) || die( $stripe->error );

    Provided with a subscription object or a hash reference, this will
    retrieve a Stripe subscription and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscriptions/retrieve>

  search
        my $obj = $stripe->subscriptions( search => {
            query => "status:'active' AND metadata['order_id']:'6735'", } ) || die( $stripe->error );

    Provided with a subscription, or a hash reference, this will issue a
    search api call.

    A dictionary with a "data" property that contains an array of up to
    "limit" subscriptions. If no objects match the query, the resulting
    array will be empty. See the related guide on expanding properties in
    lists <https://stripe.com/docs/expand#lists>.

    Possible parameters are:

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "page"
        A cursor for pagination across multiple pages of results. Don't
        include this parameter on the first call. Use the next_page value
        returned in a previous response to request subsequent results.

    "query"
        Required. The search query string. See search query language
        <https://stripe.com/docs/search#search-query-language> and the list
        of supported query fields for subscriptions
        <https://stripe.com/docs/search#query-fields-for-subscriptions>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscriptions/search>

  update
        my $obj = $stripe->subscriptions( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a subscription object or a hash reference, this will
    update a Stripe subscription and return its corresponding object

    Possible parameters are:

    "add_invoice_items"
        A list of prices and quantities that will generate invoice items
        appended to the next invoice for this subscription. You may pass up
        to 20 items.

    "application_fee_percent"
        A non-negative decimal between 0 and 100, with at most two decimal
        places. This represents the percentage of the subscription invoice
        subtotal that will be transferred to the application owner's Stripe
        account. The request must be made by a platform account on a
        connected account in order to set an application fee percentage. For
        more information, see the application fees documentation
        <https://stripe.com/docs/connect/subscriptions#collecting-fees-on-su
        bscriptions>.

    "automatic_tax"
        Automatic tax settings for this subscription. We recommend you only
        include this parameter when the existing value is being changed.

    "billing_cycle_anchor"
        Either "now" or "unchanged". Setting the value to "now" resets the
        subscription's billing cycle anchor to the current time (in UTC).
        For more information, see the billing cycle documentation
        <https://stripe.com/docs/billing/subscriptions/billing-cycle>.

    "billing_thresholds"
        Define thresholds at which an invoice will be sent, and the
        subscription advanced to a new billing period. Pass an empty string
        to remove previously-defined thresholds.

    "cancel_at"
        A timestamp at which the subscription should cancel. If set to a
        date before the current period ends, this will cause a proration if
        prorations have been enabled using "proration_behavior". If set
        during a future period, this will always cause a proration for that
        period.

    "cancel_at_period_end"
        Boolean indicating whether this subscription should cancel at the
        end of the current period.

    "collection_method"
        Either "charge_automatically", or "send_invoice". When charging
        automatically, Stripe will attempt to pay this subscription at the
        end of the cycle using the default source attached to the customer.
        When sending an invoice, Stripe will email your customer an invoice
        with payment instructions. Defaults to "charge_automatically".

    "coupon"
        The ID of the coupon to apply to this subscription. A coupon applied
        to a subscription will only affect invoices created for that
        particular subscription.

    "days_until_due"
        Number of days a customer has to pay invoices generated by this
        subscription. Valid only for subscriptions where "collection_method"
        is set to "send_invoice".

    "default_payment_method"
        ID of the default payment method for the subscription. It must
        belong to the customer associated with the subscription. This takes
        precedence over "default_source". If neither are set, invoices will
        use the customer's invoice*settings.default*payment_method
        <https://stripe.com/docs/api/customers/object#customer_object-invoic
        e_settings-default_payment_method> or default_source
        <https://stripe.com/docs/api/customers/object#customer_object-defaul
        t_source>.

    "default_source"
        ID of the default payment source for the subscription. It must
        belong to the customer associated with the subscription and be in a
        chargeable state. If "default_payment_method" is also set,
        "default_payment_method" will take precedence. If neither are set,
        invoices will use the customer's
        invoice*settings.default*payment_method
        <https://stripe.com/docs/api/customers/object#customer_object-invoic
        e_settings-default_payment_method> or default_source
        <https://stripe.com/docs/api/customers/object#customer_object-defaul
        t_source>.

    "default_tax_rates"
        The tax rates that will apply to any subscription item that does not
        have "tax_rates" set. Invoices created will have their
        "default_tax_rates" populated from the subscription. Pass an empty
        string to remove previously-defined tax rates.

    "description"
        The subscription's description, meant to be displayable to the
        customer. Use this field to optionally store an explanation of the
        subscription for rendering in Stripe surfaces.

    "items"
        A list of up to 20 subscription items, each with an attached price.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "off_session"
        Indicates if a customer is on or off-session while an invoice
        payment is attempted.

    "pause_collection"
        If specified, payment collection for this subscription will be
        paused.

    "payment_behavior"
        Use "allow_incomplete" to transition the subscription to
        "status=past_due" if a payment is required but cannot be paid. This
        allows you to manage scenarios where additional user actions are
        needed to pay a subscription's invoice. For example, SCA regulation
        may require 3DS authentication to complete payment. See the SCA
        Migration Guide
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation> for Billing to learn more. This is the default behavior.

        Use "default_incomplete" to transition the subscription to
        "status=past_due" when payment is required and await explicit
        confirmation of the invoice's payment intent. This allows simpler
        management of scenarios where additional user actions are needed to
        pay a subscription’s invoice. Such as failed payments, SCA
        regulation
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation>, or collecting a mandate for a bank debit payment method.

        Use "pending_if_incomplete" to update the subscription using pending
        updates
        <https://stripe.com/docs/billing/subscriptions/pending-updates>.
        When you use "pending_if_incomplete" you can only pass the
        parameters supported by pending updates
        <https://stripe.com/docs/billing/pending-updates-reference#supported
        -attributes>.

        Use "error_if_incomplete" if you want Stripe to return an HTTP 402
        status code if a subscription's invoice cannot be paid. For example,
        if a payment method requires 3DS authentication due to SCA
        regulation and further user action is needed, this parameter does
        not update the subscription and returns an error instead. This was
        the default behavior for API versions prior to 2019-03-14. See the
        changelog <https://stripe.com/docs/upgrades#2019-03-14> to learn
        more.

    "payment_settings"
        Payment settings to pass to invoices created by the subscription.

    "pending_invoice_item_interval"
        Specifies an interval for how often to bill for any pending invoice
        items. It is analogous to calling Create an invoice
        <https://stripe.com/docs/api#create_invoice> for the given
        subscription at the specified interval.

    "promotion_code"
        The promotion code to apply to this subscription. A promotion code
        applied to a subscription will only affect invoices created for that
        particular subscription.

    "proration_behavior"
        Determines how to handle prorations
        <https://stripe.com/docs/subscriptions/billing-cycle#prorations>
        when the billing cycle changes (e.g., when switching plans,
        resetting "billing_cycle_anchor=now", or starting a trial), or if an
        item's "quantity" changes.

    "proration_date"
        If set, the proration will be calculated as though the subscription
        was updated at the given time. This can be used to apply exactly the
        same proration that was previewed with upcoming invoice
        <https://stripe.com#retrieve_customer_invoice> endpoint. It can also
        be used to implement custom proration logic, such as prorating by
        day instead of by second, by providing the time that you wish to use
        for proration calculations.

    "transfer_data"
        If specified, the funds from the subscription's invoices will be
        transferred to the destination and the ID of the resulting transfers
        will be found on the resulting charges. This will be unset if you
        POST an empty value.

    "trial_end"
        Unix timestamp representing the end of the trial period the customer
        will get before being charged for the first time. This will always
        overwrite any trials that might apply via a subscribed plan. If set,
        trial_end will override the default trial period of the plan the
        customer is being subscribed to. The special value "now" can be
        provided to end the customer's trial immediately. Can be at most two
        years from "billing_cycle_anchor".

    "trial_from_plan"
        Indicates if a plan's "trial_period_days" should be applied to the
        subscription. Setting "trial_end" per subscription is preferred, and
        this defaults to "false". Setting this flag to "true" together with
        "trial_end" is not allowed. See Using trial periods on subscriptions
        <https://stripe.com/docs/billing/subscriptions/trials> to learn
        more.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscriptions/update>

SUBSCRIPTION ITEM
    You can create, delete, list, retrieve or update subscription item

  create
        my $obj = $stripe->subscription_items( create => {
            price        => "price_1Le1oa2eZvKYlo2CuD7mwpZu",
            quantity     => "2",
            subscription => "sub_1LduLW2eZvKYlo2CkXEi23Ew", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Subscription::Item object or
    a hash reference, this will create a Stripe subscription item and return
    an Net::API::Stripe::Billing::Subscription::Item object.

    Possible parameters are:

    "billing_thresholds"
        Define thresholds at which an invoice will be sent, and the
        subscription advanced to a new billing period. When updating, pass
        an empty string to remove previously-defined thresholds.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "payment_behavior"
        Use "allow_incomplete" to transition the subscription to
        "status=past_due" if a payment is required but cannot be paid. This
        allows you to manage scenarios where additional user actions are
        needed to pay a subscription's invoice. For example, SCA regulation
        may require 3DS authentication to complete payment. See the SCA
        Migration Guide
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation> for Billing to learn more. This is the default behavior.

        Use "default_incomplete" to transition the subscription to
        "status=past_due" when payment is required and await explicit
        confirmation of the invoice's payment intent. This allows simpler
        management of scenarios where additional user actions are needed to
        pay a subscription’s invoice. Such as failed payments, SCA
        regulation
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation>, or collecting a mandate for a bank debit payment method.

        Use "pending_if_incomplete" to update the subscription using pending
        updates
        <https://stripe.com/docs/billing/subscriptions/pending-updates>.
        When you use "pending_if_incomplete" you can only pass the
        parameters supported by pending updates
        <https://stripe.com/docs/billing/pending-updates-reference#supported
        -attributes>.

        Use "error_if_incomplete" if you want Stripe to return an HTTP 402
        status code if a subscription's invoice cannot be paid. For example,
        if a payment method requires 3DS authentication due to SCA
        regulation and further user action is needed, this parameter does
        not update the subscription and returns an error instead. This was
        the default behavior for API versions prior to 2019-03-14. See the
        changelog <https://stripe.com/docs/upgrades#2019-03-14> to learn
        more.

    "price"
        The ID of the price object.

    "price_data"
        Data used to generate a new Price
        <https://stripe.com/docs/api/prices> object inline.

    "proration_behavior"
        Determines how to handle prorations
        <https://stripe.com/docs/subscriptions/billing-cycle#prorations>
        when the billing cycle changes (e.g., when switching plans,
        resetting "billing_cycle_anchor=now", or starting a trial), or if an
        item's "quantity" changes.

    "proration_date"
        If set, the proration will be calculated as though the subscription
        was updated at the given time. This can be used to apply the same
        proration that was previewed with the upcoming invoice
        <https://stripe.com#retrieve_customer_invoice> endpoint.

    "quantity"
        The quantity you'd like to apply to the subscription item you're
        creating.

    "subscription"
        Required. The identifier of the subscription to modify.

    "tax_rates"
        A list of Tax Rate <https://stripe.com/docs/api/tax_rates> ids.
        These Tax Rates will override the "default_tax_rates"
        <https://stripe.com/docs/api/subscriptions/create#create_subscriptio
        n-default_tax_rates> on the Subscription. When updating, pass an
        empty string to remove previously-defined tax rates.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_items/create>

  delete
        my $obj = $stripe->subscription_items( delete => $args ) || die( $stripe->error );

    Provided with a subscription item, or a hash reference, this will issue
    an api call to Stripe to remove the subscription item. It returns the
    subscription item object that was deleted with its property "deleted"
    set to true.

    Possible parameters are:

    "clear_usage"
        Delete all usage for the given subscription item. Allowed only when
        the current plan's "usage_type" is "metered".

    "proration_behavior"
        Determines how to handle prorations
        <https://stripe.com/docs/subscriptions/billing-cycle#prorations>
        when the billing cycle changes (e.g., when switching plans,
        resetting "billing_cycle_anchor=now", or starting a trial), or if an
        item's "quantity" changes.

    "proration_date"
        If set, the proration will be calculated as though the subscription
        was updated at the given time. This can be used to apply the same
        proration that was previewed with the upcoming invoice
        <https://stripe.com#retrieve_customer_invoice> endpoint.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_items/delete>

  list
        my $obj = $stripe->subscription_items( list => {
            subscription => "sub_1LduLW2eZvKYlo2CkXEi23Ew", } ) || die( $stripe->error );

    Provided with a subscription item object, this issue an api call to get
    the list of all subscription item.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "subscription"
        Required. The ID of the subscription whose items will be retrieved.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_items/list>

  retrieve
        my $obj = $stripe->subscription_items( retrieve => $args ) || die( $stripe->error );

    Provided with a subscription item object or a hash reference, this will
    retrieve a Stripe subscription item and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_items/retrieve>

  update
        my $obj = $stripe->subscription_items( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a subscription item object or a hash reference, this will
    update a Stripe subscription item and return its corresponding object

    Possible parameters are:

    "billing_thresholds"
        Define thresholds at which an invoice will be sent, and the
        subscription advanced to a new billing period. When updating, pass
        an empty string to remove previously-defined thresholds.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "off_session"
        Indicates if a customer is on or off-session while an invoice
        payment is attempted.

    "payment_behavior"
        Use "allow_incomplete" to transition the subscription to
        "status=past_due" if a payment is required but cannot be paid. This
        allows you to manage scenarios where additional user actions are
        needed to pay a subscription's invoice. For example, SCA regulation
        may require 3DS authentication to complete payment. See the SCA
        Migration Guide
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation> for Billing to learn more. This is the default behavior.

        Use "default_incomplete" to transition the subscription to
        "status=past_due" when payment is required and await explicit
        confirmation of the invoice's payment intent. This allows simpler
        management of scenarios where additional user actions are needed to
        pay a subscription’s invoice. Such as failed payments, SCA
        regulation
        <https://stripe.com/docs/billing/migration/strong-customer-authentic
        ation>, or collecting a mandate for a bank debit payment method.

        Use "pending_if_incomplete" to update the subscription using pending
        updates
        <https://stripe.com/docs/billing/subscriptions/pending-updates>.
        When you use "pending_if_incomplete" you can only pass the
        parameters supported by pending updates
        <https://stripe.com/docs/billing/pending-updates-reference#supported
        -attributes>.

        Use "error_if_incomplete" if you want Stripe to return an HTTP 402
        status code if a subscription's invoice cannot be paid. For example,
        if a payment method requires 3DS authentication due to SCA
        regulation and further user action is needed, this parameter does
        not update the subscription and returns an error instead. This was
        the default behavior for API versions prior to 2019-03-14. See the
        changelog <https://stripe.com/docs/upgrades#2019-03-14> to learn
        more.

    "price"
        The ID of the price object. When changing a subscription item's
        price, "quantity" is set to 1 unless a "quantity" parameter is
        provided.

    "price_data"
        Data used to generate a new Price
        <https://stripe.com/docs/api/prices> object inline.

    "proration_behavior"
        Determines how to handle prorations
        <https://stripe.com/docs/subscriptions/billing-cycle#prorations>
        when the billing cycle changes (e.g., when switching plans,
        resetting "billing_cycle_anchor=now", or starting a trial), or if an
        item's "quantity" changes.

    "proration_date"
        If set, the proration will be calculated as though the subscription
        was updated at the given time. This can be used to apply the same
        proration that was previewed with the upcoming invoice
        <https://stripe.com#retrieve_customer_invoice> endpoint.

    "quantity"
        The quantity you'd like to apply to the subscription item you're
        creating.

    "tax_rates"
        A list of Tax Rate <https://stripe.com/docs/api/tax_rates> ids.
        These Tax Rates will override the "default_tax_rates"
        <https://stripe.com/docs/api/subscriptions/create#create_subscriptio
        n-default_tax_rates> on the Subscription. When updating, pass an
        empty string to remove previously-defined tax rates.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_items/update>

SUBSCRIPTION SCHEDULE
    You can cancel, create, list, release, retrieve or update subscription
    schedule

  cancel
        my $obj = $stripe->subscription_schedules( cancel => $args ) || die( $stripe->error );

    Provided with a subscription schedule, or a hash reference, this will
    issue a cancel api call.

    The canceled "subscription_schedule" object. Its status will be
    "canceled" and "canceled_at" will be the current time.

    Possible parameters are:

    "invoice_now"
        If the subscription schedule is "active", indicates if a final
        invoice will be generated that contains any un-invoiced metered
        usage and new/pending proration invoice items. Defaults to "true".

    "prorate"
        If the subscription schedule is "active", indicates if the
        cancellation should be prorated. Defaults to "true".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_schedules/cancel>

  create
        my $obj = $stripe->subscription_schedules( create => {
            customer     => "cus_AJ78ZaALpqgiuZ",
            end_behavior => "release",
            phases       => [,
                items      => [,
                    price    => "plan_JiX4v6L7JY0Vyt",
                    quantity => "1",
                ],
                iterations => "12",
            ],
            start_date   => "1662865884", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::Subscription::Schedule object
    or a hash reference, this will create a Stripe subscription schedule and
    return an Net::API::Stripe::Billing::Subscription::Schedule object.

    Possible parameters are:

    "customer"
        The identifier of the customer to create the subscription schedule
        for.

    "default_settings"
        Object representing the subscription schedule's default settings.

    "end_behavior"
        Configures how the subscription schedule behaves when it ends.
        Possible values are "release" or "cancel" with the default being
        "release". "release" will end the subscription schedule and keep the
        underlying subscription running."cancel" will end the subscription
        schedule and cancel the underlying subscription.

    "from_subscription"
        Migrate an existing subscription to be managed by a subscription
        schedule. If this parameter is set, a subscription schedule will be
        created using the subscription's item(s), set to auto-renew using
        the subscription's interval. When using this parameter, other
        parameters (such as phase values) cannot be set. To create a
        subscription schedule with other modifications, we recommend making
        two separate API calls.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "phases"
        List representing phases of the subscription schedule. Each phase
        can be customized to have different durations, plans, and coupons.
        If there are multiple phases, the "end_date" of one phase will
        always equal the "start_date" of the next phase.

    "start_date"
        When the subscription schedule starts. We recommend using "now" so
        that it starts the subscription immediately. You can also use a Unix
        timestamp to backdate the subscription so that it starts on a past
        date, or set a future date for the subscription to start on.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_schedules/create>

  list
        my $obj = $stripe->subscription_schedules( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a subscription schedule object, this issue an api call to
    get the list of all subscription schedule.

    Possible parameters are:

    "canceled_at"
        A filter on the list based on the object "canceled_at" field. The
        value can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "completed_at"
        A filter on the list based on the object "completed_at" field. The
        value can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "customer"
        Only return subscription schedules for the given customer.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "released_at"
        A filter on the list based on the object "released_at" field. The
        value can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "scheduled"
        Only return subscription schedules that have not started yet.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_schedules/list>

  release
        my $obj = $stripe->subscription_schedules( release => $args ) || die( $stripe->error );

    Provided with a subscription schedule, or a hash reference, this will
    issue a release api call.

    The released "subscription_schedule" object. Its status will be
    "released", "released_at" will be the current time, and
    "released_subscription" will be the ID of the subscription the
    subscription schedule managed prior to being released.

    Possible parameters are:

    "preserve_cancel_date"
        Keep any cancellation on the subscription that the schedule has set

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_schedules/release>

  retrieve
        my $obj = $stripe->subscription_schedules( retrieve => $args ) || die( $stripe->error );

    Provided with a subscription schedule object or a hash reference, this
    will retrieve a Stripe subscription schedule and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_schedules/retrieve>

  update
        my $obj = $stripe->subscription_schedules( update => {
            end_behavior => "release", } ) || die( $stripe->error );

    Provided with a subscription schedule object or a hash reference, this
    will update a Stripe subscription schedule and return its corresponding
    object

    Possible parameters are:

    "default_settings"
        Object representing the subscription schedule's default settings.

    "end_behavior"
        Configures how the subscription schedule behaves when it ends.
        Possible values are "release" or "cancel" with the default being
        "release". "release" will end the subscription schedule and keep the
        underlying subscription running."cancel" will end the subscription
        schedule and cancel the underlying subscription.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "phases"
        List representing phases of the subscription schedule. Each phase
        can be customized to have different durations, plans, and coupons.
        If there are multiple phases, the "end_date" of one phase will
        always equal the "start_date" of the next phase. Note that past
        phases can be omitted.

    "proration_behavior"
        If the update changes the current phase, indicates whether the
        changes should be prorated. The default value is
        "create_prorations".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/subscription_schedules/update>

SUBSCRIPTION SCHEDULES
    You can create, retrieve, update, list, cancel or release schedules

  cancel
    Provided with a Net::API::Stripe::Billing::Subscription::Schedule object
    or an hash reference of parameters and this will cancel a Stripe
    subscription schedule and return a
    Net::API::Stripe::Billing::Subscription::Schedule object.

    Possible parameters are:

    *id* A Stripe subscription schedule. This is required.
    *invoice_now* Boolean
    *prorate* Boolean

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscription_schedules/cancel>

  create
    Provided with a Net::API::Stripe::Billing::Subscription::Schedule object
    or an hash reference of parameters and this will create a Stripe
    subscription schedule and return a
    Net::API::Stripe::Billing::Subscription::Schedule object.

    Possible parameters are:

    *customer* A Stripe customer id
    *default_settings* An hash reference with the following properties:

        billing_thresholds.amount_gte
        billing_thresholds.reset_billing_cycle_anchor
        collection_method
        default_payment_method
        invoice_settings.days_until_due

    *end_behavior* String. One of release or cancel
    *from_subscription* Stripe subscription id
    *metadata* An aribitrary hash reference
    *phases* An array of hash reference with following properties:

        plan
        price
        application_fee_percent
        billing_thresholds
        collection_method
        coupon
        default_payment_method
        default_tax_rates
        end_date
        invoice_settings
        iterations
        tax_percent
        trial
        trial_end

    *start_date* Date or timestamp or the word 'now'

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscription_schedules/create>

  list
    Provided with an hash reference of parameters this will get the list of
    subscription schedules and return a Net::API::Stripe::List object

    Possible parameters are:

    *canceled_at* Unix timestamp
    *completed_at* Unix timestamp
    *created* Unix timestamp
    *customer* A Stripe customer id
    *email* String. E-mail address
    *ending_before* A Stripe subscription schedule id
    *limit* Integer
    *released_at* Unix timestamp
    *scheduled* Boolean
    *starting_after* A Stripe subscription schedule id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscription_schedules/list>

  release
    Provided with a Net::API::Stripe::Billing::Subscription::Schedule object
    or an hash reference of parameters and this will release a Stripe
    subscription schedule and return a
    Net::API::Stripe::Billing::Subscription::Schedule object.

    Possible parameters are:

    *id* A Stripe subscription schedule. This is required.
    *preserve_cancel_date* Boolean

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscription_schedules/release>

  retrieve
    Provided with a Net::API::Stripe::Billing::Subscription::Schedule object
    or an hash reference of parameters and this will retrieve a Stripe
    subscription schedule and return a
    Net::API::Stripe::Billing::Subscription::Schedule object.

    Possible parameters are:

    *id* A Stripe subscription schedule id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscription_schedules/retrieve>

  update
    Provided with a Net::API::Stripe::Billing::Subscription::Schedule object
    or an hash reference of parameters and this will update a Stripe
    subscription schedule and return a
    Net::API::Stripe::Billing::Subscription::Schedule object.

    Possible parameters are:

    *id* A Stripe subscription id
    *default_settings* An hash reference with the following properties:
    billing_thresholds.amount_gte
    billing_thresholds.reset_billing_cycle_anchor collection_method
    default_payment_method invoice_settings.days_until_due
    *end_behavior* String. One of release or cancel
    *from_subscription* Stripe subscription id
    *metadata* An aribitrary hash reference
    *phases* An array of hash reference with following properties: plan
    application_fee_percent billing_thresholds collection_method coupon
    default_payment_method default_tax_rates end_date invoice_settings
    iterations tax_percent trial trial_end
    *prorate* Boolean

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscription_schedules/update>

SUBSCRIPTIONS
    You can create, delete_discount, retrieve, update, list or cancel
    subscriptions

  cancel
    Provided with a Net::API::Stripe::Billing::Subscription object or an
    hash reference of parameters, this will cancel a Stripe subscription and
    return a Net::API::Stripe::Billing::Subscription object.

    Possible parameters are:

    *id* A Stripe subscription id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscriptions/create>

  create
    Provided with a Net::API::Stripe::Billing::Subscription object or an
    hash reference of parameters, this will create a Stripe subscription and
    return a Net::API::Stripe::Billing::Subscription object.

    Possible parameters are:

    *customer* A Strip customer id. This is required.
    *application_fee_percent* Decimal
    *backdate_start_date* Date or timestamp
    *billing_cycle_anchor* Date or timestamp
    *billing_thresholds* An hash reference with the following properties:
    amount_gte reset_billing_cycle_anchor
    *cancel_at* Date or timestamp
    *cancel_at_period_end* Boolean
    *collection_method* String. One of charge_automatically, or send_invoice
    *coupon* String
    *days_until_due* Integer
    *default_payment_method* A Stripe payment method id
    *default_source* A Stripe source id
    *default_tax_rates* Array of string
    *items* An array of hash reference with the following properties:

        billing_thresholds.usage_gte
        plan
        price
        price_data.currency
        price_data.product
        price_data.recurring.interval
        price_data.recurring.interval_count
        price_data.unit_amount_decimal
        price_data.unit_amount
        billing_thresholds
        metadata
        quantity
        tax_rates

    *metadata* An arbitrary hash reference
    *off_session* Boolean
    *payment_behavior* String. One of allow_incomplete error_if_incomplete
    or pending_if_incomplete
    *pending_invoice_item_interval* An hash reference with the following
    properties: interval interval_count
    *prorate* Boolean
    *proration_behavior* String. One of billing_cycle_anchor,
    create_prorations or none
    *tax_percent* Decimal
    *trial_end* Unix timestamp or 'now'
    *trial_from_plan* Boolean
    *trial_period_days* Integer

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscriptions/create>

  delete_discount
    Provided with a Net::API::Stripe::Billing::Subscription object or an
    hash reference of parameters, this will remove its discount and return a
    Net::API::Stripe::Billing::Subscription object.

    Possible parameters are:

    *id* A Stripe subscription id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscriptions/create>

  list
    Provided with a Net::API::Stripe::Billing::Subscription object or an
    hash reference of parameters, this will create a Stripe subscription and
    return a Net::API::Stripe::Billing::Subscription object.

    Possible parameters are:

    *active* Boolean
    *created* Date or unix timestamp
    *ids* Array reference
    *ending_before* A Stripe credit note id
    *limit* Integer
    *shippable* Boolean
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscriptions/create>

  retrieve
    Provided with a Net::API::Stripe::Billing::Subscription object or an
    hash reference of parameters, this will retrieve a Stripe subscription
    and return a Net::API::Stripe::Billing::Subscription object.

    Possible parameters are:

    *id* A Stripe subscription id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscriptions/create>

  update
    Provided with a Net::API::Stripe::Billing::Subscription object or an
    hash reference of parameters, this will update a Stripe subscription and
    return a Net::API::Stripe::Billing::Subscription object.

    Possible parameters are:

    *id* A Stripe subscription id
    *application_fee_percent* Decimal
    *billing_cycle_anchor* Date or timestamp
    *billing_thresholds* An hash reference with the following properties:
    amount_gte reset_billing_cycle_anchor
    *cancel_at* Date or timestamp
    *cancel_at_period_end* Boolean
    *collection_method* String. One of charge_automatically, or send_invoice
    *coupon* String
    *days_until_due* Integer
    *default_payment_method* A Stripe payment method id
    *default_source* A Stripe source id
    *default_tax_rates* Array of string
    *items* An array of hash reference with the following properties: plan
    billing_thresholds metadata quantity tax_rates
    *metadata* An arbitrary hash reference
    *off_session* Boolean
    *pause_collection* An hash reference with the following properties:
    behavior resumes_at
    *payment_behavior* String. One of allow_incomplete error_if_incomplete
    or pending_if_incomplete
    *pending_invoice_item_interval* An hash reference with the following
    properties: interval interval_count
    *prorate* Boolean
    *prorate_date* A Date or timestamp
    *tax_percent* Decimal
    *trial_end* Unix timestamp or 'now'
    *trial_from_plan* Boolean

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/subscriptions/create>

TAX CODE
    You can list or retrieve tax code

  list
        my $obj = $stripe->tax_codes( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a tax code object, this issue an api call to get the list
    of all tax code.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tax_codes/list>

  retrieve
        my $obj = $stripe->tax_codes( retrieve => $args ) || die( $stripe->error );

    Provided with a tax code object or a hash reference, this will retrieve
    a Stripe tax code and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tax_codes/retrieve>

TAX ID
    You can create, delete, list or retrieve tax id

  create
        my $obj = $stripe->tax_ids( create => {
            type  => "eu_vat",
            value => "DE123456789", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Customer::TaxId object or a hash
    reference, this will create a Stripe tax id and return an
    Net::API::Stripe::Customer::TaxId object.

    Possible parameters are:

    "type"
        Required. Type of the tax ID, one of "ae_trn", "au_abn", "au_arn",
        "bg_uic", "br_cnpj", "br_cpf", "ca_bn", "ca_gst_hst", "ca_pst_bc",
        "ca_pst_mb", "ca_pst_sk", "ca_qst", "ch_vat", "cl_tin", "es_cif",
        "eu_oss_vat", "eu_vat", "gb_vat", "ge_vat", "hk_br", "hu_tin",
        "id_npwp", "il_vat", "in_gst", "is_vat", "jp_cn", "jp_rn", "kr_brn",
        "li_uid", "mx_rfc", "my_frp", "my_itn", "my_sst", "no_vat",
        "nz_gst", "ru_inn", "ru_kpp", "sa_vat", "sg_gst", "sg_uen",
        "si_tin", "th_vat", "tw_vat", "ua_vat", "us_ein", or "za_vat"

    "value"
        Required. Value of the tax ID.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_tax_ids/create>

  delete
        my $obj = $stripe->tax_ids( delete => $args ) || die( $stripe->error );

    Provided with a tax id, or a hash reference, this will issue an api call
    to Stripe to remove the tax id. It returns the tax id object that was
    deleted with its property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_tax_ids/delete>

  list
        my $obj = $stripe->tax_ids( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a tax id object, this issue an api call to get the list of
    all tax id.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_tax_ids/list>

  retrieve
        my $obj = $stripe->tax_ids( retrieve => $args ) || die( $stripe->error );

    Provided with a tax id object or a hash reference, this will retrieve a
    Stripe tax id and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/customer_tax_ids/retrieve>

TAX IDS
    You can create, retrieve, delete or list tax ids

  create
    Provided with a Net::API::Stripe::Billing::TaxID object or an hash
    reference of parameters, this will cancel a Stripe tax id and return a
    Net::API::Stripe::Billing::TaxID object.

    Possible parameters are:

    *customer* A Stripe customer id
    *type* String, such as au_abn, ch_vat, eu_vat, in_gst, mx_rfc, no_vat,
    nz_gst, or za_vat
    *value* String

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customer_tax_ids/create>

  delete
    Provided with a Net::API::Stripe::Billing::TaxID object or an hash
    reference of parameters, this will cancel a Stripe tax id and return a
    Net::API::Stripe::Billing::TaxID object.

    Possible parameters are:

    *id* A Stripe tax id. This is required
    *customer* A Stripe customer id. This is required

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customer_tax_ids/delete>

  list
    Provided with an hash reference of parameters, this will get the list of
    Stripe tax id and return a Net::API::Stripe::List object.

    Possible parameters are:

    *id* A Stripe customer id. This is required
    *ending_before* A Stripe credit note id
    *limit* Integer
    *starting_after* A Stripe credit note id

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customer_tax_ids/list>

  retrieve
    Provided with a Net::API::Stripe::Billing::TaxID object or an hash
    reference of parameters, this will cancel a Stripe tax id and return a
    Net::API::Stripe::Billing::TaxID object.

    Possible parameters are:

    *id* A Stripe tax id. This is required
    *customer* A Stripe customer id. This is required

    For more information, see Stripe documentation here:
    <https://stripe.com/docs/api/customer_tax_ids/retrieve>

TAX RATE
    You can create, list, retrieve or update tax rate

  create
        my $obj = $stripe->tax_rates( create => {
            description  => "VAT Germany",
            display_name => "VAT",
            inclusive    => "0",
            jurisdiction => "DE",
            percentage   => "16", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Tax::Rate object or a hash reference,
    this will create a Stripe tax rate and return an
    Net::API::Stripe::Tax::Rate object.

    Possible parameters are:

    "active"
        Flag determining whether the tax rate is active or inactive
        (archived). Inactive tax rates cannot be used with new applications
        or Checkout Sessions, but will still work for subscriptions and
        invoices that already have it set.

    "country"
        Two-letter country code (ISO 3166-1 alpha-2
        <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)>.

    "description"
        An arbitrary string attached to the tax rate for your internal use
        only. It will not be visible to your customers.

    "display_name"
        Required. The display name of the tax rate, which will be shown to
        users.

    "inclusive"
        Required. This specifies if the tax rate is inclusive or exclusive.

    "jurisdiction"
        The jurisdiction for the tax rate. You can use this label field for
        tax reporting purposes. It also appears on your customer’s invoice.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "percentage"
        Required. This represents the tax rate percent out of 100.

    "state"
        ISO 3166-2 subdivision code
        <https://en.wikipedia.org/wiki/ISO_3166-2:US>, without country
        prefix. For example, "NY" for New York, United States.

    "tax_type"
        The high-level tax type, such as "vat" or "sales_tax".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tax_rates/create>

  list
        my $obj = $stripe->tax_rates( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a tax rate object, this issue an api call to get the list
    of all tax rate.

    Possible parameters are:

    "active"
        Optional flag to filter by tax rates that are either active or
        inactive (archived).

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "inclusive"
        Optional flag to filter by tax rates that are inclusive (or those
        that are not inclusive).

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tax_rates/list>

  retrieve
        my $obj = $stripe->tax_rates( retrieve => $args ) || die( $stripe->error );

    Provided with a tax rate object or a hash reference, this will retrieve
    a Stripe tax rate and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tax_rates/retrieve>

  update
        my $obj = $stripe->tax_rates( update => {
            active => "0", } ) || die( $stripe->error );

    Provided with a tax rate object or a hash reference, this will update a
    Stripe tax rate and return its corresponding object

    Possible parameters are:

    "active"
        Flag determining whether the tax rate is active or inactive
        (archived). Inactive tax rates cannot be used with new applications
        or Checkout Sessions, but will still work for subscriptions and
        invoices that already have it set.

    "country"
        Two-letter country code (ISO 3166-1 alpha-2
        <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)>.

    "description"
        An arbitrary string attached to the tax rate for your internal use
        only. It will not be visible to your customers.

    "display_name"
        The display name of the tax rate, which will be shown to users.

    "jurisdiction"
        The jurisdiction for the tax rate. You can use this label field for
        tax reporting purposes. It also appears on your customer’s invoice.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "state"
        ISO 3166-2 subdivision code
        <https://en.wikipedia.org/wiki/ISO_3166-2:US>, without country
        prefix. For example, "NY" for New York, United States.

    "tax_type"
        The high-level tax type, such as "vat" or "sales_tax".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tax_rates/update>

TERMINAL CONFIGURATION
    You can create, delete, list, retrieve or update terminal configuration

  create
        my $obj = $stripe->terminal_configurations( create => {
            bbpos_wisepos_e =>
            {
                splashscreen => "file_1Le9F32eZvKYlo2CupWuSTyz",
            } } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Terminal::Configuration object or a
    hash reference, this will create a Stripe terminal configuration and
    return an Net::API::Stripe::Terminal::Configuration object.

    Possible parameters are:

    "bbpos_wisepos_e"
        An object containing device type specific settings for BBPOS WisePOS
        E readers

    "tipping"
        Tipping configurations for readers supporting on-reader tips

    "verifone_p400"
        An object containing device type specific settings for Verifone P400
        readers

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/configuration/create>

  delete
        my $obj = $stripe->terminal_configurations( delete => $args ) || die( $stripe->error );

    Provided with a terminal configuration, or a hash reference, this will
    issue an api call to Stripe to remove the terminal configuration. It
    returns the terminal configuration object that was deleted with its
    property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/configuration/delete>

  list
        my $obj = $stripe->terminal_configurations( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a terminal configuration object, this issue an api call to
    get the list of all terminal configuration.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "is_account_default"
        if present, only return the account default or non-default
        configurations.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/configuration/list>

  retrieve
        my $obj = $stripe->terminal_configurations( retrieve => $args ) || die( $stripe->error );

    Provided with a terminal configuration object or a hash reference, this
    will retrieve a Stripe terminal configuration and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/configuration/retrieve>

  update
        my $obj = $stripe->terminal_configurations( update => {
            bbpos_wisepos_e =>
            {
                splashscreen => "file_1Le9F32eZvKYlo2CupWuSTyz",
            } } ) || die( $stripe->error );

    Provided with a terminal configuration object or a hash reference, this
    will update a Stripe terminal configuration and return its corresponding
    object

    Possible parameters are:

    "bbpos_wisepos_e"
        An object containing device type specific settings for BBPOS WisePOS
        E readers

    "tipping"
        Tipping configurations for readers supporting on-reader tips

    "verifone_p400"
        An object containing device type specific settings for Verifone P400
        readers

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/configuration/update>

TERMINAL CONNECTION TOKEN
    You can create terminal connection token

  create
        my $obj = $stripe->terminal_connection_tokens( create => $args ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Terminal::ConnectionToken object or a
    hash reference, this will create a Stripe terminal connection token and
    return an Net::API::Stripe::Terminal::ConnectionToken object.

    Possible parameters are:

    "location"
        The id of the location that this connection token is scoped to. If
        specified the connection token will only be usable with readers
        assigned to that location, otherwise the connection token will be
        usable with all readers. Note that location scoping only applies to
        internet-connected readers. For more details, see the docs on
        scoping connection tokens
        <https://stripe.com/docs/terminal/fleet/locations#connection-tokens>
        .

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/connection_tokens/create>

TERMINAL LOCATION
    You can create, delete, list, retrieve or update terminal location

  create
        my $obj = $stripe->terminal_locations( create => {
            address      =>
            {
                city        => "San Francisco",
                country     => "US",
                line1       => "1234 Main Street",
                postal_code => "94111",
            }
            display_name => "My First Store", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Terminal::Location object or a hash
    reference, this will create a Stripe terminal location and return an
    Net::API::Stripe::Terminal::Location object.

    Possible parameters are:

    "address"
        Required. The full address of the location.

    "configuration_overrides"
        The ID of a configuration that will be used to customize all readers
        in this location.

    "display_name"
        Required. A name for the location.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/locations/create>

  delete
        my $obj = $stripe->terminal_locations( delete => $args ) || die( $stripe->error );

    Provided with a terminal location, or a hash reference, this will issue
    an api call to Stripe to remove the terminal location. It returns the
    terminal location object that was deleted with its property "deleted"
    set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/locations/delete>

  list
        my $obj = $stripe->terminal_locations( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a terminal location object, this issue an api call to get
    the list of all terminal location.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/locations/list>

  retrieve
        my $obj = $stripe->terminal_locations( retrieve => $args ) || die( $stripe->error );

    Provided with a terminal location object or a hash reference, this will
    retrieve a Stripe terminal location and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/locations/retrieve>

  update
        my $obj = $stripe->terminal_locations( update => {
            display_name => "My First Store", } ) || die( $stripe->error );

    Provided with a terminal location object or a hash reference, this will
    update a Stripe terminal location and return its corresponding object

    Possible parameters are:

    "address"
        The full address of the location.

    "configuration_overrides"
        The ID of a configuration that will be used to customize all readers
        in this location.

    "display_name"
        A name for the location.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/locations/update>

TERMINAL READER
    You can cancel_action, create, delete, list, present_payment_method,
    process_payment_intent, process_setup_intent, retrieve,
    set_reader_display or update terminal reader

  cancel_action
        my $obj = $stripe->terminal_readers( cancel_action => $args ) || die( $stripe->error );

    Provided with a terminal reader, or a hash reference, this will issue a
    cancel_action api call.

    Returns an updated "Reader" resource.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/cancel_action>

  create
        my $obj = $stripe->terminal_readers( create => {
            label             => "Blue Rabbit",
            location          => "tml_1234",
            registration_code => "puppies-plug-could", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Terminal::Reader object or a hash
    reference, this will create a Stripe terminal reader and return an
    Net::API::Stripe::Terminal::Reader object.

    Possible parameters are:

    "label"
        Custom label given to the reader for easier identification. If no
        label is specified, the registration code will be used.

    "location"
        required The location to assign the reader to.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "registration_code"
        Required. A code generated by the reader used for registering to an
        account.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/create>

  delete
        my $obj = $stripe->terminal_readers( delete => $args ) || die( $stripe->error );

    Provided with a terminal reader, or a hash reference, this will issue an
    api call to Stripe to remove the terminal reader. It returns the
    terminal reader object that was deleted with its property "deleted" set
    to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/delete>

  list
        my $obj = $stripe->terminal_readers( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a terminal reader object, this issue an api call to get
    the list of all terminal reader.

    Possible parameters are:

    "device_type"
        Filters readers by device type

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "location"
        A location ID to filter the response list to only readers at the
        specific location

    "serial_number"
        Filters readers by serial number

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        A status filter to filter readers to only offline or online readers

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/list>

  present_payment_method
        my $obj = $stripe->terminal_readers( present_payment_method => $args ) || die( $stripe->error );

    Provided with a terminal reader, or a hash reference, this will issue a
    present_payment_method api call.

    Returns an updated "Reader" resource.

    Possible parameters are:

    "card_present"
        Simulated data for the card_present payment method

    "type"
        Simulated payment type

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/present_payment_method>

  process_payment_intent
        my $obj = $stripe->terminal_readers( process_payment_intent => {
            payment_intent => "pi_1DsTej2eZvKYlo2C5PX0hXuO", } ) || die( $stripe->error );

    Provided with a terminal reader, or a hash reference, this will issue a
    process_payment_intent api call.

    Returns an updated "Reader" resource.

    Possible parameters are:

    "payment_intent"
        Required. PaymentIntent ID

    "process_config"
        Configuration overrides

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/process_payment_intent>

  process_setup_intent
        my $obj = $stripe->terminal_readers( process_setup_intent => {
            customer_consent_collected => "true",
            setup_intent               => "seti_1Le8Ey2eZvKYlo2CVYgmKCc3", } ) || die( $stripe->error );

    Provided with a terminal reader, or a hash reference, this will issue a
    process_setup_intent api call.

    Returns an updated "Reader" resource.

    Possible parameters are:

    "customer_consent_collected"
        Required. Customer Consent Collected

    "setup_intent"
        Required. SetupIntent ID

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/process_setup_intent>

  retrieve
        my $obj = $stripe->terminal_readers( retrieve => $args ) || die( $stripe->error );

    Provided with a terminal reader object or a hash reference, this will
    retrieve a Stripe terminal reader and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/retrieve>

  set_reader_display
        my $obj = $stripe->terminal_readers( set_reader_display => {
            cart =>
            {
                currency   => "usd",
                line_items => [,
                    amount      => "5100",
                    description => "Red t-shirt",
                    quantity    => "1",
                ],
                tax        => "100",
                total      => "5200",
            }
            type => "cart", } ) || die( $stripe->error );

    Provided with a terminal reader, or a hash reference, this will issue a
    set_reader_display api call.

    Returns an updated "Reader" resource.

    Possible parameters are:

    "cart"
        Cart

    "type"
        Required. Type

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/set_reader_display>

  update
        my $obj = $stripe->terminal_readers( update => {
            label => "Blue Rabbit", } ) || die( $stripe->error );

    Provided with a terminal reader object or a hash reference, this will
    update a Stripe terminal reader and return its corresponding object

    Possible parameters are:

    "label"
        The new label of the reader.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/terminal/readers/update>

TEST HELPERS TEST CLOCK
    You can advance, create, delete, list or retrieve test helpers test
    clock

  advance
        my $obj = $stripe->test_helpers_test_clocks( advance => {
            frozen_time => "1662347484", } ) || die( $stripe->error );

    Provided with a test helpers test clock, or a hash reference, this will
    issue a advance api call.

    A "TestClock" object with status "Advancing" is returned upon success.
    Otherwise, this call returns an error
    <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "frozen_time"
        Required. The time to advance the test clock. Must be after the test
        clock's current frozen time. Cannot be more than two intervals in
        the future from the shortest subscription in this test clock. If
        there are no subscriptions in this test clock, it cannot be more
        than two years in the future.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/test_clocks/advance>

  create
        my $obj = $stripe->test_helpers_test_clocks( create => {
            frozen_time => "1577836800", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::TestHelpersTestClock object
    or a hash reference, this will create a Stripe test helpers test clock
    and return an Net::API::Stripe::Billing::TestHelpersTestClock object.

    Possible parameters are:

    "frozen_time"
        Required. The initial frozen time for this test clock.

    "name"
        The name for this test clock.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/test_clocks/create>

  delete
        my $obj = $stripe->test_helpers_test_clocks( delete => $args ) || die( $stripe->error );

    Provided with a test helpers test clock, or a hash reference, this will
    issue an api call to Stripe to remove the test helpers test clock. It
    returns the test helpers test clock object that was deleted with its
    property "deleted" set to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/test_clocks/delete>

  list
        my $obj = $stripe->test_helpers_test_clocks( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a test helpers test clock object, this issue an api call
    to get the list of all test helpers test clock.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/test_clocks/list>

  retrieve
        my $obj = $stripe->test_helpers_test_clocks( retrieve => $args ) || die( $stripe->error );

    Provided with a test helpers test clock object or a hash reference, this
    will retrieve a Stripe test helpers test clock and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/test_clocks/retrieve>

TOKEN
    You can create, create_account, create_bank_account, create_card,
    create_cvc_update, create_person, create_pii or retrieve token

  create_account
        my $obj = $stripe->tokens( create_account => {
            account =>
            {
                individual             =>
                {
                    first_name => "Jane",
                    last_name  => "Doe",
                }
                tos_shown_and_accepted => "1",
            } } ) || die( $stripe->error );

    Provided with a token, or a hash reference, this will issue a
    create_account api call.

    Returns the created account token if successful. Otherwise, this call
    returns an error <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "account"
        Required. Information for the account this token will represent.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tokens/create_account>

  create_bank_account
        my $obj = $stripe->tokens( create_bank_account => {
            bank_account =>
            {
                account_holder_name => "Jenny Rosen",
                account_holder_type => "individual",
                account_number      => "000123456789",
                country             => "US",
                currency            => "usd",
                routing_number      => "110000000",
            } } ) || die( $stripe->error );

    Provided with a token, or a hash reference, this will issue a
    create_bank_account api call.

    Returns the created bank account token if successful. Otherwise, this
    call returns an error <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "bank_account"
        The bank account this token will represent.

    "customer"
        The customer (owned by the application's account) for which to
        create a token. This can be used only with an OAuth access token
        <https://stripe.com/docs/connect/standard-accounts> or
        Stripe-Account header
        <https://stripe.com/docs/connect/authentication>. For more details,
        see Cloning Saved Payment Methods
        <https://stripe.com/docs/connect/cloning-saved-payment-methods>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tokens/create_bank_account>

  create_card
        my $obj = $stripe->tokens( create_card => {
            card =>
            {
                cvc       => "314",
                exp_month => "9",
                exp_year  => "2023",
                number    => "4242424242424242",
            } } ) || die( $stripe->error );

    Provided with a token, or a hash reference, this will issue a
    create_card api call.

    Returns the created card token if successful. Otherwise, this call
    raises an error <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "card"
        The card this token will represent. If you also pass in a customer,
        the card must be the ID of a card belonging to the customer.
        Otherwise, if you do not pass in a customer, this is a dictionary
        containing a user's credit card details, with the options described
        below.

    "customer"
        The customer (owned by the application's account) for which to
        create a token. Also, this can be used only with an OAuth access
        token <https://stripe.com/docs/connect/standard-accounts> or
        Stripe-Account header
        <https://stripe.com/docs/connect/authentication>. For more details,
        see Cloning Saved Payment Methods
        <https://stripe.com/docs/connect/cloning-saved-payment-methods>.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tokens/create_card>

  create_cvc_update
        my $obj = $stripe->tokens( create_cvc_update => {
            cvc_update =>
            {
                cvc => "123",
            } } ) || die( $stripe->error );

    Provided with a token, or a hash reference, this will issue a
    create_cvc_update api call.

    Returns the created CVC update token if successful. Otherwise, this call
    raises an error <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "cvc_update"
        Required. The updated CVC value this token will represent.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tokens/create_cvc_update>

  create_person
        my $obj = $stripe->tokens( create_person => {
            person =>
            {
                first_name   => "Jane",
                last_name    => "Doe",
                relationship =>
                {
                    owner => "1",
                }
            } } ) || die( $stripe->error );

    Provided with a token, or a hash reference, this will issue a
    create_person api call.

    Returns the created person token if successful. Otherwise, this call
    returns an error <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "person"
        Required. Information for the person this token will represent.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tokens/create_person>

  create_pii
        my $obj = $stripe->tokens( create_pii => {
            pii =>
            {
                id_number => "000000000",
            } } ) || die( $stripe->error );

    Provided with a token, or a hash reference, this will issue a create_pii
    api call.

    Returns the created PII token if successful. Otherwise, this call
    returns an error <https://stripe.com/docs/api/errors>.

    Possible parameters are:

    "pii"
        Required. The PII this token will represent.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tokens/create_pii>

  retrieve
        my $obj = $stripe->tokens( retrieve => $args ) || die( $stripe->error );

    Provided with a token object or a hash reference, this will retrieve a
    Stripe token and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/tokens/retrieve>

TOPUP
    You can cancel, create, list, retrieve or update topup

  cancel
        my $obj = $stripe->topups( cancel => $args ) || die( $stripe->error );

    Provided with a topup, or a hash reference, this will issue a cancel api
    call.

    Returns the canceled top-up. If the top-up is already canceled or can’t
    be canceled, an error is returned.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/topups/cancel>

  create
        my $obj = $stripe->topups( create => {
            amount               => "2000",
            currency             => "usd",
            description          => "Top-up for Jenny Rosen",
            statement_descriptor => "Top-up", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::TopUp object or a hash
    reference, this will create a Stripe topup and return an
    Net::API::Stripe::Connect::TopUp object.

    Possible parameters are:

    "amount"
        Required. A positive integer representing how much to transfer.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "source"
        The ID of a source to transfer funds from. For most users, this
        should be left unspecified which will use the bank account that was
        set up in the dashboard for the specified currency. In test mode,
        this can be a test bank token (see Testing Top-ups
        <https://stripe.com/docs/connect/testing#testing-top-ups>).

    "statement_descriptor"
        Extra information about a top-up for the source's bank statement.
        Limited to 15 ASCII characters.

    "transfer_group"
        A string that identifies this top-up as part of a group.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/topups/create>

  list
        my $obj = $stripe->topups( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a topup object, this issue an api call to get the list of
    all topup.

    Possible parameters are:

    "amount"
        A filter on the list based on the object "amount" field. The value
        can be a string with an integer amount, or it can be a dictionary
        with the following options:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return top-ups that have the given status. One of "canceled",
        "failed", "pending" or "succeeded".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/topups/list>

  retrieve
        my $obj = $stripe->topups( retrieve => $args ) || die( $stripe->error );

    Provided with a topup object or a hash reference, this will retrieve a
    Stripe topup and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/topups/retrieve>

  update
        my $obj = $stripe->topups( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a topup object or a hash reference, this will update a
    Stripe topup and return its corresponding object

    Possible parameters are:

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/topups/update>

TRANSFER
    You can create, list, retrieve or update transfer

  create
        my $obj = $stripe->transfers( create => {
            amount         => "400",
            currency       => "usd",
            destination    => "acct_1032D82eZvKYlo2C",
            transfer_group => "ORDER_95", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::Transfer object or a hash
    reference, this will create a Stripe transfer and return an
    Net::API::Stripe::Connect::Transfer object.

    Possible parameters are:

    "amount"
        required A positive integer in JPY representing how much to
        transfer.

    "currency"
        Required. 3-letter ISO code for currency
        <https://stripe.com/docs/payouts>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "destination"
        Required. The ID of a connected Stripe account. <a
        href="/docs/connect/charges-transfers">See the Connect
        documentation</a> for details.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "source_transaction"
        You can use this parameter to transfer funds from a charge before
        they are added to your available balance. A pending balance will
        transfer immediately but the funds will not become available until
        the original charge becomes available. See the Connect documentation
        <https://stripe.com/docs/connect/charges-transfers#transfer-availabi
        lity> for details.

    "source_type"
        The source balance to use for this transfer. One of "bank_account",
        "card", or "fpx". For most users, this will default to "card".

    "transfer_group"
        A string that identifies this transaction as part of a group. See
        the Connect documentation
        <https://stripe.com/docs/connect/charges-transfers#transfer-options>
        for details.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfers/create>

  list
        my $obj = $stripe->transfers( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a transfer object, this issue an api call to get the list
    of all transfer.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "destination"
        Only return transfers for the destination specified by this account
        ID.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "transfer_group"
        Only return transfers with the specified transfer group.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfers/list>

  retrieve
        my $obj = $stripe->transfers( retrieve => $args ) || die( $stripe->error );

    Provided with a transfer object or a hash reference, this will retrieve
    a Stripe transfer and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfers/retrieve>

  update
        my $obj = $stripe->transfers( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a transfer object or a hash reference, this will update a
    Stripe transfer and return its corresponding object

    Possible parameters are:

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfers/update>

TRANSFER REVERSAL
    You can create, list, retrieve or update transfer reversal

  create
        my $obj = $stripe->transfer_reversals( create => {
            amount => "100", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Connect::Transfer::Reversal object or
    a hash reference, this will create a Stripe transfer reversal and return
    an Net::API::Stripe::Connect::Transfer::Reversal object.

    Possible parameters are:

    "amount"
        A positive integer in JPY representing how much of this transfer to
        reverse. Can only reverse up to the unreversed amount remaining of
        the transfer. Partial transfer reversals are only allowed for
        transfers to Stripe Accounts. Defaults to the entire transfer
        amount.

    "description"
        An arbitrary string which you can attach to a reversal object. It is
        displayed alongside the reversal in the Dashboard. This will be
        unset if you POST an empty value.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "refund_application_fee"
        Boolean indicating whether the application fee should be refunded
        when reversing this transfer. If a full transfer reversal is given,
        the full application fee will be refunded. Otherwise, the
        application fee will be refunded with an amount proportional to the
        amount of the transfer reversed.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfer_reversals/create>

  list
        my $obj = $stripe->transfer_reversals( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a transfer reversal object, this issue an api call to get
    the list of all transfer reversal.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfer_reversals/list>

  retrieve
        my $obj = $stripe->transfer_reversals( retrieve => $args ) || die( $stripe->error );

    Provided with a transfer reversal object or a hash reference, this will
    retrieve a Stripe transfer reversal and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfer_reversals/retrieve>

  update
        my $obj = $stripe->transfer_reversals( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a transfer reversal object or a hash reference, this will
    update a Stripe transfer reversal and return its corresponding object

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/transfer_reversals/update>

TREASURY CREDIT REVERSAL
    You can create, list or retrieve treasury credit reversal

  create
        my $obj = $stripe->treasury_credit_reversals( create => {
            received_credit => "rc_1Le9F42eZvKYlo2CM2wIU5bz", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Treasury::CreditReversal object or a
    hash reference, this will create a Stripe treasury credit reversal and
    return an Net::API::Stripe::Treasury::CreditReversal object.

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "received_credit"
        Required. The ReceivedCredit to reverse.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/credit_reversals/create>

  list
        my $obj = $stripe->treasury_credit_reversals( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury credit reversal object, this issue an api call
    to get the list of all treasury credit reversal.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. Returns objects associated with this FinancialAccount.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "received_credit"
        Only return CreditReversals for the ReceivedCredit ID.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return CreditReversals for a given status.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/credit_reversals/list>

  retrieve
        my $obj = $stripe->treasury_credit_reversals( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury credit reversal object or a hash reference,
    this will retrieve a Stripe treasury credit reversal and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/credit_reversals/retrieve>

TREASURY DEBIT REVERSAL
    You can create, list or retrieve treasury debit reversal

  create
        my $obj = $stripe->treasury_debit_reversals( create => {
            received_debit => "rd_1Le9F42eZvKYlo2C0TIJJqNP", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Treasury::DebitReversal object or a
    hash reference, this will create a Stripe treasury debit reversal and
    return an Net::API::Stripe::Treasury::DebitReversal object.

    Possible parameters are:

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "received_debit"
        Required. The ReceivedDebit to reverse.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/debit_reversals/create>

  list
        my $obj = $stripe->treasury_debit_reversals( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury debit reversal object, this issue an api call
    to get the list of all treasury debit reversal.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. Returns objects associated with this FinancialAccount.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "received_debit"
        Only return DebitReversals for the ReceivedDebit ID.

    "resolution"
        Only return DebitReversals for a given resolution.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return DebitReversals for a given status.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/debit_reversals/list>

  retrieve
        my $obj = $stripe->treasury_debit_reversals( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury debit reversal object or a hash reference, this
    will retrieve a Stripe treasury debit reversal and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/debit_reversals/retrieve>

TREASURY FINANCIAL ACCOUNT
    You can create, list, retrieve or update treasury financial account

  create
        my $obj = $stripe->treasury_financial_accounts( create => {
            features             =>
            {
            }
            supported_currencies => [qw( usd )], } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Treasury::FinancialAccount object or a
    hash reference, this will create a Stripe treasury financial account and
    return an Net::API::Stripe::Treasury::FinancialAccount object.

    Possible parameters are:

    "features"
        Encodes whether a FinancialAccount has access to a particular
        feature. Stripe or the platform can control features via the
        requested field.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "platform_restrictions"
        The set of functionalities that the platform can restrict on the
        FinancialAccount.

    "supported_currencies"
        Required. The currencies the FinancialAccount can hold a balance in.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/financial_accounts/create>

  list
        my $obj = $stripe->treasury_financial_accounts( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a treasury financial account object, this issue an api
    call to get the list of all treasury financial account.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        An object ID cursor for use in pagination.

    "limit"
        A limit ranging from 1 to 100 (defaults to 10).

    "starting_after"
        An object ID cursor for use in pagination.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/financial_accounts/list>

  retrieve
        my $obj = $stripe->treasury_financial_accounts( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury financial account object or a hash reference,
    this will retrieve a Stripe treasury financial account and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/financial_accounts/retrieve>

  update
        my $obj = $stripe->treasury_financial_accounts( update => {
            metadata =>
            {
                order_id => "6735",
            } } ) || die( $stripe->error );

    Provided with a treasury financial account object or a hash reference,
    this will update a Stripe treasury financial account and return its
    corresponding object

    Possible parameters are:

    "features"
        Encodes whether a FinancialAccount has access to a particular
        feature, with a status enum and associated "status_details". Stripe
        or the platform may control features via the requested field.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "platform_restrictions"
        The set of functionalities that the platform can restrict on the
        FinancialAccount.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/financial_accounts/update>

TREASURY FINANCIAL ACCOUNT FEATURES
    You can retrieve or update treasury financial account features

  retrieve
        my $obj = $stripe->treasury_financial_account_featuress( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury financial account features object or a hash
    reference, this will retrieve a Stripe treasury financial account
    features and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/financial_account_features/retriev
    e>

  update
        my $obj = $stripe->treasury_financial_account_featuress( update => {
            card_issuing =>
            {
                requested => "0",
            } } ) || die( $stripe->error );

    Provided with a treasury financial account features object or a hash
    reference, this will update a Stripe treasury financial account features
    and return its corresponding object

    Possible parameters are:

    "card_issuing"
        Encodes the FinancialAccount's ability to be used with the Issuing
        product, including attaching cards to and drawing funds from the
        FinancialAccount.

    "deposit_insurance"
        Represents whether this FinancialAccount is eligible for deposit
        insurance. Various factors determine the insurance amount.

    "financial_addresses"
        Contains Features that add FinancialAddresses to the
        FinancialAccount.

    "inbound_transfers"
        Contains settings related to adding funds to a FinancialAccount from
        another Account with the same owner.

    "intra_stripe_flows"
        Represents the ability for the FinancialAccount to send money to, or
        receive money from other FinancialAccounts (for example, via
        OutboundPayment).

    "outbound_payments"
        Includes Features related to initiating money movement out of the
        FinancialAccount to someone else's bucket of money.

    "outbound_transfers"
        Contains a Feature and settings related to moving money out of the
        FinancialAccount into another Account with the same owner.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/financial_account_features/update>

TREASURY INBOUND TRANSFER
    You can cancel, create, fail, list, retrieve, return or succeed treasury
    inbound transfer

  cancel
        my $obj = $stripe->treasury_inbound_transfers( cancel => $args ) || die( $stripe->error );

    Provided with a treasury inbound transfer, or a hash reference, this
    will issue a cancel api call.

    Returns the InboundTransfer object if the cancellation succeeded.
    Returns an error if the InboundTransfer has already been canceled or
    cannot be canceled.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/inbound_transfers/cancel>

  create
        my $obj = $stripe->treasury_inbound_transfers( create => {
            amount                => "10000",
            currency              => "usd",
            description           => "InboundTransfer from my bank account",
            financial_account     => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            origin_payment_method => "pm_1KMDdkGPnV27VyGeAgGz8bsi", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Treasury::InboundTransfer object or a
    hash reference, this will create a Stripe treasury inbound transfer and
    return an Net::API::Stripe::Treasury::InboundTransfer object.

    Possible parameters are:

    "amount"
        Required. Amount (in cents) to be transferred.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "financial_account"
        Required. The FinancialAccount to send funds to.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "origin_payment_method"
        Required. The origin payment method to be debited for the
        InboundTransfer.

    "statement_descriptor"
        The complete description that appears on your customers' statements.
        Maximum 10 characters.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/inbound_transfers/create>

  fail
        my $obj = $stripe->treasury_inbound_transfers( fail => {
            failure_details =>
            {
                code => "insufficient_funds",
            } } ) || die( $stripe->error );

    Provided with a treasury inbound transfer, or a hash reference, this
    will issue a fail api call.

    Returns the InboundTransfer object in the returned state. Returns an
    error if the InboundTransfer has already failed or cannot be failed.

    Possible parameters are:

    "failure_details"
        Details about a failed InboundTransfer.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/inbound_transfers/test_mode_fail>

  list
        my $obj = $stripe->treasury_inbound_transfers( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury inbound transfer object, this issue an api call
    to get the list of all treasury inbound transfer.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. Returns objects associated with this FinancialAccount.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return InboundTransfers that have the given status:
        "processing", "succeeded", "failed" or "canceled".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/inbound_transfers/list>

  retrieve
        my $obj = $stripe->treasury_inbound_transfers( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury inbound transfer object or a hash reference,
    this will retrieve a Stripe treasury inbound transfer and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/inbound_transfers/retrieve>

  return
        my $obj = $stripe->treasury_inbound_transfers( return => $args ) || die( $stripe->error );

    Provided with a treasury inbound transfer, or a hash reference, this
    will issue a return api call.

    Returns the InboundTransfer object with "returned" set to "true".
    Returns an error if the InboundTransfer has already been returned or
    cannot be returned.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/inbound_transfers/test_mode_return
    >

  succeed
        my $obj = $stripe->treasury_inbound_transfers( succeed => $args ) || die( $stripe->error );

    Provided with a treasury inbound transfer, or a hash reference, this
    will issue a succeed api call.

    Returns the InboundTransfer object in the succeeded state. Returns an
    error if the InboundTransfer has already succeeded or cannot be
    succeeded.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/inbound_transfers/test_mode_succee
    d>

TREASURY OUTBOUND PAYMENT
    You can cancel, create, fail, list, post, retrieve or return treasury
    outbound payment

  cancel
        my $obj = $stripe->treasury_outbound_payments( cancel => $args ) || die( $stripe->error );

    Provided with a treasury outbound payment, or a hash reference, this
    will issue a cancel api call.

    Returns the OutboundPayment object if the cancellation succeeded.
    Returns an error if the OutboundPayment has already been canceled or
    cannot be canceled.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_payments/cancel>

  create
        my $obj = $stripe->treasury_outbound_payments( create => {
            amount                     => "10000",
            currency                   => "usd",
            customer                   => "cus_AJ78ZaALpqgiuZ",
            description                => "OutboundPayment to a 3rd party",
            destination_payment_method => "pm_1Le9F42eZvKYlo2Cy9Yph0k5",
            financial_account          => "fa_1Le9F32eZvKYlo2CjbQcDQUE", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Treasury::OutboundPayment object or a
    hash reference, this will create a Stripe treasury outbound payment and
    return an Net::API::Stripe::Treasury::OutboundPayment object.

    Possible parameters are:

    "amount"
        Required. Amount (in cents) to be transferred.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "customer"
        ID of the customer to whom the OutboundPayment is sent. Must match
        the Customer attached to the "destination_payment_method" passed in.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "destination_payment_method"
        The PaymentMethod to use as the payment instrument for the
        OutboundPayment. Exclusive with "destination_payment_method_data".

    "destination_payment_method_data"
        Hash used to generate the PaymentMethod to be used for this
        OutboundPayment. Exclusive with "destination_payment_method".

    "destination_payment_method_options"
        Payment method-specific configuration for this OutboundPayment.

    "end_user_details"
        End user details.

    "financial_account"
        Required. The FinancialAccount to pull funds from.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "statement_descriptor"
        The description that appears on the receiving end for this
        OutboundPayment (for example, bank statement for external bank
        transfer). Maximum 10 characters for "ach" payments, 140 characters
        for "wire" payments, or 500 characters for "stripe" network
        transfers. The default value is "payment".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_payments/create>

  fail
        my $obj = $stripe->treasury_outbound_payments( fail => $args ) || die( $stripe->error );

    Provided with a treasury outbound payment, or a hash reference, this
    will issue a fail api call.

    Returns the OutboundPayment object in the failed state. Returns an error
    if the OutboundPayment has already been failed or cannot be failed.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_payments/test_mode_fail>

  list
        my $obj = $stripe->treasury_outbound_payments( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury outbound payment object, this issue an api call
    to get the list of all treasury outbound payment.

    Possible parameters are:

    "customer"
        Only return OutboundPayments sent to this customer.

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. Returns objects associated with this FinancialAccount.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return OutboundPayments that have the given status:
        "processing", "failed", "posted", "returned", or "canceled".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_payments/list>

  post
        my $obj = $stripe->treasury_outbound_payments( post => $args ) || die( $stripe->error );

    Provided with a treasury outbound payment, or a hash reference, this
    will issue a post api call.

    Returns the OutboundPayment object in the posted state. Returns an error
    if the OutboundPayment has already been posted or cannot be posted.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_payments/test_mode_post>

  retrieve
        my $obj = $stripe->treasury_outbound_payments( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury outbound payment object or a hash reference,
    this will retrieve a Stripe treasury outbound payment and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_payments/retrieve>

  return
        my $obj = $stripe->treasury_outbound_payments( return => {
            return_details =>
            {
                code => "account_closed",
            } } ) || die( $stripe->error );

    Provided with a treasury outbound payment, or a hash reference, this
    will issue a return api call.

    Returns the OutboundPayment object in the returned state. Returns an
    error if the OutboundPayment has already been returned or cannot be
    returned.

    Possible parameters are:

    "returned_details"
        Optional hash to set the the return code.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_payments/test_mode_return
    >

TREASURY OUTBOUND TRANSFER
    You can cancel, create, fail, list, post, retrieve or return treasury
    outbound transfer

  cancel
        my $obj = $stripe->treasury_outbound_transfers( cancel => $args ) || die( $stripe->error );

    Provided with a treasury outbound transfer, or a hash reference, this
    will issue a cancel api call.

    Returns the OutboundTransfer object if the cancellation succeeded.
    Returns an error if the object has already been canceled or cannot be
    canceled.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_transfers/cancel>

  create
        my $obj = $stripe->treasury_outbound_transfers( create => {
            amount                     => "500",
            currency                   => "usd",
            description                => "OutboundTransfer to my external bank account",
            destination_payment_method => "pm_1234567890",
            financial_account          => "fa_1Le9F32eZvKYlo2CjbQcDQUE", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Treasury::OutboundTransfer object or a
    hash reference, this will create a Stripe treasury outbound transfer and
    return an Net::API::Stripe::Treasury::OutboundTransfer object.

    Possible parameters are:

    "amount"
        Required. Amount (in cents) to be transferred.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "destination_payment_method"
        The PaymentMethod to use as the payment instrument for the
        OutboundTransfer.

    "destination_payment_method_options"
        Hash describing payment method configuration details.

    "financial_account"
        Required. The FinancialAccount to pull funds from.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "statement_descriptor"
        Statement descriptor to be shown on the receiving end of an
        OutboundTransfer. Maximum 10 characters for "ach" transfers or 140
        characters for "wire" transfers. The default value is "transfer".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_transfers/create>

  fail
        my $obj = $stripe->treasury_outbound_transfers( fail => $args ) || die( $stripe->error );

    Provided with a treasury outbound transfer, or a hash reference, this
    will issue a fail api call.

    Returns the OutboundTransfer object in the failed state. Returns an
    error if the OutboundTransfer has already been failed or cannot be
    failed.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_transfers/test_mode_fail>

  list
        my $obj = $stripe->treasury_outbound_transfers( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury outbound transfer object, this issue an api
    call to get the list of all treasury outbound transfer.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. Returns objects associated with this FinancialAccount.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return OutboundTransfers that have the given status:
        "processing", "canceled", "failed", "posted", or "returned".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_transfers/list>

  post
        my $obj = $stripe->treasury_outbound_transfers( post => $args ) || die( $stripe->error );

    Provided with a treasury outbound transfer, or a hash reference, this
    will issue a post api call.

    Returns the OutboundTransfer object in the posted state. Returns an
    error if the OutboundTransfer has already been posted or cannot be
    posted.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_transfers/test_mode_post>

  retrieve
        my $obj = $stripe->treasury_outbound_transfers( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury outbound transfer object or a hash reference,
    this will retrieve a Stripe treasury outbound transfer and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_transfers/retrieve>

  return
        my $obj = $stripe->treasury_outbound_transfers( return => {
            code => "declined", } ) || die( $stripe->error );

    Provided with a treasury outbound transfer, or a hash reference, this
    will issue a return api call.

    Returns the OutboundTransfer object in the returned state. Returns an
    error if the OutboundTransfer has already been returned or cannot be
    returned.

    Possible parameters are:

    "returned_details"
        Details about a returned OutboundTransfer.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/outbound_transfers/test_mode_retur
    n>

TREASURY RECEIVED CREDIT
    You can list, received_credit or retrieve treasury received credit

  list
        my $obj = $stripe->treasury_received_credits( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury received credit object, this issue an api call
    to get the list of all treasury received credit.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. The FinancialAccount that received the funds.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "linked_flows"
        Only return ReceivedCredits described by the flow.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return ReceivedCredits that have the given status: "succeeded"
        or "failed".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/received_credits/list>

  received_credit
        my $obj = $stripe->treasury_received_credits( received_credit => {
            amount            => "1000",
            currency          => "usd",
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            network           => "ach", } ) || die( $stripe->error );

    Provided with a treasury received credit, or a hash reference, this will
    issue a received_credit api call.

    A test mode ReceivedCredit object.

    Possible parameters are:

    "amount"
        Required. Amount (in cents) to be transferred.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "financial_account"
        Required. The FinancialAccount to send funds to.

    "initiating_payment_method_details"
        Initiating payment method details for the object.

    "network"
        Required. The rails used for the object.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/received_credits/test_mode_create>

  retrieve
        my $obj = $stripe->treasury_received_credits( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury received credit object or a hash reference,
    this will retrieve a Stripe treasury received credit and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/received_credits/retrieve>

TREASURY RECEIVED DEBIT
    You can list, received_debit or retrieve treasury received debit

  list
        my $obj = $stripe->treasury_received_debits( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury received debit object, this issue an api call
    to get the list of all treasury received debit.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. The FinancialAccount that funds were pulled from.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return ReceivedDebits that have the given status: "succeeded"
        or "failed".

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/received_debits/list>

  received_debit
        my $obj = $stripe->treasury_received_debits( received_debit => {
            amount            => "1000",
            currency          => "usd",
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            network           => "ach", } ) || die( $stripe->error );

    Provided with a treasury received debit, or a hash reference, this will
    issue a received_debit api call.

    A test mode ReceivedDebit object.

    Possible parameters are:

    "amount"
        Required. Amount (in cents) to be transferred.

    "currency"
        Required. Three-letter ISO currency code
        <https://www.iso.org/iso-4217-currency-codes.html>, in lowercase.
        Must be a supported currency <https://stripe.com/docs/currencies>.

    "description"
        An arbitrary string attached to the object. Often useful for
        displaying to users.

    "financial_account"
        Required. The FinancialAccount to pull funds from.

    "initiating_payment_method_details"
        Initiating payment method details for the object.

    "network"
        Required. The rails used for the object.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/received_debits/test_mode_create>

  retrieve
        my $obj = $stripe->treasury_received_debits( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury received debit object or a hash reference, this
    will retrieve a Stripe treasury received debit and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/received_debits/retrieve>

TREASURY TRANSACTION
    You can list or retrieve treasury transaction

  list
        my $obj = $stripe->treasury_transactions( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury transaction object, this issue an api call to
    get the list of all treasury transaction.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. Returns objects associated with this FinancialAccount.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "order_by"
        The results are in reverse chronological order by "created" or
        "posted_at". The default is "created".

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "status"
        Only return Transactions that have the given status: "open",
        "posted", or "void".

    "status_transitions"
        A filter for the "status_transitions.posted_at" timestamp. When
        using this filter, "status=posted" and "order_by=posted_at" must
        also be specified.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/transactions/list>

  retrieve
        my $obj = $stripe->treasury_transactions( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury transaction object or a hash reference, this
    will retrieve a Stripe treasury transaction and return its corresponding
    object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/transactions/retrieve>

TREASURY TRANSACTION ENTRY
    You can list or retrieve treasury transaction entry

  list
        my $obj = $stripe->treasury_transaction_entrys( list => {
            financial_account => "fa_1Le9F32eZvKYlo2CjbQcDQUE",
            limit             => "3", } ) || die( $stripe->error );

    Provided with a treasury transaction entry object, this issue an api
    call to get the list of all treasury transaction entry.

    Possible parameters are:

    "created"
        A filter on the list based on the object "created" field. The value
        can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "effective_at"
        A filter on the list based on the object "effective_at" field. The
        value can be a string with an integer Unix timestamp, or it can be a
        dictionary with the following options:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "financial_account"
        Required. Returns objects associated with this FinancialAccount.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "order_by"
        The results are in reverse chronological order by "created" or
        "effective_at". The default is "created".

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    "transaction"
        Only return TransactionEntries associated with this Transaction.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/transaction_entries/list>

  retrieve
        my $obj = $stripe->treasury_transaction_entrys( retrieve => $args ) || die( $stripe->error );

    Provided with a treasury transaction entry object or a hash reference,
    this will retrieve a Stripe treasury transaction entry and return its
    corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/treasury/transaction_entries/retrieve>

USAGE RECORD
    You can create or list usage record

  create
        my $obj = $stripe->usage_records( create => {
            quantity  => "100",
            timestamp => "1571252444", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::Billing::UsageRecord object or a hash
    reference, this will create a Stripe usage record and return an
    Net::API::Stripe::Billing::UsageRecord object.

    Possible parameters are:

    "action"
        Valid values are "increment" (default) or "set". When using
        "increment" the specified "quantity" will be added to the usage at
        the specified timestamp. The "set" action will overwrite the usage
        quantity at that timestamp. If the subscription has billing
        thresholds
        <https://stripe.com/docs/api/subscriptions/object#subscription_objec
        t-billing_thresholds>, "increment" is the only allowed value.

    "quantity"
        Required. The usage quantity for the specified timestamp.

    "timestamp"
        The timestamp for the usage event. This timestamp must be within the
        current billing period of the subscription of the provided
        "subscription_item", and must not be in the future. When passing
        "now", Stripe records usage for the current time. Default is "now"
        if a value is not provided.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/usage_records/create>

  list
        my $obj = $stripe->usage_records( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a usage record object, this issue an api call to get the
    list of all usage record.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/usage_records/subscription_item_summary_lis
    t>

WEBHOOK ENDPOINT
    You can create, delete, list, retrieve or update webhook endpoint

  create
        my $obj = $stripe->webhook_endpoints( create => {
            enabled_events => [qw( charge.failed charge.succeeded )],
            url            => "https://example.com/my/webhook/endpoint", } ) || die( $stripe->error );

    Provided with a Net::API::Stripe::WebHook::Object object or a hash
    reference, this will create a Stripe webhook endpoint and return an
    Net::API::Stripe::WebHook::Object object.

    Possible parameters are:

    "api_version"
        Events sent to this endpoint will be generated with this Stripe
        Version instead of your account's default Stripe Version.

    "connect"
        Whether this endpoint should receive events from connected accounts
        ("true"), or from your account ("false"). Defaults to "false".

    "description"
        An optional description of what the webhook is used for.

    "enabled_events"
        Required. The list of events to enable for this endpoint. You may
        specify "['*']" to enable all events, except those that require
        explicit selection.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "url"
        Required. The URL of the webhook endpoint.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/webhook_endpoints/create>

  delete
        my $obj = $stripe->webhook_endpoints( delete => $args ) || die( $stripe->error );

    Provided with a webhook endpoint, or a hash reference, this will issue
    an api call to Stripe to remove the webhook endpoint. It returns the
    webhook endpoint object that was deleted with its property "deleted" set
    to true.

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/webhook_endpoints/delete>

  list
        my $obj = $stripe->webhook_endpoints( list => {
            limit => "3", } ) || die( $stripe->error );

    Provided with a webhook endpoint object, this issue an api call to get
    the list of all webhook endpoint.

    Possible parameters are:

    "ending_before"
        A cursor for use in pagination. "ending_before" is an object ID that
        defines your place in the list. For instance, if you make a list
        request and receive 100 objects, starting with "obj_bar", your
        subsequent call can include "ending_before=obj_bar" in order to
        fetch the previous page of the list.

    "limit"
        A limit on the number of objects to be returned. Limit can range
        between 1 and 100, and the default is 10.

    "starting_after"
        A cursor for use in pagination. "starting_after" is an object ID
        that defines your place in the list. For instance, if you make a
        list request and receive 100 objects, ending with "obj_foo", your
        subsequent call can include "starting_after=obj_foo" in order to
        fetch the next page of the list.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/webhook_endpoints/list>

  retrieve
        my $obj = $stripe->webhook_endpoints( retrieve => $args ) || die( $stripe->error );

    Provided with a webhook endpoint object or a hash reference, this will
    retrieve a Stripe webhook endpoint and return its corresponding object

    There are no query parameter.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/webhook_endpoints/retrieve>

  update
        my $obj = $stripe->webhook_endpoints( update => {
            url => "https://example.com/new_endpoint", } ) || die( $stripe->error );

    Provided with a webhook endpoint object or a hash reference, this will
    update a Stripe webhook endpoint and return its corresponding object

    Possible parameters are:

    "description"
        An optional description of what the webhook is used for.

    "disabled"
        Disable the webhook endpoint if set to true.

    "enabled_events"
        The list of events to enable for this endpoint. You may specify
        "['*']" to enable all events, except those that require explicit
        selection.

    "metadata"
        Set of key-value pairs <https://stripe.com/docs/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".

    "url"
        The URL of the webhook endpoint.

    More information from Stripe api documentation at
    <https://stripe.com/docs/api/webhook_endpoints/update>

API SAMPLE
        {
          "object": "balance",
          "available": [
            {
              "amount": 0,
              "currency": "jpy",
              "source_types": {
                "card": 0
              }
            }
          ],
          "connect_reserved": [
            {
              "amount": 0,
              "currency": "jpy"
            }
          ],
          "livemode": false,
          "pending": [
            {
              "amount": 7712,
              "currency": "jpy",
              "source_types": {
                "card": 7712
              }
            }
          ]
        }

HISTORY
    <https://stripe.com/docs/upgrades> for Stripe API version history.

AUTHOR
    Jacques Deguest <jack@deguest.jp>

SEE ALSO
    Stripe API documentation:

    <https://stripe.com/docs/api>

    List of server-side libraries:
    <https://stripe.com/docs/libraries#server-side-libraries>

    Net::Stripe, another Stripe API, but which uses Moose

COPYRIGHT & LICENSE
    Copyright (c) 2018-2019 DEGUEST Pte. Ltd.

    You can use, copy, modify and redistribute this package and associated
    files under the same terms as Perl itself.

