Glossary
Stripe Customer
A Stripe Customer is the record, with an ID beginning cus_, that holds one payer’s name, email, billing and shipping addresses, tax details, default invoice settings and credit balance, and that charges, invoices and subscriptions point back to.
Also called: Stripe Customer object, cus_ ID, Stripe customer record, Stripe customer profile
Definition
Stripe does not need a Customer to take a payment. A one-off charge can be completed with nothing more than a card and the billing details typed into the payment form. A Customer is what you create when you want Stripe to remember someone: to save their payment method, bill them again, send them invoices, or put them on a subscription.
The object itself is a profile. It carries identity fields (name, email, phone, billing address, shipping address), tax fields (exemption status and tax IDs), billing defaults (invoice settings, a preferred currency for recurring billing) and a running balance. Charges, invoices and subscriptions then reference it by its cus_ ID rather than copying all of that onto themselves.
For bookkeeping, the Customer is where the name on a QuickBooks record usually comes from, and it is also the reason two records that look like they describe the same buyer can disagree. Some documents read the Customer live. Others take a copy of it at a fixed moment and never look again.
Key points
- +Every Customer has an ID beginning cus_. A charge carries it in its customer field, which Stripe documents as the ID of the customer the charge is for "if one exists".
- +name is "The customer’s full name or business name". email, phone, address (billing) and shipping sit alongside it.
- +balance is a stored credit or amount owed that Stripe applies to the customer’s next finalized invoice. It does not reflect unpaid invoices.
- +tax_exempt is none, exempt or reverse, and reverse prints "Reverse charge" on invoice and receipt PDFs.
- +An invoice copies the customer’s name, email, address, phone, shipping, tax status and tax IDs, and stops updating them once it is finalized.
- +metadata is free-form key-value storage for your own use, not a standard field any other system is obliged to read.
The fields that end up in your books
The Customer object has a couple of dozen attributes. For anyone reconciling Stripe against QuickBooks, a handful do almost all of the work.
name is documented by Stripe as "The customer’s full name or business name". It is the field most integrations reach for first when they need something to call the payer. email is "The customer’s email address", and it is usually the only other identifier that is reliably present.
There are two addresses, and they are not interchangeable. address is "The customer’s billing address". shipping is "Mailing and shipping address for the customer", and Stripe notes that it "Appears on invoices emailed to this customer." A business that ships goods may have both filled in and different.
The tax fields decide how invoices are taxed and labelled. tax_exempt "Describes the customer’s tax exemption status, which is none, exempt, or reverse", and when it is set to reverse, "invoice and receipt PDFs include the following text: Reverse charge." tax_ids holds the customer’s tax registration numbers.
Finally, currency is the "Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes." It is a billing default, not a statement about which currency every payment from that customer will arrive in.
Invoices take a snapshot, and the snapshot freezes
This is the behavior that explains most "the invoice shows the old address" questions.
A Stripe invoice does not just point at its Customer. It keeps its own copy of the customer’s details, and Stripe documents the rule the same way for every copied field. For customer_name: "Until the invoice is finalized, this field will equal customer.name. Once the invoice is finalized, this field will no longer be updated." The same wording applies to customer_email, customer_address, customer_phone, customer_shipping and customer_tax_exempt, and customer_tax_ids follows the same pattern.
So if a customer moves in May and you update their Customer record, every invoice finalized before that change still shows the old address, and it always will. Think of a finalized invoice as a document that was issued to someone: it keeps reading the way it read when it was sent.
The practical consequence is that Stripe can hold three different versions of one customer at once: the live Customer record, the frozen copy on each finalized invoice, and whatever was typed into the payment form on each individual charge. When two systems disagree about a customer’s details, the first question is which of those three each one read, and when.
Payments that have no Customer at all
Plenty of Stripe charges are never attached to a Customer. Stripe documents the charge’s customer field as nullable, the "ID of the customer this charge is for if one exists."
What a charge always has instead is billing_details, which Stripe describes as "Billing information associated with the payment method at the time of the transaction." For a one-off card payment, that is often the only name and address anywhere in Stripe.
The two sources behave differently over time. A Customer can be edited, and edits flow into anything that reads it live. billing_details belongs to one transaction and describes that moment only. A buyer who pays three times without a Customer record leaves three separate sets of billing details, which may not match each other.
For your books this is the case to plan for rather than discover. If a large share of your revenue arrives without a Customer, the name on the corresponding accounting record has to come from somewhere else, or it has to come from a rule you chose in advance.
The balance field is not your receivables
balance looks like it should tell you what a customer owes. It does not.
Stripe describes it as "The current balance, if any, that’s stored on the customer in their default currency. 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 next sentence is the important one: "The balance only considers amounts that Stripe hasn’t successfully applied to any invoice. It doesn’t reflect unpaid invoices." It is also "only taken into account after invoices finalize."
In other words, an unpaid $2,000 invoice does not appear in the Customer’s balance at all. The balance is a small side ledger of credits and carry-forward amounts waiting to be applied to future invoices. Your open receivables live on the invoices themselves, and the customer balance is covered on its own in the write-up on Stripe customer balance in QuickBooks.
For customers billed in more than one currency, Stripe keeps the equivalent figures per currency in invoice_credit_balance, applying each one only to a finalized invoice in the same currency.
Metadata and customer-configured Accounts
Two newer or less obvious parts of the object are worth knowing before you build on them.
metadata is a "Set of key-value pairs that you can attach to an object", useful "for storing additional information about the object in a structured format." It is yours: Stripe stores it, and other systems read it only if they have specifically been built to. Putting a clean company name or an internal account number into metadata does not make any downstream tool use it.
customer_account is "The ID of an Account representing a customer", which Stripe says you can use "with any v1 API that accepts a customer_account parameter." It reflects Stripe’s newer model, in which a single Account object can represent a customer. If your integration is being rebuilt around that model, check how each downstream system identifies the payer before you switch, because a tool that expects a cus_ ID may not follow.
Which Customer fields Acodei reads
When Acodei resolves the QuickBooks customer for a synced transaction, the name comes from Customer.name on the Stripe Customer object first, and falls back to charge.billing_details.name when there is none. If neither exists, a setting under Account Mapping and Customer Management decides the outcome: create the customer from the email address, use a static default name, or leave the name empty, which results in QuickBooks’ “Unnamed Customer” placeholder or a sync failure.
When Acodei creates a new QuickBooks customer, it pulls in the name, email and billing address where Stripe has them. For the address it checks customer.address first and then charge.billing_details.address. If an admin has enabled shipping address tracking for customers, it reads customer.shipping.address instead.
Two limits follow from that list. Acodei does not read customer names from Stripe metadata, and it does not pull addresses from metadata or custom fields. And it does not update a QuickBooks customer after creating it, so a later change to the Stripe Customer’s email or address is not pushed onto the existing QuickBooks record.
One more case produces a second record by design. Under Multicurrency Support, QuickBooks fixes one currency per customer, so when a transaction’s currency differs from the existing QuickBooks customer’s, Acodei creates a currency-specific record such as “Acme - CAD”. That is expected behavior, not a duplicate. How the name is matched to an existing QuickBooks customer, and why renaming in Stripe creates a new record, is covered in the write-up on customer matching.
Want to see this on your own Stripe data?
Start a free trialFrequently asked questions
What is a Stripe Customer object?
It is the record Stripe keeps for one payer, with an ID beginning cus_. It holds their name, email, phone, billing and shipping addresses, tax exemption status and tax IDs, default invoice settings and a credit balance. Charges, invoices and subscriptions refer to it by ID rather than copying all of those details.
Does every Stripe payment have a Customer?
No. Stripe documents a charge’s customer field as the ID of the customer the charge is for "if one exists". One-off payments are often made without one. Those charges still carry billing_details, the billing information associated with the payment method at the time of the transaction.
Why does my Stripe invoice show a customer’s old address?
Because the invoice was finalized before the address changed. Stripe copies the customer’s name, email, address, phone, shipping and tax details onto the invoice, and documents that once the invoice is finalized those fields are no longer updated. Only invoices finalized after the change show the new details.
Is the Stripe customer balance what the customer owes me?
No. Stripe says the balance only considers amounts it has not successfully applied to any invoice, and that it does not reflect unpaid invoices. A negative balance is a credit for the customer’s next invoice and a positive one is an amount to be added to it. Open receivables are on the invoices themselves.
Does Acodei update the QuickBooks customer when I change the Stripe Customer?
No. Acodei does not update customer records after creating them, so a new email or address on the Stripe Customer is not pushed onto the existing QuickBooks customer. Edit the QuickBooks record directly, and update the Stripe Customer so any records created in future carry the current details.
What customers say about running Stripe through Acodei

