Class: Stripe::Quote

Inherits:
APIResource show all
Extended by:
APIOperations::Create, APIOperations::List, APIOperations::NestedResource
Includes:
APIOperations::Save
Defined in:
lib/stripe/resources/quote.rb

Overview

A Quote is a way to model prices that you’d like to provide to a customer. Once accepted, it will automatically create an invoice, subscription or subscription schedule.

Defined Under Namespace

Classes: AutomaticTax, Computed, FromQuote, InvoiceSettings, StatusDetails, StatusTransitions, SubscriptionData, SubscriptionDataOverride, SubscriptionSchedule, TotalDetails, TransferData

Constant Summary collapse

OBJECT_NAME =
"quote"

Constants inherited from StripeObject

StripeObject::RESERVED_FIELD_NAMES

Instance Attribute Summary collapse

Attributes inherited from APIResource

#save_with_parent

Attributes inherited from StripeObject

#last_response

Class Method Summary collapse

Instance Method Summary collapse

Methods included from APIOperations::Create

create

Methods included from APIOperations::List

list

Methods included from APIOperations::NestedResource

nested_resource_class_methods

Methods included from APIOperations::Save

included, #save

Methods inherited from APIResource

class_name, custom_method, #refresh, #request_stripe_object, resource_url, #resource_url, retrieve, save_nested_resource

Methods included from APIOperations::Request

included

Methods inherited from StripeObject

#==, #[], #[]=, #_get_inner_class_type, additive_object_param, additive_object_param?, #as_json, construct_from, #deleted?, #dirty!, #each, #eql?, field_encodings, #hash, #initialize, #inspect, #keys, #marshal_dump, #marshal_load, protected_fields, #serialize_params, #to_hash, #to_json, #to_s, #update_attributes, #values

Constructor Details

This class inherits a constructor from Stripe::StripeObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Stripe::StripeObject

Instance Attribute Details

#allow_backdated_linesObject (readonly)

Allow quote lines to have ‘starts_at` in the past if collection is paused between `starts_at` and now.



894
895
896
# File 'lib/stripe/resources/quote.rb', line 894

def allow_backdated_lines
  @allow_backdated_lines
end

#amount_subtotalObject (readonly)

Total before any discounts or taxes are applied.



896
897
898
# File 'lib/stripe/resources/quote.rb', line 896

def amount_subtotal
  @amount_subtotal
end

#amount_totalObject (readonly)

Total after discounts and taxes are applied.



898
899
900
# File 'lib/stripe/resources/quote.rb', line 898

def amount_total
  @amount_total
end

#applicationObject (readonly)

ID of the Connect Application that created the quote.



900
901
902
# File 'lib/stripe/resources/quote.rb', line 900

def application
  @application
end

#application_fee_amountObject (readonly)

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. Only applicable if there are no line items with recurring prices on the quote.



902
903
904
# File 'lib/stripe/resources/quote.rb', line 902

def application_fee_amount
  @application_fee_amount
end

#application_fee_percentObject (readonly)

A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the application owner’s Stripe account. Only applicable if there are line items with recurring prices on the quote.



904
905
906
# File 'lib/stripe/resources/quote.rb', line 904

def application_fee_percent
  @application_fee_percent
end

#automatic_taxObject (readonly)

Attribute for field automatic_tax



906
907
908
# File 'lib/stripe/resources/quote.rb', line 906

def automatic_tax
  @automatic_tax
end

#collection_methodObject (readonly)

Either ‘charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or on 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 and mark the subscription as `active`. Defaults to `charge_automatically`.



908
909
910
# File 'lib/stripe/resources/quote.rb', line 908

def collection_method
  @collection_method
end

#computedObject (readonly)

Attribute for field computed



910
911
912
# File 'lib/stripe/resources/quote.rb', line 910

def computed
  @computed
end

#createdObject (readonly)

Time at which the object was created. Measured in seconds since the Unix epoch.



912
913
914
# File 'lib/stripe/resources/quote.rb', line 912

def created
  @created
end

#currencyObject (readonly)

Three-letter [ISO currency code](www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](stripe.com/docs/currencies).



914
915
916
# File 'lib/stripe/resources/quote.rb', line 914

def currency
  @currency
end

#customerObject (readonly)

The customer who received this quote. A customer is required to finalize the quote. Once specified, you can’t change it.



916
917
918
# File 'lib/stripe/resources/quote.rb', line 916

def customer
  @customer
end

#customer_accountObject (readonly)

The account representing the customer who received this quote. A customer or account is required to finalize the quote. Once specified, you can’t change it.



918
919
920
# File 'lib/stripe/resources/quote.rb', line 918

def 
  @customer_account
end

#default_tax_ratesObject (readonly)

The tax rates applied to this quote.



920
921
922
# File 'lib/stripe/resources/quote.rb', line 920

def default_tax_rates
  @default_tax_rates
end

#descriptionObject (readonly)

A description that will be displayed on the quote PDF.



922
923
924
# File 'lib/stripe/resources/quote.rb', line 922

def description
  @description
end

#discountsObject (readonly)

The discounts applied to this quote.



924
925
926
# File 'lib/stripe/resources/quote.rb', line 924

def discounts
  @discounts
end

#expires_atObject (readonly)

The date on which the quote will be canceled if in ‘open` or `draft` status. Measured in seconds since the Unix epoch.



