Applies to: Customers API | Customer Custom Attributes API | Cards API | Gift Cards API
Learn how to create, update, and delete customer profiles in a Square seller account.
Developers can use the Customers API to keep customer records for a Square seller by adding customer profiles to the seller's Customer Directory and making timely updates when customer information changes. Additionally, developers can delete customer profiles when a customer becomes inactive or requests to be removed.
Customer profiles can be created and managed individually or using bulk operations.
To add customer profiles to a seller's Customer Directory, call one of the following endpoints:
CreateCustomer
- Creates a single customer profile.BulkCreateCustomers
- Creates multiple customer profiles.
At least one of the following fields is required to create a customer profile. Your application frontend can collect this information from the customer using input fields.
given_name
- The customer's first name.family_name
- The customer's last name.company_name
- The name of the customer's workplace.email_address
- The customer's email address.phone_number
- The customer's phone number.
Before creating a customer profile:
- Get consent to store customer data - You must explicitly ask the customer for permission to store the information you collect. You should also be aware of other best practices for collecting information.
- Check for duplicate profiles - You should call the
SearchCustomers
endpoint and search by the customer's phone number, email address, or reference ID to avoid creating a duplicate customer profile.
Including a unique email_address
, phone_number
, or reference_id
when creating a customer profile can make it easier to find customers later. Note that some Square API integrations might require email_address
, phone_number
, or other specific customer fields.
To create a single customer profile, call CreateCustomer and provide the customer data. The following is an example request:
Create customer
Note
The BulkCreateCustomers
endpoint can also be used to create a single customer.
If the operation is successful, Square returns a 200
status code and a Customer
object that represents the new customer profile, as shown in the following example.
{ "customer": { "id": "FQWDXGBB2Q9WT1ZD6HKKSE9NQC", "created_at": "2022-05-29T21:14:49.48Z", "updated_at": "2022-05-29T21:14:49Z", "given_name": "John", "family_name": "Doe", "nickname": "Junior", "email_address": "[email protected]", "address": { "address_line_1": "1955 Broadway", "locality": "Springfield", "administrative_district_level_1": "MA", "postal_code": "01111" }, "phone_number": "+1 (206) 222-3456", "company_name": "ACME Inc.", "preferences": { "email_unsubscribed": false }, "creation_source": "THIRD_PARTY", "version": 0 } }
To create 1 to 100 customer profiles in a bulk operation, call BulkCreateCustomers and provide a map of key-value pairs that represent individual create requests.
For each key-value pair, the key is an idempotency key and the value is the customer data used to create the customer profile:
{ "customers": { "idempotency_key_1": { // customer fields }, "idempotency_key_2": { // customer fields }, "idempotency_key_3": { // customer fields }, ... } }
The following BulkCreateCustomers
request attempts to create three customer profiles:
Bulk create customers
For bulk operations, Square processes the create requests individually and returns a map of responses.
If the BulkCreateCustomers
operation is successfully processed, Square returns a 200
status code and a responses
map of key-value pairs that represent responses for individual create requests.
For each key-value pair, the key is an idempotency key that was specified in the request and the value is either:
- The new customer profile if the request succeeded.
- Error information if the request failed.
In the following example, two requests succeeded and one failed:
{ "responses": { "452ea896-f36e-4c5c-95d5-e5aa727b9b2c": { "customer": { "id": "TFVGJNH46AVMDCZY93KKKF5QW4", "created_at": "2024-01-20T00:32:34.43Z", "updated_at": "2024-01-20T00:32:34Z", "given_name": "Vera", "family_name": "Sara", "email_address": "[email protected]", "phone_number": "+14167779999", "preferences": { "email_unsubscribed": false }, "creation_source": "THIRD_PARTY", "version": 0 } }, "cbde1ec6-96df-40d4-8019-af9a4fa893ed": { "customer": { "id": "6ZK40WV46EM8M2AVC9ZEF7B018", "created_at": "2024-01-20T00:32:34.533Z", "updated_at": "2024-01-20T00:32:34Z", "given_name": "Silva", "family_name": "Antonio", "email_address": "[email protected]", "address": { "address_line_1": "1001 Broadway Ave", "address_line_2": "Apt 1311", "locality": "Toronto", "administrative_district_level_1": "ON", "country": "CA" }, "phone_number": "+14375552222", "note": "Birthday Club member", "preferences": { "email_unsubscribed": false }, "creation_source": "THIRD_PARTY", "birthday": "0000-07-22", "version": 0 } }, "716cefbc-3d71-4d7c-bdc8-9c7f84c2d793": { "errors": [ { "code": "INVALID_EMAIL_ADDRESS", "detail": "Expected email_address to be a valid email address", "field": "email_address", "category": "INVALID_REQUEST_ERROR" } ] } } }
Note that the responses might not be returned in the same order as the individual create requests sent to BulkCreateCustomers
.
Note
Idempotency keys are optional for CreateCustomer
requests but required for BulkCreateCustomers
requests. An idempotency key is a client-generated string (for example, a UUID) that Square uses to ensure a request is processed only once. An application cannot reuse idempotency keys in requests to the same seller.