Class: Stripe::Customer

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

Overview

This object represents a customer of your business. Use it to [create recurring charges](stripe.com/docs/invoicing/customer), [save payment](stripe.com/docs/payments/save-during-payment) and contact information, and track payments that belong to the same customer.

Defined Under Namespace

Classes: Address, CreateFundingInstructionsParams, CreateParams, DeleteDiscountParams, DeleteParams, FundCashBalanceParams, InvoiceSettings, ListParams, ListPaymentMethodsParams, RetrieveParams, RetrievePaymentMethodParams, SearchParams, Shipping, Tax, TestHelpers, UpdateParams

Constant Summary collapse

OBJECT_NAME =
"customer"

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::Search

_search

Methods included from APIOperations::Save

included, #save

Methods included from APIOperations::Delete

included

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

#==, #[], #[]=, additive_object_param, additive_object_param?, #as_json, construct_from, #deleted?, #dirty!, #each, #eql?, #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

#addressObject (readonly)

The customer’s address.



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

def address
  @address
end

#balanceObject (readonly)

The current balance, if any, that’s stored on the customer. If negative, the customer has credit to apply to their next invoice. If positive, the customer has an amount owed that’s added to their next invoice. The balance only considers amounts that Stripe hasn’t successfully applied to any invoice. It doesn’t reflect unpaid invoices. This balance is only taken into account after invoices finalize.



931
932
933
# File 'lib/stripe/resources/customer.rb', line 931

def balance
  @balance
end

#cash_balanceObject (readonly)

The current funds being held by Stripe on behalf of the customer. You can apply these funds towards payment intents when the source is “cash_balance”. The ‘settings` field describes if these funds apply to these payment intents manually or automatically.



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

def cash_balance
  @cash_balance
end

#createdObject (readonly)

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



937
938
939
# File 'lib/stripe/resources/customer.rb', line 937

def created
  @created
end

#currencyObject (readonly)

Three-letter [ISO code for the currency](stripe.com/docs/currencies) the customer can be charged in for recurring billing purposes.



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

def currency
  @currency
end

#default_sourceObject (readonly)

ID of the default payment source for the customer.

If you use payment methods created through the PaymentMethods API, see the [invoice_settings.default_payment_method](stripe.com/docs/api/customers/object#customer_object-invoice_settings-default_payment_method) field instead.



945
946
947
# File 'lib/stripe/resources/customer.rb', line 945

def default_source
  @default_source
end

#deletedObject (readonly)

Always true for a deleted object



1018
1019
1020
# File 'lib/stripe/resources/customer.rb', line 1018

def deleted
  @deleted
end

#delinquentObject (readonly)

Tracks the most recent state change on any invoice belonging to the customer. Paying an invoice or marking it uncollectible via the API will set this field to false. An automatic payment failure or passing the ‘invoice.due_date` will set this field to `true`.

If an invoice becomes uncollectible by [dunning](stripe.com/docs/billing/automatic-collection), ‘delinquent` doesn’t reset to ‘false`.

If you care whether the customer has paid their most recent subscription invoice, use ‘subscription.status` instead. Paying or marking uncollectible any customer invoice regardless of whether it is the latest invoice for a subscription will always set this field to `false`.



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

def delinquent
  @delinquent
end

#descriptionObject (readonly)

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



955
956
957
# File 'lib/stripe/resources/customer.rb', line 955

def description
  @description
end

#discountObject (readonly)

Describes the current discount active on the customer, if there is one.



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

def discount
  @discount
end

#emailObject (readonly)

The customer’s email address.



961
962
963
# File 'lib/stripe/resources/customer.rb', line 961

def email
  @email
end

#idObject (readonly)

Unique identifier for the object.



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

def id
  @id
end

#invoice_credit_balanceObject (readonly)

The current multi-currency balances, if any, that’s stored on the customer. If positive in a currency, the customer has a credit to apply to their next invoice denominated in that currency. If negative, the customer has an amount owed that’s added to their next invoice denominated in that currency. These balances don’t apply to unpaid invoices. They solely track amounts that Stripe hasn’t successfully applied to any invoice. Stripe only applies a balance in a specific currency to an invoice after that invoice (which is in the same currency) finalizes.



967
968
969
# File 'lib/stripe/resources/customer.rb', line 967

def invoice_credit_balance
  @invoice_credit_balance
end

#invoice_prefixObject (readonly)

The prefix for the customer used to generate unique invoice numbers.



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

def invoice_prefix
  @invoice_prefix
end

#invoice_settingsObject (readonly)

Attribute for field invoice_settings



973
974
975
# File 'lib/stripe/resources/customer.rb', line 973

def invoice_settings
  @invoice_settings
end

#livemodeObject (readonly)

Has the value ‘true` if the object exists in live mode or the value `false` if the object exists in test mode.