926
927
928
# File 'lib/stripe/resources/quote.rb', line 926

def expires_at
  @expires_at
end

A footer that will be displayed on the quote PDF.



928
929
930
# File 'lib/stripe/resources/quote.rb', line 928

def footer
  @footer
end

#from_quoteObject (readonly)

Details of the quote that was cloned. See the [cloning documentation](docs.stripe.com/quotes/clone) for more details.



930
931
932
# File 'lib/stripe/resources/quote.rb', line 930

def from_quote
  @from_quote
end

#headerObject (readonly)

A header that will be displayed on the quote PDF.



932
933
934
# File 'lib/stripe/resources/quote.rb', line 932

def header
  @header
end

#idObject (readonly)

Unique identifier for the object.



934
935
936
# File 'lib/stripe/resources/quote.rb', line 934

def id
  @id
end

#invoiceObject (readonly)

The invoice that was created from this quote.



936
937
938
# File 'lib/stripe/resources/quote.rb', line 936

def invoice
  @invoice
end

#invoice_settingsObject (readonly)

Attribute for field invoice_settings



938
939
940
# File 'lib/stripe/resources/quote.rb', line 938

def invoice_settings
  @invoice_settings
end

#line_itemsObject (readonly)

A list of items the customer is being quoted for.



940
941
942
# File 'lib/stripe/resources/quote.rb', line 940

def line_items
  @line_items
end

#linesObject (readonly)

A list of [quote lines](docs.stripe.com/api/quote_lines) on the quote. These lines describe changes, in the order provided, that will be used to create new subscription schedules or update existing subscription schedules when the quote is accepted.



942
943
944
# File 'lib/stripe/resources/quote.rb', line 942

def lines
  @lines
end

#livemodeObject (readonly)