“If you're testing out all the different Stripe/QuickBooks integration apps right now, let me save you some time. This one is the best one by far.”
“Works well and is really helpful for massive transactions. The support is really fast and helpful. 100% recommended.”
Related reading
- Stripe QuickBooks customer matching
- Stripe customer balance in QuickBooks
- Stripe customer tax IDs in QuickBooks
- Stripe Cash Balance
More glossary terms
- Undeposited Funds
- Stripe Balance Transaction
- Available vs Pending Balance
- Stripe Dispute
- Stripe Dispute Evidence
- Stripe Fee
- Stripe Balance Adjustment
- QuickBooks Credit Memo
- Stripe Tax
- QuickBooks Tax Code
- Stripe Reserve
- Stripe Tax Rate
- Stripe Fee Credit
- Stripe Credit Note
- QuickBooks Product/Service Item
- Stripe Payout
- QuickBooks Sales Receipt
- QuickBooks Bank Deposit
- QuickBooks Transfer
- Stripe Authorization Hold
- QuickBooks Refund Receipt
- QuickBooks Payment
- QuickBooks Expense
- QuickBooks Journal Entry
- Stripe Financial Account
- Holding Account
- Accounts Receivable
- Bank Feed
- Deferred Revenue
- Stripe PaymentIntent
- Stripe Checkout Session
- Stripe SetupIntent
- Stripe PaymentMethod
- Stripe Charge
- Stripe Refund
- QuickBooks Invoice
- QuickBooks Class Tracking
- QuickBooks Location Tracking
- QuickBooks Project
- QuickBooks Closing Date
- Stripe Invoice Line Item
- Stripe Proration
- Stripe Invoice Status
- Stripe Shipping Rate
- Stripe Transfer
- Stripe Mandate
- Stripe on_behalf_of
- Stripe Invoice Item
- QuickBooks Estimate
- Stripe Invoice Payment
- Stripe Invoice Payment Settings
- Stripe Billing Meter
- Stripe Invoice Template
- Stripe Price
- Stripe Subscription Schedule
- Stripe Subscription Item
- QuickBooks Recurring Transaction
- QuickBooks Sub-Customer
- QuickBooks Audit Log
- QuickBooks Bank Rule
- Stripe Subscription Status
- Stripe Mixed Interval Subscription
- Stripe Trial Settings
- QuickBooks Payment Terms
- Stripe Pending Update
- QuickBooks Tags
- QuickBooks Credit Card Credit
- QuickBooks Vendor Credit
- QuickBooks Bill
- QuickBooks Delayed Charge
- Stripe Billing Mode
- QuickBooks Billable Expense
- Stripe Customer Cash Balance
- QuickBooks Purchase Order
- QuickBooks Opening Balance
- QuickBooks Account Type
- QuickBooks Sales Tax Center
- Stripe Webhook
- Stripe Metadata
- Stripe Outbound Payment
- Stripe Received Credit
- Stripe Outbound Transfer
- Stripe Inbound Transfer
- Stripe Received Debit
- Stripe Payout Method
- Stripe Financial Account Transaction
- Stripe Financial Address
- Stripe Application Fee
- Stripe Connected Account
- Stripe Destination Charge
- Stripe Separate Charges and Transfers
- Stripe Direct Charge
- Stripe Payment Method Configuration
- Stripe Dynamic Payment Methods
- Stripe Payment Method Rules
- QuickBooks Bundle
- Stripe Account Capability
- Stripe Merchant of Record
- Stripe Data Pipeline
- Settlement Currency
- Hosted Invoice Page
Ready to try Acodei?
Connect Stripe to QuickBooks Online in minutes and let the fees, refunds, and payouts land where your accountant expects them.