976
977
978
# File 'lib/stripe/resources/customer.rb', line 976

def livemode
  @livemode
end

#metadataObject (readonly)

Set of [key-value pairs](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.



979
980
981
# File 'lib/stripe/resources/customer.rb', line 979

def 
  @metadata
end

#nameObject (readonly)

The customer’s full name or business name.



982
983
984
# File 'lib/stripe/resources/customer.rb', line 982

def name
  @name
end

#next_invoice_sequenceObject (readonly)

The suffix of the customer’s next invoice number (for example, 0001). When the account uses account level sequencing, this parameter is ignored in API requests and the field omitted in API responses.



985
986
987
# File 'lib/stripe/resources/customer.rb', line 985

def next_invoice_sequence
  @next_invoice_sequence
end

#objectObject (readonly)

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



988
989
990
# File 'lib/stripe/resources/customer.rb', line 988

def object
  @object
end

#phoneObject (readonly)

The customer’s phone number.



991
992
993
# File 'lib/stripe/resources/customer.rb', line 991

def phone
  @phone
end

#preferred_localesObject (readonly)

The customer’s preferred locales (languages), ordered by preference.



994
995
996
# File 'lib/stripe/resources/customer.rb', line 994

def preferred_locales
  @preferred_locales
end

#shippingObject (readonly)

Mailing and shipping address for the customer. Appears on invoices emailed to this customer.



997
998
999
# File 'lib/stripe/resources/customer.rb', line 997

def shipping
  @shipping
end

#sourcesObject (readonly)

The customer’s payment sources, if any.



1000
1001
1002
# File 'lib/stripe/resources/customer.rb', line 1000

def sources
  @sources
end

#subscriptionsObject (readonly)

The customer’s current subscriptions, if any.



1003
1004
1005
# File 'lib/stripe/resources/customer.rb', line 1003

def subscriptions
  @subscriptions
end

#taxObject (readonly)

Attribute for field tax



1006
1007
1008
# File 'lib/stripe/resources/customer.rb', line 1006

def tax
  @tax
end

#tax_exemptObject (readonly)

Describes the customer’s tax exemption status, which is ‘none`, `exempt`, or `reverse`. When set to `reverse`, invoice and receipt PDFs include the following text: **“Reverse charge”**.



1009
1010
1011
# File 'lib/stripe/resources/customer.rb', line 1009

def tax_exempt
  @tax_exempt
end

#tax_idsObject (readonly)

The customer’s tax IDs.



1012
1013
1014
# File 'lib/stripe/resources/customer.rb', line 1012

def tax_ids
  @tax_ids
end

#test_clockObject (readonly)

ID of the test clock that this customer belongs to.



1015
1016
1017
# File 'lib/stripe/resources/customer.rb', line 1015

def test_clock
  @test_clock
end

Class Method Details

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

Creates a new customer object.



1021
1022
1023
# File 'lib/stripe/resources/customer.rb', line 1021

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

.create_funding_instructions(customer, params = {}, opts = {}) ⇒ Object

Retrieve funding instructions for a customer cash balance. If funding instructions do not yet exist for the customer, new funding instructions will be created. If funding instructions have already been created for a given customer, the same funding instructions will be retrieved. In other words, we will return the same funding instructions each time.



1040
1041
1042
1043
1044
1045
1046
1047
# File 'lib/stripe/resources/customer.rb', line 1040

def self.create_funding_instructions(customer, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/customers/%<customer>s/funding_instructions", { customer: CGI.escape(customer) }),
    params: params,
    opts: opts
  )
end

.delete(id, params = {}, opts = {}) ⇒ Object

Permanently deletes a customer. It cannot be undone. Also immediately cancels any active subscriptions on the customer.



1050
1051
1052
1053
1054
1055
1056
1057
# File 'lib/stripe/resources/customer.rb', line 1050

def self.delete(id, params = {}, opts = {})
  request_stripe_object(
    method: :delete,
    path: format("/v1/customers/%<id>s", { id: CGI.escape(id) }),
    params: params,
    opts: opts
  )
end

.delete_discount(customer, params = {}, opts = {}) ⇒ Object

Removes the currently applied discount on a customer.



1080
1081
1082
1083
1084
1085
1086
1087
# File 'lib/stripe/resources/customer.rb', line 1080

def self.delete_discount(customer, params = {}, opts = {})
  request_stripe_object(
    method: :delete,
    path: format("/v1/customers/%<customer>s/discount", { customer: CGI.escape(customer) }),
    params: params,
    opts: opts
  )
end

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

Returns a list of your customers. The customers are returned sorted by creation date, with the most recent customers appearing first.



1090
1091
1092
# File 'lib/stripe/resources/customer.rb', line 1090

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

.list_payment_methods(customer, params = {}, opts = {}) ⇒ Object

Returns a list of PaymentMethods for a given Customer



1105
1106
1107
1108
1109
1110
1111
1112
# File 'lib/stripe/resources/customer.rb', line 1105

def self.list_payment_methods(customer, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/customers/%<customer>s/payment_methods", { customer: CGI.escape(customer) }),
    params: params,
    opts: opts
  )
end

.object_nameObject



16
17
18
# File 'lib/stripe/resources/customer.rb', line 16

def self.object_name
  "customer"
end

.retrieve_cash_balance(customer, params = {}, opts = {}) ⇒ Object

Retrieves a customer’s cash balance.



1115
1116
1117
1118
1119
1120
1121
1122
# File 'lib/stripe/resources/customer.rb', line 1115

def self.retrieve_cash_balance(customer, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/customers/%<customer>s/cash_balance", { customer: CGI.escape(customer) }),
    params: params,
    opts: opts
  )
end

.retrieve_payment_method(customer, payment_method, params = {}, opts = {}) ⇒ Object

Retrieves a PaymentMethod object for a given Customer.



1135
1136
1137
1138
1139
1140
1141
1142
# File 'lib/stripe/resources/customer.rb', line 1135

def self.retrieve_payment_method(customer, payment_method, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/customers/%<customer>s/payment_methods/%<payment_method>s", { customer: CGI.escape(customer), payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts
  )
end

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



1144
1145
1146
# File 'lib/stripe/resources/customer.rb', line 1144

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

.search_auto_paging_each(params = {}, opts = {}, &blk) ⇒ Object



1148
1149
1150
# File 'lib/stripe/resources/customer.rb', line 1148

def self.search_auto_paging_each(params = {}, opts = {}, &blk)
  search(params, opts).auto_paging_each(&blk)
end

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

Updates the specified customer by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the source parameter, that becomes the customer’s active source (e.g., a card) to be used for all charges in the future. When you update a customer to a new valid card source by passing the source parameter: for each of the customer’s current subscriptions, if the subscription bills automatically and is in the past_due state, then the latest open invoice for the subscription with automatic collection enabled will be retried. This retry will not count as an automatic retry, and will not affect the next regularly scheduled payment for the invoice. Changing the default_source for a customer will not trigger this behavior.

This request accepts mostly the same arguments as the customer creation call.



1155
1156
1157
1158
1159
1160
1161
1162
# File 'lib/stripe/resources/customer.rb', line 1155

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

.update_cash_balance(customer, params = {}, opts = {}) ⇒ Object

Changes the settings on a customer’s cash balance.



1165
1166
1167
1168
1169
1170
1171
1172
# File 'lib/stripe/resources/customer.rb', line 1165

def self.update_cash_balance(customer, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/customers/%<customer>s/cash_balance", { customer: CGI.escape(customer) }),
    params: params,
    opts: opts
  )
end

Instance Method Details

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

Retrieve funding instructions for a customer cash balance. If funding instructions do not yet exist for the customer, new funding instructions will be created. If funding instructions have already been created for a given customer, the same funding instructions will be retrieved. In other words, we will return the same funding instructions each time.



1028
1029
1030
1031
1032
1033
1034
1035
# File 'lib/stripe/resources/customer.rb', line 1028

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

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

Permanently deletes a customer. It cannot be undone. Also immediately cancels any active subscriptions on the customer.



1060
1061
1062
1063
1064
1065
1066
1067
# File 'lib/stripe/resources/customer.rb', line 1060

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

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

Removes the currently applied discount on a customer.



1070
1071
1072
1073
1074
1075
1076
1077
# File 'lib/stripe/resources/customer.rb', line 1070

def delete_discount(params = {}, opts = {})
  request_stripe_object(
    method: :delete,
    path: format("/v1/customers/%<customer>s/discount", { customer: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

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

Returns a list of PaymentMethods for a given Customer



1095
1096
1097
1098
1099
1100
1101
1102
# File 'lib/stripe/resources/customer.rb', line 1095

def list_payment_methods(params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/customers/%<customer>s/payment_methods", { customer: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#retrieve_payment_method(payment_method, params = {}, opts = {}) ⇒ Object

Retrieves a PaymentMethod object for a given Customer.



1125
1126
1127
1128
1129
1130
1131
1132
# File 'lib/stripe/resources/customer.rb', line 1125

def retrieve_payment_method(payment_method, params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: format("/v1/customers/%<customer>s/payment_methods/%<payment_method>s", { customer: CGI.escape(self["id"]), payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts
  )
end

#test_helpersObject



1182
1183
1184
# File 'lib/stripe/resources/customer.rb', line 1182

def test_helpers
  TestHelpers.new(self)
end