If the object exists in live mode, the value is ‘true`. If the object exists in test mode, the value is `false`.



944
945
946
# File 'lib/stripe/resources/quote.rb', line 944

def livemode
  @livemode
end

#metadataObject (readonly)

Set of [key-value pairs](docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.



946
947
948
# File 'lib/stripe/resources/quote.rb', line 946

def 
  @metadata
end

#numberObject (readonly)

A unique number that identifies this particular quote. This number is assigned once the quote is [finalized](docs.stripe.com/quotes/overview#finalize).



948
949
950
# File 'lib/stripe/resources/quote.rb', line 948

def number
  @number
end

#objectObject (readonly)

String representing the object’s type. Objects of the same type share the same value.



950
951
952
# File 'lib/stripe/resources/quote.rb', line 950

def object
  @object
end

#on_behalf_ofObject (readonly)

The account on behalf of which to charge. See the [Connect documentation](support.stripe.com/questions/sending-invoices-on-behalf-of-connected-accounts) for details.



952
953
954
# File 'lib/stripe/resources/quote.rb', line 952

def on_behalf_of
  @on_behalf_of
end

#statusObject (readonly)

The status of the quote.



954
955
956
# File 'lib/stripe/resources/quote.rb', line 954

def status
  @status
end

#status_detailsObject (readonly)

Details on when and why a quote has been marked as stale or canceled.



956
957
958
# File 'lib/stripe/resources/quote.rb', line 956

def status_details
  @status_details
end

#status_transitionsObject (readonly)

Attribute for field status_transitions



958
959
960
# File 'lib/stripe/resources/quote.rb', line 958

def status_transitions
  @status_transitions
end

#subscriptionObject (readonly)

The subscription that was created or updated from this quote.



960
961
962
# File 'lib/stripe/resources/quote.rb', line 960

def subscription
  @subscription
end

#subscription_dataObject (readonly)

Attribute for field subscription_data



962
963
964
# File 'lib/stripe/resources/quote.rb', line 962

def subscription_data
  @subscription_data
end

#subscription_data_overridesObject (readonly)

List representing overrides for ‘subscription_data` configurations for specific subscription schedules.



964
965
966
# File 'lib/stripe/resources/quote.rb', line 964

def subscription_data_overrides
  @subscription_data_overrides
end

#subscription_scheduleObject (readonly)

The subscription schedule that was created or updated from this quote.



966
967
968
# File 'lib/stripe/resources/quote.rb', line 966

def subscription_schedule
  @subscription_schedule
end

#subscription_schedulesObject (readonly)

The subscription schedules that were created or updated from this quote.



968
969
970
# File 'lib/stripe/resources/quote.rb', line 968

def subscription_schedules
  @subscription_schedules
end

#test_clockObject (readonly)

ID of the test clock this quote belongs to.



970
971
972
# File 'lib/stripe/resources/quote.rb', line 970

def test_clock
  @test_clock
end

#total_detailsObject (readonly)

Attribute for field total_details



972
973
974
# File 'lib/stripe/resources/quote.rb', line 972

def total_details
  @total_details
end

#transfer_dataObject (readonly)

The account (if any) the payments will be attributed to for tax reporting, and where funds from each payment will be transferred to for each of the invoices.



974
975
976
# File 'lib/stripe/resources/quote.rb', line 974

def transfer_data
  @transfer_data
end

Class Method Details

.accept(quote, params = {}, opts = {}) ⇒ Object

Accepts the specified quote.



987
988
989
990
991
992
993
994
# File 'lib/stripe/resources/quote.rb', line 987

