0

CreateCustomer

by
Published Oct 17, 2025

Creates a new customer for a business. You must provide at least one of the following values in your request to this endpoint: - `given_name` - `family_name` - `company_name` - `email_address` - `phone_number`

Script square Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type Square = {
3
  token: string;
4
};
5
/**
6
 * CreateCustomer
7
 * Creates a new customer for a business.
8

9
You must provide at least one of the following values in your request to this
10
endpoint:
11

12
- `given_name`
13
- `family_name`
14
- `company_name`
15
- `email_address`
16
- `phone_number`
17
 */
18
export async function main(
19
  auth: Square,
20
  body: {
21
    idempotency_key?: string;
22
    given_name?: string;
23
    family_name?: string;
24
    company_name?: string;
25
    nickname?: string;
26
    email_address?: string;
27
    address?: {
28
      address_line_1?: string;
29
      address_line_2?: string;
30
      address_line_3?: string;
31
      locality?: string;
32
      sublocality?: string;
33
      sublocality_2?: string;
34
      sublocality_3?: string;
35
      administrative_district_level_1?: string;
36
      administrative_district_level_2?: string;
37
      administrative_district_level_3?: string;
38
      postal_code?: string;
39
      country?:
40
        | "ZZ"
41
        | "AD"
42
        | "AE"
43
        | "AF"
44
        | "AG"
45
        | "AI"
46
        | "AL"
47
        | "AM"
48
        | "AO"
49
        | "AQ"
50
        | "AR"
51
        | "AS"
52
        | "AT"
53
        | "AU"
54
        | "AW"
55
        | "AX"
56
        | "AZ"
57
        | "BA"
58
        | "BB"
59
        | "BD"
60
        | "BE"
61
        | "BF"
62
        | "BG"
63
        | "BH"
64
        | "BI"
65
        | "BJ"
66
        | "BL"
67
        | "BM"
68
        | "BN"
69
        | "BO"
70
        | "BQ"
71
        | "BR"
72
        | "BS"
73
        | "BT"
74
        | "BV"
75
        | "BW"
76
        | "BY"
77
        | "BZ"
78
        | "CA"
79
        | "CC"
80
        | "CD"
81
        | "CF"
82
        | "CG"
83
        | "CH"
84
        | "CI"
85
        | "CK"
86
        | "CL"
87
        | "CM"
88
        | "CN"
89
        | "CO"
90
        | "CR"
91
        | "CU"
92
        | "CV"
93
        | "CW"
94
        | "CX"
95
        | "CY"
96
        | "CZ"
97
        | "DE"
98
        | "DJ"
99
        | "DK"
100
        | "DM"
101
        | "DO"
102
        | "DZ"
103
        | "EC"
104
        | "EE"
105
        | "EG"
106
        | "EH"
107
        | "ER"
108
        | "ES"
109
        | "ET"
110
        | "FI"
111
        | "FJ"
112
        | "FK"
113
        | "FM"
114
        | "FO"
115
        | "FR"
116
        | "GA"
117
        | "GB"
118
        | "GD"
119
        | "GE"
120
        | "GF"
121
        | "GG"
122
        | "GH"
123
        | "GI"
124
        | "GL"
125
        | "GM"
126
        | "GN"
127
        | "GP"
128
        | "GQ"
129
        | "GR"
130
        | "GS"
131
        | "GT"
132
        | "GU"
133
        | "GW"
134
        | "GY"
135
        | "HK"
136
        | "HM"
137
        | "HN"
138
        | "HR"
139
        | "HT"
140
        | "HU"
141
        | "ID"
142
        | "IE"
143
        | "IL"
144
        | "IM"
145
        | "IN"
146
        | "IO"
147
        | "IQ"
148
        | "IR"
149
        | "IS"
150
        | "IT"
151
        | "JE"
152
        | "JM"
153
        | "JO"
154
        | "JP"
155
        | "KE"
156
        | "KG"
157
        | "KH"
158
        | "KI"
159
        | "KM"
160
        | "KN"
161
        | "KP"
162
        | "KR"
163
        | "KW"
164
        | "KY"
165
        | "KZ"
166
        | "LA"
167
        | "LB"
168
        | "LC"
169
        | "LI"
170
        | "LK"
171
        | "LR"
172
        | "LS"
173
        | "LT"
174
        | "LU"
175
        | "LV"
176
        | "LY"
177
        | "MA"
178
        | "MC"
179
        | "MD"
180
        | "ME"
181
        | "MF"
182
        | "MG"
183
        | "MH"
184
        | "MK"
185
        | "ML"
186
        | "MM"
187
        | "MN"
188
        | "MO"
189
        | "MP"
190
        | "MQ"
191
        | "MR"
192
        | "MS"
193
        | "MT"
194
        | "MU"
195
        | "MV"
196
        | "MW"
197
        | "MX"
198
        | "MY"
199
        | "MZ"
200
        | "NA"
201
        | "NC"
202
        | "NE"
203
        | "NF"
204
        | "NG"
205
        | "NI"
206
        | "NL"
207
        | "NO"
208
        | "NP"
209
        | "NR"
210
        | "NU"
211
        | "NZ"
212
        | "OM"
213
        | "PA"
214
        | "PE"
215
        | "PF"
216
        | "PG"
217
        | "PH"
218
        | "PK"
219
        | "PL"
220
        | "PM"
221
        | "PN"
222
        | "PR"
223
        | "PS"
224
        | "PT"
225
        | "PW"
226
        | "PY"
227
        | "QA"
228
        | "RE"
229
        | "RO"
230
        | "RS"
231
        | "RU"
232
        | "RW"
233
        | "SA"
234
        | "SB"
235
        | "SC"
236
        | "SD"
237
        | "SE"
238
        | "SG"
239
        | "SH"
240
        | "SI"
241
        | "SJ"
242
        | "SK"
243
        | "SL"
244
        | "SM"
245
        | "SN"
246
        | "SO"
247
        | "SR"
248
        | "SS"
249
        | "ST"
250
        | "SV"
251
        | "SX"
252
        | "SY"
253
        | "SZ"
254
        | "TC"
255
        | "TD"
256
        | "TF"
257
        | "TG"
258
        | "TH"
259
        | "TJ"
260
        | "TK"
261
        | "TL"
262
        | "TM"
263
        | "TN"
264
        | "TO"
265
        | "TR"
266
        | "TT"
267
        | "TV"
268
        | "TW"
269
        | "TZ"
270
        | "UA"
271
        | "UG"
272
        | "UM"
273
        | "US"
274
        | "UY"
275
        | "UZ"
276
        | "VA"
277
        | "VC"
278
        | "VE"
279
        | "VG"
280
        | "VI"
281
        | "VN"
282
        | "VU"
283
        | "WF"
284
        | "WS"
285
        | "YE"
286
        | "YT"
287
        | "ZA"
288
        | "ZM"
289
        | "ZW";
290
      first_name?: string;
291
      last_name?: string;
292
    };
293
    phone_number?: string;
294
    reference_id?: string;
295
    note?: string;
296
    birthday?: string;
297
    tax_ids?: { eu_vat?: string };
298
  },
299
) {
300
  const url = new URL(`https://connect.squareup.com/v2/customers`);
301

302
  const response = await fetch(url, {
303
    method: "POST",
304
    headers: {
305
      "Content-Type": "application/json",
306
      Authorization: "Bearer " + auth.token,
307
    },
308
    body: JSON.stringify(body),
309
  });
310
  if (!response.ok) {
311
    const text = await response.text();
312
    throw new Error(`${response.status} ${text}`);
313
  }
314
  return await response.json();
315
}
316