0

BatchChangeInventory

by
Published Oct 17, 2025

Applies adjustments and counts to the provided item quantities. On success: returns the current calculated counts for all objects referenced in the request. On failure: returns a list of related errors.

Script square Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type Square = {
3
  token: string;
4
};
5
/**
6
 * BatchChangeInventory
7
 * Applies adjustments and counts to the provided item quantities.
8

9
On success: returns the current calculated counts for all objects
10
referenced in the request.
11
On failure: returns a list of related errors.
12
 */
13
export async function main(
14
  auth: Square,
15
  body: {
16
    idempotency_key: string;
17
    changes?: {
18
      type?: "PHYSICAL_COUNT" | "ADJUSTMENT" | "TRANSFER";
19
      physical_count?: {
20
        id?: string;
21
        reference_id?: string;
22
        catalog_object_id?: string;
23
        catalog_object_type?: string;
24
        state?:
25
          | "CUSTOM"
26
          | "IN_STOCK"
27
          | "SOLD"
28
          | "RETURNED_BY_CUSTOMER"
29
          | "RESERVED_FOR_SALE"
30
          | "SOLD_ONLINE"
31
          | "ORDERED_FROM_VENDOR"
32
          | "RECEIVED_FROM_VENDOR"
33
          | "IN_TRANSIT_TO"
34
          | "NONE"
35
          | "WASTE"
36
          | "UNLINKED_RETURN"
37
          | "COMPOSED"
38
          | "DECOMPOSED"
39
          | "SUPPORTED_BY_NEWER_VERSION"
40
          | "IN_TRANSIT";
41
        location_id?: string;
42
        quantity?: string;
43
        source?: {
44
          product?:
45
            | "SQUARE_POS"
46
            | "EXTERNAL_API"
47
            | "BILLING"
48
            | "APPOINTMENTS"
49
            | "INVOICES"
50
            | "ONLINE_STORE"
51
            | "PAYROLL"
52
            | "DASHBOARD"
53
            | "ITEM_LIBRARY_IMPORT"
54
            | "OTHER";
55
          application_id?: string;
56
          name?: string;
57
        };
58
        employee_id?: string;
59
        team_member_id?: string;
60
        occurred_at?: string;
61
        created_at?: string;
62
      };
63
      adjustment?: {
64
        id?: string;
65
        reference_id?: string;
66
        from_state?:
67
          | "CUSTOM"
68
          | "IN_STOCK"
69
          | "SOLD"
70
          | "RETURNED_BY_CUSTOMER"
71
          | "RESERVED_FOR_SALE"
72
          | "SOLD_ONLINE"
73
          | "ORDERED_FROM_VENDOR"
74
          | "RECEIVED_FROM_VENDOR"
75
          | "IN_TRANSIT_TO"
76
          | "NONE"
77
          | "WASTE"
78
          | "UNLINKED_RETURN"
79
          | "COMPOSED"
80
          | "DECOMPOSED"
81
          | "SUPPORTED_BY_NEWER_VERSION"
82
          | "IN_TRANSIT";
83
        to_state?:
84
          | "CUSTOM"
85
          | "IN_STOCK"
86
          | "SOLD"
87
          | "RETURNED_BY_CUSTOMER"
88
          | "RESERVED_FOR_SALE"
89
          | "SOLD_ONLINE"
90
          | "ORDERED_FROM_VENDOR"
91
          | "RECEIVED_FROM_VENDOR"
92
          | "IN_TRANSIT_TO"
93
          | "NONE"
94
          | "WASTE"
95
          | "UNLINKED_RETURN"
96
          | "COMPOSED"
97
          | "DECOMPOSED"
98
          | "SUPPORTED_BY_NEWER_VERSION"
99
          | "IN_TRANSIT";
100
        location_id?: string;
101
        catalog_object_id?: string;
102
        catalog_object_type?: string;
103
        quantity?: string;
104
        total_price_money?: {
105
          amount?: number;
106
          currency?:
107
            | "UNKNOWN_CURRENCY"
108
            | "AED"
109
            | "AFN"
110
            | "ALL"
111
            | "AMD"
112
            | "ANG"
113
            | "AOA"
114
            | "ARS"
115
            | "AUD"
116
            | "AWG"
117
            | "AZN"
118
            | "BAM"
119
            | "BBD"
120
            | "BDT"
121
            | "BGN"
122
            | "BHD"
123
            | "BIF"
124
            | "BMD"
125
            | "BND"
126
            | "BOB"
127
            | "BOV"
128
            | "BRL"
129
            | "BSD"
130
            | "BTN"
131
            | "BWP"
132
            | "BYR"
133
            | "BZD"
134
            | "CAD"
135
            | "CDF"
136
            | "CHE"
137
            | "CHF"
138
            | "CHW"
139
            | "CLF"
140
            | "CLP"
141
            | "CNY"
142
            | "COP"
143
            | "COU"
144
            | "CRC"
145
            | "CUC"
146
            | "CUP"
147
            | "CVE"
148
            | "CZK"
149
            | "DJF"
150
            | "DKK"
151
            | "DOP"
152
            | "DZD"
153
            | "EGP"
154
            | "ERN"
155
            | "ETB"
156
            | "EUR"
157
            | "FJD"
158
            | "FKP"
159
            | "GBP"
160
            | "GEL"
161
            | "GHS"
162
            | "GIP"
163
            | "GMD"
164
            | "GNF"
165
            | "GTQ"
166
            | "GYD"
167
            | "HKD"
168
            | "HNL"
169
            | "HRK"
170
            | "HTG"
171
            | "HUF"
172
            | "IDR"
173
            | "ILS"
174
            | "INR"
175
            | "IQD"
176
            | "IRR"
177
            | "ISK"
178
            | "JMD"
179
            | "JOD"
180
            | "JPY"
181
            | "KES"
182
            | "KGS"
183
            | "KHR"
184
            | "KMF"
185
            | "KPW"
186
            | "KRW"
187
            | "KWD"
188
            | "KYD"
189
            | "KZT"
190
            | "LAK"
191
            | "LBP"
192
            | "LKR"
193
            | "LRD"
194
            | "LSL"
195
            | "LTL"
196
            | "LVL"
197
            | "LYD"
198
            | "MAD"
199
            | "MDL"
200
            | "MGA"
201
            | "MKD"
202
            | "MMK"
203
            | "MNT"
204
            | "MOP"
205
            | "MRO"
206
            | "MUR"
207
            | "MVR"
208
            | "MWK"
209
            | "MXN"
210
            | "MXV"
211
            | "MYR"
212
            | "MZN"
213
            | "NAD"
214
            | "NGN"
215
            | "NIO"
216
            | "NOK"
217
            | "NPR"
218
            | "NZD"
219
            | "OMR"
220
            | "PAB"
221
            | "PEN"
222
            | "PGK"
223
            | "PHP"
224
            | "PKR"
225
            | "PLN"
226
            | "PYG"
227
            | "QAR"
228
            | "RON"
229
            | "RSD"
230
            | "RUB"
231
            | "RWF"
232
            | "SAR"
233
            | "SBD"
234
            | "SCR"
235
            | "SDG"
236
            | "SEK"
237
            | "SGD"
238
            | "SHP"
239
            | "SLL"
240
            | "SLE"
241
            | "SOS"
242
            | "SRD"
243
            | "SSP"
244
            | "STD"
245
            | "SVC"
246
            | "SYP"
247
            | "SZL"
248
            | "THB"
249
            | "TJS"
250
            | "TMT"
251
            | "TND"
252
            | "TOP"
253
            | "TRY"
254
            | "TTD"
255
            | "TWD"
256
            | "TZS"
257
            | "UAH"
258
            | "UGX"
259
            | "USD"
260
            | "USN"
261
            | "USS"
262
            | "UYI"
263
            | "UYU"
264
            | "UZS"
265
            | "VEF"
266
            | "VND"
267
            | "VUV"
268
            | "WST"
269
            | "XAF"
270
            | "XAG"
271
            | "XAU"
272
            | "XBA"
273
            | "XBB"
274
            | "XBC"
275
            | "XBD"
276
            | "XCD"
277
            | "XDR"
278
            | "XOF"
279
            | "XPD"
280
            | "XPF"
281
            | "XPT"
282
            | "XTS"
283
            | "XXX"
284
            | "YER"
285
            | "ZAR"
286
            | "ZMK"
287
            | "ZMW"
288
            | "BTC"
289
            | "XUS";
290
        };
291
        occurred_at?: string;
292
        created_at?: string;
293
        source?: {
294
          product?:
295
            | "SQUARE_POS"
296
            | "EXTERNAL_API"
297
            | "BILLING"
298
            | "APPOINTMENTS"
299
            | "INVOICES"
300
            | "ONLINE_STORE"
301
            | "PAYROLL"
302
            | "DASHBOARD"
303
            | "ITEM_LIBRARY_IMPORT"
304
            | "OTHER";
305
          application_id?: string;
306
          name?: string;
307
        };
308
        employee_id?: string;
309
        team_member_id?: string;
310
        transaction_id?: string;
311
        refund_id?: string;
312
        purchase_order_id?: string;
313
        goods_receipt_id?: string;
314
        adjustment_group?: {
315
          id?: string;
316
          root_adjustment_id?: string;
317
          from_state?:
318
            | "CUSTOM"
319
            | "IN_STOCK"
320
            | "SOLD"
321
            | "RETURNED_BY_CUSTOMER"
322
            | "RESERVED_FOR_SALE"
323
            | "SOLD_ONLINE"
324
            | "ORDERED_FROM_VENDOR"
325
            | "RECEIVED_FROM_VENDOR"
326
            | "IN_TRANSIT_TO"
327
            | "NONE"
328
            | "WASTE"
329
            | "UNLINKED_RETURN"
330
            | "COMPOSED"
331
            | "DECOMPOSED"
332
            | "SUPPORTED_BY_NEWER_VERSION"
333
            | "IN_TRANSIT";
334
          to_state?:
335
            | "CUSTOM"
336
            | "IN_STOCK"
337
            | "SOLD"
338
            | "RETURNED_BY_CUSTOMER"
339
            | "RESERVED_FOR_SALE"
340
            | "SOLD_ONLINE"
341
            | "ORDERED_FROM_VENDOR"
342
            | "RECEIVED_FROM_VENDOR"
343
            | "IN_TRANSIT_TO"
344
            | "NONE"
345
            | "WASTE"
346
            | "UNLINKED_RETURN"
347
            | "COMPOSED"
348
            | "DECOMPOSED"
349
            | "SUPPORTED_BY_NEWER_VERSION"
350
            | "IN_TRANSIT";
351
        };
352
      };
353
      transfer?: {
354
        id?: string;
355
        reference_id?: string;
356
        state?:
357
          | "CUSTOM"
358
          | "IN_STOCK"
359
          | "SOLD"
360
          | "RETURNED_BY_CUSTOMER"
361
          | "RESERVED_FOR_SALE"
362
          | "SOLD_ONLINE"
363
          | "ORDERED_FROM_VENDOR"
364
          | "RECEIVED_FROM_VENDOR"
365
          | "IN_TRANSIT_TO"
366
          | "NONE"
367
          | "WASTE"
368
          | "UNLINKED_RETURN"
369
          | "COMPOSED"
370
          | "DECOMPOSED"
371
          | "SUPPORTED_BY_NEWER_VERSION"
372
          | "IN_TRANSIT";
373
        from_location_id?: string;
374
        to_location_id?: string;
375
        catalog_object_id?: string;
376
        catalog_object_type?: string;
377
        quantity?: string;
378
        occurred_at?: string;
379
        created_at?: string;
380
        source?: {
381
          product?:
382
            | "SQUARE_POS"
383
            | "EXTERNAL_API"
384
            | "BILLING"
385
            | "APPOINTMENTS"
386
            | "INVOICES"
387
            | "ONLINE_STORE"
388
            | "PAYROLL"
389
            | "DASHBOARD"
390
            | "ITEM_LIBRARY_IMPORT"
391
            | "OTHER";
392
          application_id?: string;
393
          name?: string;
394
        };
395
        employee_id?: string;
396
        team_member_id?: string;
397
      };
398
      measurement_unit?: {
399
        measurement_unit?: {
400
          custom_unit?: { name: string; abbreviation: string };
401
          area_unit?:
402
            | "IMPERIAL_ACRE"
403
            | "IMPERIAL_SQUARE_INCH"
404
            | "IMPERIAL_SQUARE_FOOT"
405
            | "IMPERIAL_SQUARE_YARD"
406
            | "IMPERIAL_SQUARE_MILE"
407
            | "METRIC_SQUARE_CENTIMETER"
408
            | "METRIC_SQUARE_METER"
409
            | "METRIC_SQUARE_KILOMETER";
410
          length_unit?:
411
            | "IMPERIAL_INCH"
412
            | "IMPERIAL_FOOT"
413
            | "IMPERIAL_YARD"
414
            | "IMPERIAL_MILE"
415
            | "METRIC_MILLIMETER"
416
            | "METRIC_CENTIMETER"
417
            | "METRIC_METER"
418
            | "METRIC_KILOMETER";
419
          volume_unit?:
420
            | "GENERIC_FLUID_OUNCE"
421
            | "GENERIC_SHOT"
422
            | "GENERIC_CUP"
423
            | "GENERIC_PINT"
424
            | "GENERIC_QUART"
425
            | "GENERIC_GALLON"
426
            | "IMPERIAL_CUBIC_INCH"
427
            | "IMPERIAL_CUBIC_FOOT"
428
            | "IMPERIAL_CUBIC_YARD"
429
            | "METRIC_MILLILITER"
430
            | "METRIC_LITER";
431
          weight_unit?:
432
            | "IMPERIAL_WEIGHT_OUNCE"
433
            | "IMPERIAL_POUND"
434
            | "IMPERIAL_STONE"
435
            | "METRIC_MILLIGRAM"
436
            | "METRIC_GRAM"
437
            | "METRIC_KILOGRAM";
438
          generic_unit?: "UNIT";
439
          time_unit?:
440
            | "GENERIC_MILLISECOND"
441
            | "GENERIC_SECOND"
442
            | "GENERIC_MINUTE"
443
            | "GENERIC_HOUR"
444
            | "GENERIC_DAY";
445
          type?:
446
            | "TYPE_CUSTOM"
447
            | "TYPE_AREA"
448
            | "TYPE_LENGTH"
449
            | "TYPE_VOLUME"
450
            | "TYPE_WEIGHT"
451
            | "TYPE_GENERIC";
452
        };
453
        precision?: number;
454
      };
455
      measurement_unit_id?: string;
456
    }[];
457
    ignore_unchanged_counts?: false | true;
458
  },
459
) {
460
  const url = new URL(
461
    `https://connect.squareup.com/v2/inventory/changes/batch-create`,
462
  );
463

464
  const response = await fetch(url, {
465
    method: "POST",
466
    headers: {
467
      "Content-Type": "application/json",
468
      Authorization: "Bearer " + auth.token,
469
    },
470
    body: JSON.stringify(body),
471
  });
472
  if (!response.ok) {
473
    const text = await response.text();
474
    throw new Error(`${response.status} ${text}`);
475
  }
476
  return await response.json();
477
}
478