def self.accept(quote, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/accept", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.cancel(quote, params = {}, opts = {}) ⇒ Object

Cancels the quote.



1007
1008
1009
1010
1011
1012
1013
1014
# File 'lib/stripe/resources/quote.rb', line 1007

def self.cancel(quote, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/cancel", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.create(params = {}, opts = {}) ⇒ Object

A quote models prices and services for a customer. Default options for header, description, footer, and expires_at can be set in the dashboard via the [quote template](dashboard.stripe.com/settings/billing/quote).



1017
1018
1019
# File 'lib/stripe/resources/quote.rb', line 1017

def self.create(params = {}, opts = {})
  request_stripe_object(method: :post, path: "/v1/quotes", params: params, opts: opts)
end

.field_remappingsObject



1238
1239
1240
# File 'lib/stripe/resources/quote.rb', line 1238

def self.field_remappings
  @field_remappings = {}
end

.finalize_quote(quote, params = {}, opts = {}) ⇒ Object

Finalizes the quote.



1032
1033
1034
1035
1036
1037
1038
1039
# File 'lib/stripe/resources/quote.rb', line 1032

def self.finalize_quote(quote, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/finalize", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.inner_class_typesObject



1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
# File 'lib/stripe/resources/quote.rb', line 1222

def self.inner_class_types
  @inner_class_types = {
    automatic_tax: AutomaticTax,
    computed: Computed,
    from_quote: FromQuote,
    invoice_settings: InvoiceSettings,
    status_details: StatusDetails,
    status_transitions: StatusTransitions,
    subscription_data: SubscriptionData,
    subscription_data_overrides: SubscriptionDataOverride,
    subscription_schedules: SubscriptionSchedule,
    total_details: TotalDetails,
    transfer_data: TransferData,
  }
end

.list(params = {}, opts = {}) ⇒ Object

Returns a list of your quotes.



1042
1043
1044
# File 'lib/stripe/resources/quote.rb', line 1042

def self.list(params = {}, opts = {})
  request_stripe_object(method: :get, path: "/v1/quotes", params: params, opts: opts)
end

.list_computed_upfront_line_items(quote, params = {}, opts = {}) ⇒ Object

When retrieving a quote, there is an includable [computed.upfront.line_items](stripe.com/docs/api/quotes/object#quote_object-computed-upfront-line_items) property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of upfront line items.



1057
1058
1059
1060
1061
1062
1063
1064
# File 'lib/stripe/resources/quote.rb', line 1057

def self.list_computed_upfront_line_items(quote, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/computed_upfront_line_items", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.list_line_items(quote, params = {}, opts = {}) ⇒ Object

When retrieving a quote, there is an includable line_items property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.



1077
1078
1079
1080
1081
1082
1083
1084
# File 'lib/stripe/resources/quote.rb', line 1077

def self.list_line_items(quote, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/line_items", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.list_lines(quote, params = {}, opts = {}) ⇒ Object

Retrieves a paginated list of lines for a quote. These lines describe changes that will be used to create new subscription schedules or update existing subscription schedules when the quote is accepted.



1097
1098
1099
1100
1101
1102
1103
1104
# File 'lib/stripe/resources/quote.rb', line 1097

def self.list_lines(quote, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/lines", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.list_preview_invoice_lines(quote, preview_invoice, params = {}, opts = {}) ⇒ Object

Preview the invoice line items that would be generated by accepting the quote.



1117
1118
1119
1120
1121
1122
1123
1124
# File 'lib/stripe/resources/quote.rb', line 1117

def self.list_preview_invoice_lines(quote, preview_invoice, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/preview_invoices/%<preview_invoice>s/lines", { quote: CGI.escape(quote), preview_invoice: CGI.escape(preview_invoice) }),
    params: params,
    opts: opts
  )
end

.mark_draft(quote, params = {}, opts = {}) ⇒ Object

Converts a stale quote to draft.



1137
1138
1139
1140
1141
1142
1143
1144
# File 'lib/stripe/resources/quote.rb', line 1137

def self.mark_draft(quote, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/mark_draft", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.mark_stale(quote, params = {}, opts = {}) ⇒ Object

Converts a draft or open quote to stale.



1157
1158
1159
1160
1161
1162
1163
1164
# File 'lib/stripe/resources/quote.rb', line 1157

def self.mark_stale(quote, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/mark_stale", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.object_nameObject



14
15
16
# File 'lib/stripe/resources/quote.rb', line 14

def self.object_name
  "quote"
end

.pdf(quote, params = {}, opts = {}, &read_body_chunk_block) ⇒ Object

Download the PDF for a finalized quote. Explanation for special handling can be found [here](docs.stripe.com/quotes/overview#quote_pdf)



1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
# File 'lib/stripe/resources/quote.rb', line 1180

def self.pdf(quote, params = {}, opts = {}, &read_body_chunk_block)
  opts = { api_base: APIRequestor.active_requestor.config.uploads_base }.merge(opts)
  execute_resource_request_stream(
    :get,
    format("/v1/quotes/%<quote>s/pdf", { quote: CGI.escape(quote) }),
    :files,
    params,
    opts,
    &read_body_chunk_block
  )
end

.reestimate(quote, params = {}, opts = {}) ⇒ Object

Recompute the upcoming invoice estimate for the quote.



1203
1204
1205
1206
1207
1208
1209
1210
# File 'lib/stripe/resources/quote.rb', line 1203

def self.reestimate(quote, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/reestimate", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

.update(quote, params = {}, opts = {}) ⇒ Object

A quote models prices and services for a customer.



1213
1214
1215
1216
1217
1218
1219
1220
# File 'lib/stripe/resources/quote.rb', line 1213

def self.update(quote, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s", { quote: CGI.escape(quote) }),
    params: params,
    opts: opts
  )
end

Instance Method Details

#accept(params = {}, opts = {}) ⇒ Object

Accepts the specified quote.



977
978
979
980
981
982
983
984
# File 'lib/stripe/resources/quote.rb', line 977

def accept(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/accept", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#cancel(params = {}, opts = {}) ⇒ Object

Cancels the quote.



997
998
999
1000
1001
1002
1003
1004
# File 'lib/stripe/resources/quote.rb', line 997

def cancel(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/cancel", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#finalize_quote(params = {}, opts = {}) ⇒ Object

Finalizes the quote.



1022
1023
1024
1025
1026
1027
1028
1029
# File 'lib/stripe/resources/quote.rb', line 1022

def finalize_quote(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/finalize", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#list_computed_upfront_line_items(params = {}, opts = {}) ⇒ Object

When retrieving a quote, there is an includable [computed.upfront.line_items](stripe.com/docs/api/quotes/object#quote_object-computed-upfront-line_items) property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of upfront line items.



1047
1048
1049
1050
1051
1052
1053
1054
# File 'lib/stripe/resources/quote.rb', line 1047

def list_computed_upfront_line_items(params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/computed_upfront_line_items", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#list_line_items(params = {}, opts = {}) ⇒ Object

When retrieving a quote, there is an includable line_items property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.



1067
1068
1069
1070
1071
1072
1073
1074
# File 'lib/stripe/resources/quote.rb', line 1067

def list_line_items(params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/line_items", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#list_lines(params = {}, opts = {}) ⇒ Object

Retrieves a paginated list of lines for a quote. These lines describe changes that will be used to create new subscription schedules or update existing subscription schedules when the quote is accepted.



1087
1088
1089
1090
1091
1092
1093
1094
# File 'lib/stripe/resources/quote.rb', line 1087

def list_lines(params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/lines", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#list_preview_invoice_lines(preview_invoice, params = {}, opts = {}) ⇒ Object

Preview the invoice line items that would be generated by accepting the quote.



1107
1108
1109
1110
1111
1112
1113
1114
# File 'lib/stripe/resources/quote.rb', line 1107

def list_preview_invoice_lines(preview_invoice, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/quotes/%<quote>s/preview_invoices/%<preview_invoice>s/lines", { quote: CGI.escape(self["id"]), preview_invoice: CGI.escape(preview_invoice) }),
    params: params,
    opts: opts
  )
end

#mark_draft(params = {}, opts = {}) ⇒ Object

Converts a stale quote to draft.



1127
1128
1129
1130
1131
1132
1133
1134
# File 'lib/stripe/resources/quote.rb', line 1127

def mark_draft(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/mark_draft", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#mark_stale(params = {}, opts = {}) ⇒ Object

Converts a draft or open quote to stale.



1147
1148
1149
1150
1151
1152
1153
1154
# File 'lib/stripe/resources/quote.rb', line 1147

def mark_stale(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/mark_stale", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#pdf(params = {}, opts = {}, &read_body_chunk_block) ⇒ Object

Download the PDF for a finalized quote. Explanation for special handling can be found [here](docs.stripe.com/quotes/overview#quote_pdf)



1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
# File 'lib/stripe/resources/quote.rb', line 1167

def pdf(params = {}, opts = {}, &read_body_chunk_block)
  opts = { api_base: APIRequestor.active_requestor.config.uploads_base }.merge(opts)
  request_stream(
    method: :get,
    path: format("/v1/quotes/%<quote>s/pdf", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts,
    base_address: :files,
    &read_body_chunk_block
  )
end

#reestimate(params = {}, opts = {}) ⇒ Object

Recompute the upcoming invoice estimate for the quote.



1193
1194
1195
1196
1197
1198
1199
1200
# File 'lib/stripe/resources/quote.rb', line 1193

def reestimate(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/quotes/%<quote>s/reestimate", { quote: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end