defmodule Stripe.Issuing.Transaction do use Stripe.Entity @moduledoc "Any use of an [issued card](https://stripe.com/docs/issuing) that results in funds entering or leaving\nyour Stripe account, such as a completed purchase or refund, is represented by an Issuing\n`Transaction` object.\n\nRelated guide: [Issued card transactions](https://stripe.com/docs/issuing/purchases/transactions)" ( defstruct [ :amount, :amount_details, :authorization, :balance_transaction, :card, :cardholder, :created, :currency, :dispute, :id, :livemode, :merchant_amount, :merchant_currency, :merchant_data, :metadata, :network_data, :object, :purchase_details, :token, :treasury, :type, :wallet ] @typedoc "The `issuing.transaction` type.\n\n * `amount` The transaction amount, which will be reflected in your balance. This amount is in your currency and in the [smallest currency unit](https://stripe.com/docs/currencies#zero-decimal).\n * `amount_details` Detailed breakdown of amount components. These amounts are denominated in `currency` and in the [smallest currency unit](https://stripe.com/docs/currencies#zero-decimal).\n * `authorization` The `Authorization` object that led to this transaction.\n * `balance_transaction` ID of the [balance transaction](https://stripe.com/docs/api/balance_transactions) associated with this transaction.\n * `card` The card used to make this transaction.\n * `cardholder` The cardholder to whom this transaction belongs.\n * `created` Time at which the object was created. Measured in seconds since the Unix epoch.\n * `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).\n * `dispute` If you've disputed the transaction, the ID of the dispute.\n * `id` Unique identifier for the object.\n * `livemode` Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.\n * `merchant_amount` The amount that the merchant will receive, denominated in `merchant_currency` and in the [smallest currency unit](https://stripe.com/docs/currencies#zero-decimal). It will be different from `amount` if the merchant is taking payment in a different currency.\n * `merchant_currency` The currency with which the merchant is taking payment.\n * `merchant_data` \n * `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.\n * `network_data` Details about the transaction, such as processing dates, set by the card network.\n * `object` String representing the object's type. Objects of the same type share the same value.\n * `purchase_details` Additional purchase information that is optionally provided by the merchant.\n * `token` [Token](https://stripe.com/docs/api/issuing/tokens/object) object used for this transaction. If a network token was not used for this transaction, this field will be null.\n * `treasury` [Treasury](https://stripe.com/docs/api/treasury) details related to this transaction if it was created on a [FinancialAccount](/docs/api/treasury/financial_accounts\n * `type` The nature of the transaction.\n * `wallet` The digital wallet used for this transaction. One of `apple_pay`, `google_pay`, or `samsung_pay`.\n" @type t :: %__MODULE__{ amount: integer, amount_details: term | nil, authorization: (binary | Stripe.Issuing.Authorization.t()) | nil, balance_transaction: (binary | Stripe.BalanceTransaction.t()) | nil, card: binary | Stripe.Issuing.Card.t(), cardholder: (binary | Stripe.Issuing.Cardholder.t()) | nil, created: integer, currency: binary, dispute: (binary | Stripe.Issuing.Dispute.t()) | nil, id: binary, livemode: boolean, merchant_amount: integer, merchant_currency: binary, merchant_data: term, metadata: term, network_data: term | nil, object: binary, purchase_details: term | nil, token: (binary | Stripe.Issuing.Token.t()) | nil, treasury: term | nil, type: binary, wallet: binary | nil } ) ( @typedoc nil @type created :: %{ optional(:gt) => integer, optional(:gte) => integer, optional(:lt) => integer, optional(:lte) => integer } ) ( @typedoc "Information about the flight that was purchased with this transaction." @type flight :: %{ optional(:departure_at) => integer, optional(:passenger_name) => binary, optional(:refundable) => boolean, optional(:segments) => list(segments), optional(:travel_agency) => binary } ) ( @typedoc "Information about fuel that was purchased with this transaction." @type fuel :: %{ optional(:type) => :diesel | :other | :unleaded_plus | :unleaded_regular | :unleaded_super, optional(:unit) => :liter | :us_gallon, optional(:unit_cost_decimal) => binary, optional(:volume_decimal) => binary } ) ( @typedoc "Information about lodging that was purchased with this transaction." @type lodging :: %{optional(:check_in_at) => integer, optional(:nights) => integer} ) ( @typedoc "Details about the seller (grocery store, e-commerce website, etc.) where the card authorization happened." @type merchant_data :: %{ optional(:category) => :ac_refrigeration_repair | :accounting_bookkeeping_services | :advertising_services | :agricultural_cooperative | :airlines_air_carriers | :airports_flying_fields | :ambulance_services | :amusement_parks_carnivals | :antique_reproductions | :antique_shops | :aquariums | :architectural_surveying_services | :art_dealers_and_galleries | :artists_supply_and_craft_shops | :auto_and_home_supply_stores | :auto_body_repair_shops | :auto_paint_shops | :auto_service_shops | :automated_cash_disburse | :automated_fuel_dispensers | :automobile_associations | :automotive_parts_and_accessories_stores | :automotive_tire_stores | :bail_and_bond_payments | :bakeries | :bands_orchestras | :barber_and_beauty_shops | :betting_casino_gambling | :bicycle_shops | :billiard_pool_establishments | :boat_dealers | :boat_rentals_and_leases | :book_stores | :books_periodicals_and_newspapers | :bowling_alleys | :bus_lines | :business_secretarial_schools | :buying_shopping_services | :cable_satellite_and_other_pay_television_and_radio | :camera_and_photographic_supply_stores | :candy_nut_and_confectionery_stores | :car_and_truck_dealers_new_used | :car_and_truck_dealers_used_only | :car_rental_agencies | :car_washes | :carpentry_services | :carpet_upholstery_cleaning | :caterers | :charitable_and_social_service_organizations_fundraising | :chemicals_and_allied_products | :child_care_services | :childrens_and_infants_wear_stores | :chiropodists_podiatrists | :chiropractors | :cigar_stores_and_stands | :civic_social_fraternal_associations | :cleaning_and_maintenance | :clothing_rental | :colleges_universities | :commercial_equipment | :commercial_footwear | :commercial_photography_art_and_graphics | :commuter_transport_and_ferries | :computer_network_services | :computer_programming | :computer_repair | :computer_software_stores | :computers_peripherals_and_software | :concrete_work_services | :construction_materials | :consulting_public_relations | :correspondence_schools | :cosmetic_stores | :counseling_services | :country_clubs | :courier_services | :court_costs | :credit_reporting_agencies | :cruise_lines | :dairy_products_stores | :dance_hall_studios_schools | :dating_escort_services | :dentists_orthodontists | :department_stores | :detective_agencies | :digital_goods_applications | :digital_goods_games | :digital_goods_large_volume | :digital_goods_media | :direct_marketing_catalog_merchant | :direct_marketing_combination_catalog_and_retail_merchant | :direct_marketing_inbound_telemarketing | :direct_marketing_insurance_services | :direct_marketing_other | :direct_marketing_outbound_telemarketing | :direct_marketing_subscription | :direct_marketing_travel | :discount_stores | :doctors | :door_to_door_sales | :drapery_window_covering_and_upholstery_stores | :drinking_places | :drug_stores_and_pharmacies | :drugs_drug_proprietaries_and_druggist_sundries | :dry_cleaners | :durable_goods | :duty_free_stores | :eating_places_restaurants | :educational_services | :electric_razor_stores | :electric_vehicle_charging | :electrical_parts_and_equipment | :electrical_services | :electronics_repair_shops | :electronics_stores | :elementary_secondary_schools | :emergency_services_gcas_visa_use_only | :employment_temp_agencies | :equipment_rental | :exterminating_services | :family_clothing_stores | :fast_food_restaurants | :financial_institutions | :fines_government_administrative_entities | :fireplace_fireplace_screens_and_accessories_stores | :floor_covering_stores | :florists | :florists_supplies_nursery_stock_and_flowers | :freezer_and_locker_meat_provisioners | :fuel_dealers_non_automotive | :funeral_services_crematories | :furniture_home_furnishings_and_equipment_stores_except_appliances | :furniture_repair_refinishing | :furriers_and_fur_shops | :general_services | :gift_card_novelty_and_souvenir_shops | :glass_paint_and_wallpaper_stores | :glassware_crystal_stores | :golf_courses_public | :government_licensed_horse_dog_racing_us_region_only | :government_licensed_online_casions_online_gambling_us_region_only | :government_owned_lotteries_non_us_region | :government_owned_lotteries_us_region_only | :government_services | :grocery_stores_supermarkets | :hardware_equipment_and_supplies | :hardware_stores | :health_and_beauty_spas | :hearing_aids_sales_and_supplies | :heating_plumbing_a_c | :hobby_toy_and_game_shops | :home_supply_warehouse_stores | :hospitals | :hotels_motels_and_resorts | :household_appliance_stores | :industrial_supplies | :information_retrieval_services | :insurance_default | :insurance_underwriting_premiums | :intra_company_purchases | :jewelry_stores_watches_clocks_and_silverware_stores | :landscaping_services | :laundries | :laundry_cleaning_services | :legal_services_attorneys | :luggage_and_leather_goods_stores | :lumber_building_materials_stores | :manual_cash_disburse | :marinas_service_and_supplies | :marketplaces | :masonry_stonework_and_plaster | :massage_parlors | :medical_and_dental_labs | :medical_dental_ophthalmic_and_hospital_equipment_and_supplies | :medical_services | :membership_organizations | :mens_and_boys_clothing_and_accessories_stores | :mens_womens_clothing_stores | :metal_service_centers | :miscellaneous_apparel_and_accessory_shops | :miscellaneous_auto_dealers | :miscellaneous_business_services | :miscellaneous_food_stores | :miscellaneous_general_merchandise | :miscellaneous_general_services | :miscellaneous_home_furnishing_specialty_stores | :miscellaneous_publishing_and_printing | :miscellaneous_recreation_services | :miscellaneous_repair_shops | :miscellaneous_specialty_retail | :mobile_home_dealers | :motion_picture_theaters | :motor_freight_carriers_and_trucking | :motor_homes_dealers | :motor_vehicle_supplies_and_new_parts | :motorcycle_shops_and_dealers | :motorcycle_shops_dealers | :music_stores_musical_instruments_pianos_and_sheet_music | :news_dealers_and_newsstands | :non_fi_money_orders | :non_fi_stored_value_card_purchase_load | :nondurable_goods | :nurseries_lawn_and_garden_supply_stores | :nursing_personal_care | :office_and_commercial_furniture | :opticians_eyeglasses | :optometrists_ophthalmologist | :orthopedic_goods_prosthetic_devices | :osteopaths | :package_stores_beer_wine_and_liquor | :paints_varnishes_and_supplies | :parking_lots_garages | :passenger_railways | :pawn_shops | :pet_shops_pet_food_and_supplies | :petroleum_and_petroleum_products | :photo_developing | :photographic_photocopy_microfilm_equipment_and_supplies | :photographic_studios | :picture_video_production | :piece_goods_notions_and_other_dry_goods | :plumbing_heating_equipment_and_supplies | :political_organizations | :postal_services_government_only | :precious_stones_and_metals_watches_and_jewelry | :professional_services | :public_warehousing_and_storage | :quick_copy_repro_and_blueprint | :railroads | :real_estate_agents_and_managers_rentals | :record_stores | :recreational_vehicle_rentals | :religious_goods_stores | :religious_organizations | :roofing_siding_sheet_metal | :secretarial_support_services | :security_brokers_dealers | :service_stations | :sewing_needlework_fabric_and_piece_goods_stores | :shoe_repair_hat_cleaning | :shoe_stores | :small_appliance_repair | :snowmobile_dealers | :special_trade_services | :specialty_cleaning | :sporting_goods_stores | :sporting_recreation_camps | :sports_and_riding_apparel_stores | :sports_clubs_fields | :stamp_and_coin_stores | :stationary_office_supplies_printing_and_writing_paper | :stationery_stores_office_and_school_supply_stores | :swimming_pools_sales | :t_ui_travel_germany | :tailors_alterations | :tax_payments_government_agencies | :tax_preparation_services | :taxicabs_limousines | :telecommunication_equipment_and_telephone_sales | :telecommunication_services | :telegraph_services | :tent_and_awning_shops | :testing_laboratories | :theatrical_ticket_agencies | :timeshares | :tire_retreading_and_repair | :tolls_bridge_fees | :tourist_attractions_and_exhibits | :towing_services | :trailer_parks_campgrounds | :transportation_services | :travel_agencies_tour_operators | :truck_stop_iteration | :truck_utility_trailer_rentals | :typesetting_plate_making_and_related_services | :typewriter_stores | :u_s_federal_government_agencies_or_departments | :uniforms_commercial_clothing | :used_merchandise_and_secondhand_stores | :utilities | :variety_stores | :veterinary_services | :video_amusement_game_supplies | :video_game_arcades | :video_tape_rental_stores | :vocational_trade_schools | :watch_jewelry_repair | :welding_repair | :wholesale_clubs | :wig_and_toupee_stores | :wires_money_orders | :womens_accessory_and_specialty_shops | :womens_ready_to_wear_stores | :wrecking_and_salvage_yards, optional(:city) => binary, optional(:country) => binary, optional(:name) => binary, optional(:network_id) => binary, optional(:postal_code) => binary, optional(:state) => binary, optional(:terminal_id) => binary, optional(:url) => binary } ) ( @typedoc "Additional purchase information that is optionally provided by the merchant." @type purchase_details :: %{ optional(:flight) => flight, optional(:fuel) => fuel, optional(:lodging) => lodging, optional(:receipt) => list(receipt), optional(:reference) => binary } ) ( @typedoc nil @type receipt :: %{ optional(:description) => binary, optional(:quantity) => binary, optional(:total) => integer, optional(:unit_cost) => integer } ) ( @typedoc nil @type segments :: %{ optional(:arrival_airport_code) => binary, optional(:carrier) => binary, optional(:departure_airport_code) => binary, optional(:flight_number) => binary, optional(:service_class) => binary, optional(:stopover_allowed) => boolean } ) ( nil @doc "

Returns a list of Issuing Transaction objects. The objects are sorted in descending order by creation date, with the most recently created object appearing first.

\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/issuing/transactions`\n" ( @spec list( params :: %{ optional(:card) => binary, optional(:cardholder) => binary, optional(:created) => created | integer, optional(:ending_before) => binary, optional(:expand) => list(binary), optional(:limit) => integer, optional(:starting_after) => binary, optional(:type) => :capture | :refund }, opts :: Keyword.t() ) :: {:ok, Stripe.List.t(Stripe.Issuing.Transaction.t())} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def list(params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params("/v1/issuing/transactions", [], []) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:get) |> Stripe.Request.make_request() end ) ) ( nil @doc "

Retrieves an Issuing Transaction object.

\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/issuing/transactions/{transaction}`\n" ( @spec retrieve( transaction :: binary(), params :: %{optional(:expand) => list(binary)}, opts :: Keyword.t() ) :: {:ok, Stripe.Issuing.Transaction.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def retrieve(transaction, params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params( "/v1/issuing/transactions/{transaction}", [ %OpenApiGen.Blueprint.Parameter{ in: "path", name: "transaction", required: true, schema: %OpenApiGen.Blueprint.Parameter.Schema{ name: "transaction", title: nil, type: "string", items: [], properties: [], any_of: [] } } ], [transaction] ) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:get) |> Stripe.Request.make_request() end ) ) ( nil @doc "

Updates the specified Issuing Transaction object by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

\n\n#### Details\n\n * Method: `post`\n * Path: `/v1/issuing/transactions/{transaction}`\n" ( @spec update( transaction :: binary(), params :: %{ optional(:expand) => list(binary), optional(:metadata) => %{optional(binary) => binary} | binary }, opts :: Keyword.t() ) :: {:ok, Stripe.Issuing.Transaction.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def update(transaction, params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params( "/v1/issuing/transactions/{transaction}", [ %OpenApiGen.Blueprint.Parameter{ in: "path", name: "transaction", required: true, schema: %OpenApiGen.Blueprint.Parameter.Schema{ name: "transaction", title: nil, type: "string", items: [], properties: [], any_of: [] } } ], [transaction] ) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:post) |> Stripe.Request.make_request() end ) ) ( nil @doc "

Allows the user to capture an arbitrary amount, also known as a forced capture.

\n\n#### Details\n\n * Method: `post`\n * Path: `/v1/test_helpers/issuing/transactions/create_force_capture`\n" ( @spec create_force_capture( params :: %{ optional(:amount) => integer, optional(:card) => binary, optional(:currency) => binary, optional(:expand) => list(binary), optional(:merchant_data) => merchant_data, optional(:purchase_details) => purchase_details }, opts :: Keyword.t() ) :: {:ok, Stripe.Issuing.Transaction.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def create_force_capture(params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params( "/v1/test_helpers/issuing/transactions/create_force_capture", [], [] ) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:post) |> Stripe.Request.make_request() end ) ) ( nil @doc "

Allows the user to refund an arbitrary amount, also known as a unlinked refund.

\n\n#### Details\n\n * Method: `post`\n * Path: `/v1/test_helpers/issuing/transactions/create_unlinked_refund`\n" ( @spec create_unlinked_refund( params :: %{ optional(:amount) => integer, optional(:card) => binary, optional(:currency) => binary, optional(:expand) => list(binary), optional(:merchant_data) => merchant_data, optional(:purchase_details) => purchase_details }, opts :: Keyword.t() ) :: {:ok, Stripe.Issuing.Transaction.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def create_unlinked_refund(params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params( "/v1/test_helpers/issuing/transactions/create_unlinked_refund", [], [] ) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:post) |> Stripe.Request.make_request() end ) ) ( nil @doc "

Refund a test-mode Transaction.

\n\n#### Details\n\n * Method: `post`\n * Path: `/v1/test_helpers/issuing/transactions/{transaction}/refund`\n" ( @spec refund( transaction :: binary(), params :: %{optional(:expand) => list(binary), optional(:refund_amount) => integer}, opts :: Keyword.t() ) :: {:ok, Stripe.Issuing.Transaction.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def refund(transaction, params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params( "/v1/test_helpers/issuing/transactions/{transaction}/refund", [ %OpenApiGen.Blueprint.Parameter{ in: "path", name: "transaction", required: true, schema: %OpenApiGen.Blueprint.Parameter.Schema{ name: "transaction", title: nil, type: "string", items: [], properties: [], any_of: [] } } ], [transaction] ) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:post) |> Stripe.Request.make_request() end ) ) end