0

CreateTerminalCheckout

by
Published Oct 17, 2025

Creates a Terminal checkout request and sends it to the specified device to take a payment for the requested amount.

Script square Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type Square = {
3
  token: string;
4
};
5
/**
6
 * CreateTerminalCheckout
7
 * Creates a Terminal checkout request and sends it to the specified device to take a payment
8
for the requested amount.
9
 */
10
export async function main(
11
  auth: Square,
12
  body: {
13
    idempotency_key: string;
14
    checkout: {
15
      id?: string;
16
      amount_money: {
17
        amount?: number;
18
        currency?:
19
          | "UNKNOWN_CURRENCY"
20
          | "AED"
21
          | "AFN"
22
          | "ALL"
23
          | "AMD"
24
          | "ANG"
25
          | "AOA"
26
          | "ARS"
27
          | "AUD"
28
          | "AWG"
29
          | "AZN"
30
          | "BAM"
31
          | "BBD"
32
          | "BDT"
33
          | "BGN"
34
          | "BHD"
35
          | "BIF"
36
          | "BMD"
37
          | "BND"
38
          | "BOB"
39
          | "BOV"
40
          | "BRL"
41
          | "BSD"
42
          | "BTN"
43
          | "BWP"
44
          | "BYR"
45
          | "BZD"
46
          | "CAD"
47
          | "CDF"
48
          | "CHE"
49
          | "CHF"
50
          | "CHW"
51
          | "CLF"
52
          | "CLP"
53
          | "CNY"
54
          | "COP"
55
          | "COU"
56
          | "CRC"
57
          | "CUC"
58
          | "CUP"
59
          | "CVE"
60
          | "CZK"
61
          | "DJF"
62
          | "DKK"
63
          | "DOP"
64
          | "DZD"
65
          | "EGP"
66
          | "ERN"
67
          | "ETB"
68
          | "EUR"
69
          | "FJD"
70
          | "FKP"
71
          | "GBP"
72
          | "GEL"
73
          | "GHS"
74
          | "GIP"
75
          | "GMD"
76
          | "GNF"
77
          | "GTQ"
78
          | "GYD"
79
          | "HKD"
80
          | "HNL"
81
          | "HRK"
82
          | "HTG"
83
          | "HUF"
84
          | "IDR"
85
          | "ILS"
86
          | "INR"
87
          | "IQD"
88
          | "IRR"
89
          | "ISK"
90
          | "JMD"
91
          | "JOD"
92
          | "JPY"
93
          | "KES"
94
          | "KGS"
95
          | "KHR"
96
          | "KMF"
97
          | "KPW"
98
          | "KRW"
99
          | "KWD"
100
          | "KYD"
101
          | "KZT"
102
          | "LAK"
103
          | "LBP"
104
          | "LKR"
105
          | "LRD"
106
          | "LSL"
107
          | "LTL"
108
          | "LVL"
109
          | "LYD"
110
          | "MAD"
111
          | "MDL"
112
          | "MGA"
113
          | "MKD"
114
          | "MMK"
115
          | "MNT"
116
          | "MOP"
117
          | "MRO"
118
          | "MUR"
119
          | "MVR"
120
          | "MWK"
121
          | "MXN"
122
          | "MXV"
123
          | "MYR"
124
          | "MZN"
125
          | "NAD"
126
          | "NGN"
127
          | "NIO"
128
          | "NOK"
129
          | "NPR"
130
          | "NZD"
131
          | "OMR"
132
          | "PAB"
133
          | "PEN"
134
          | "PGK"
135
          | "PHP"
136
          | "PKR"
137
          | "PLN"
138
          | "PYG"
139
          | "QAR"
140
          | "RON"
141
          | "RSD"
142
          | "RUB"
143
          | "RWF"
144
          | "SAR"
145
          | "SBD"
146
          | "SCR"
147
          | "SDG"
148
          | "SEK"
149
          | "SGD"
150
          | "SHP"
151
          | "SLL"
152
          | "SLE"
153
          | "SOS"
154
          | "SRD"
155
          | "SSP"
156
          | "STD"
157
          | "SVC"
158
          | "SYP"
159
          | "SZL"
160
          | "THB"
161
          | "TJS"
162
          | "TMT"
163
          | "TND"
164
          | "TOP"
165
          | "TRY"
166
          | "TTD"
167
          | "TWD"
168
          | "TZS"
169
          | "UAH"
170
          | "UGX"
171
          | "USD"
172
          | "USN"
173
          | "USS"
174
          | "UYI"
175
          | "UYU"
176
          | "UZS"
177
          | "VEF"
178
          | "VND"
179
          | "VUV"
180
          | "WST"
181
          | "XAF"
182
          | "XAG"
183
          | "XAU"
184
          | "XBA"
185
          | "XBB"
186
          | "XBC"
187
          | "XBD"
188
          | "XCD"
189
          | "XDR"
190
          | "XOF"
191
          | "XPD"
192
          | "XPF"
193
          | "XPT"
194
          | "XTS"
195
          | "XXX"
196
          | "YER"
197
          | "ZAR"
198
          | "ZMK"
199
          | "ZMW"
200
          | "BTC"
201
          | "XUS";
202
      };
203
      reference_id?: string;
204
      note?: string;
205
      order_id?: string;
206
      payment_options?: {
207
        autocomplete?: false | true;
208
        delay_duration?: string;
209
        accept_partial_authorization?: false | true;
210
        delay_action?: "CANCEL" | "COMPLETE";
211
      };
212
      device_options: {
213
        device_id: string;
214
        skip_receipt_screen?: false | true;
215
        collect_signature?: false | true;
216
        tip_settings?: {
217
          allow_tipping?: false | true;
218
          separate_tip_screen?: false | true;
219
          custom_tip_field?: false | true;
220
          tip_percentages?: number[];
221
          smart_tipping?: false | true;
222
        };
223
        show_itemized_cart?: false | true;
224
      };
225
      deadline_duration?: string;
226
      status?: string;
227
      cancel_reason?: "BUYER_CANCELED" | "SELLER_CANCELED" | "TIMED_OUT";
228
      payment_ids?: string[];
229
      created_at?: string;
230
      updated_at?: string;
231
      app_id?: string;
232
      location_id?: string;
233
      payment_type?:
234
        | "CARD_PRESENT"
235
        | "MANUAL_CARD_ENTRY"
236
        | "FELICA_ID"
237
        | "FELICA_QUICPAY"
238
        | "FELICA_TRANSPORTATION_GROUP"
239
        | "FELICA_ALL"
240
        | "PAYPAY"
241
        | "QR_CODE";
242
      team_member_id?: string;
243
      customer_id?: string;
244
      app_fee_money?: {
245
        amount?: number;
246
        currency?:
247
          | "UNKNOWN_CURRENCY"
248
          | "AED"
249
          | "AFN"
250
          | "ALL"
251
          | "AMD"
252
          | "ANG"
253
          | "AOA"
254
          | "ARS"
255
          | "AUD"
256
          | "AWG"
257
          | "AZN"
258
          | "BAM"
259
          | "BBD"
260
          | "BDT"
261
          | "BGN"
262
          | "BHD"
263
          | "BIF"
264
          | "BMD"
265
          | "BND"
266
          | "BOB"
267
          | "BOV"
268
          | "BRL"
269
          | "BSD"
270
          | "BTN"
271
          | "BWP"
272
          | "BYR"
273
          | "BZD"
274
          | "CAD"
275
          | "CDF"
276
          | "CHE"
277
          | "CHF"
278
          | "CHW"
279
          | "CLF"
280
          | "CLP"
281
          | "CNY"
282
          | "COP"
283
          | "COU"
284
          | "CRC"
285
          | "CUC"
286
          | "CUP"
287
          | "CVE"
288
          | "CZK"
289
          | "DJF"
290
          | "DKK"
291
          | "DOP"
292
          | "DZD"
293
          | "EGP"
294
          | "ERN"
295
          | "ETB"
296
          | "EUR"
297
          | "FJD"
298
          | "FKP"
299
          | "GBP"
300
          | "GEL"
301
          | "GHS"
302
          | "GIP"
303
          | "GMD"
304
          | "GNF"
305
          | "GTQ"
306
          | "GYD"
307
          | "HKD"
308
          | "HNL"
309
          | "HRK"
310
          | "HTG"
311
          | "HUF"
312
          | "IDR"
313
          | "ILS"
314
          | "INR"
315
          | "IQD"
316
          | "IRR"
317
          | "ISK"
318
          | "JMD"
319
          | "JOD"
320
          | "JPY"
321
          | "KES"
322
          | "KGS"
323
          | "KHR"
324
          | "KMF"
325
          | "KPW"
326
          | "KRW"
327
          | "KWD"
328
          | "KYD"
329
          | "KZT"
330
          | "LAK"
331
          | "LBP"
332
          | "LKR"
333
          | "LRD"
334
          | "LSL"
335
          | "LTL"
336
          | "LVL"
337
          | "LYD"
338
          | "MAD"
339
          | "MDL"
340
          | "MGA"
341
          | "MKD"
342
          | "MMK"
343
          | "MNT"
344
          | "MOP"
345
          | "MRO"
346
          | "MUR"
347
          | "MVR"
348
          | "MWK"
349
          | "MXN"
350
          | "MXV"
351
          | "MYR"
352
          | "MZN"
353
          | "NAD"
354
          | "NGN"
355
          | "NIO"
356
          | "NOK"
357
          | "NPR"
358
          | "NZD"
359
          | "OMR"
360
          | "PAB"
361
          | "PEN"
362
          | "PGK"
363
          | "PHP"
364
          | "PKR"
365
          | "PLN"
366
          | "PYG"
367
          | "QAR"
368
          | "RON"
369
          | "RSD"
370
          | "RUB"
371
          | "RWF"
372
          | "SAR"
373
          | "SBD"
374
          | "SCR"
375
          | "SDG"
376
          | "SEK"
377
          | "SGD"
378
          | "SHP"
379
          | "SLL"
380
          | "SLE"
381
          | "SOS"
382
          | "SRD"
383
          | "SSP"
384
          | "STD"
385
          | "SVC"
386
          | "SYP"
387
          | "SZL"
388
          | "THB"
389
          | "TJS"
390
          | "TMT"
391
          | "TND"
392
          | "TOP"
393
          | "TRY"
394
          | "TTD"
395
          | "TWD"
396
          | "TZS"
397
          | "UAH"
398
          | "UGX"
399
          | "USD"
400
          | "USN"
401
          | "USS"
402
          | "UYI"
403
          | "UYU"
404
          | "UZS"
405
          | "VEF"
406
          | "VND"
407
          | "VUV"
408
          | "WST"
409
          | "XAF"
410
          | "XAG"
411
          | "XAU"
412
          | "XBA"
413
          | "XBB"
414
          | "XBC"
415
          | "XBD"
416
          | "XCD"
417
          | "XDR"
418
          | "XOF"
419
          | "XPD"
420
          | "XPF"
421
          | "XPT"
422
          | "XTS"
423
          | "XXX"
424
          | "YER"
425
          | "ZAR"
426
          | "ZMK"
427
          | "ZMW"
428
          | "BTC"
429
          | "XUS";
430
      };
431
      statement_description_identifier?: string;
432
      tip_money?: {
433
        amount?: number;
434
        currency?:
435
          | "UNKNOWN_CURRENCY"
436
          | "AED"
437
          | "AFN"
438
          | "ALL"
439
          | "AMD"
440
          | "ANG"
441
          | "AOA"
442
          | "ARS"
443
          | "AUD"
444
          | "AWG"
445
          | "AZN"
446
          | "BAM"
447
          | "BBD"
448
          | "BDT"
449
          | "BGN"
450
          | "BHD"
451
          | "BIF"
452
          | "BMD"
453
          | "BND"
454
          | "BOB"
455
          | "BOV"
456
          | "BRL"
457
          | "BSD"
458
          | "BTN"
459
          | "BWP"
460
          | "BYR"
461
          | "BZD"
462
          | "CAD"
463
          | "CDF"
464
          | "CHE"
465
          | "CHF"
466
          | "CHW"
467
          | "CLF"
468
          | "CLP"
469
          | "CNY"
470
          | "COP"
471
          | "COU"
472
          | "CRC"
473
          | "CUC"
474
          | "CUP"
475
          | "CVE"
476
          | "CZK"
477
          | "DJF"
478
          | "DKK"
479
          | "DOP"
480
          | "DZD"
481
          | "EGP"
482
          | "ERN"
483
          | "ETB"
484
          | "EUR"
485
          | "FJD"
486
          | "FKP"
487
          | "GBP"
488
          | "GEL"
489
          | "GHS"
490
          | "GIP"
491
          | "GMD"
492
          | "GNF"
493
          | "GTQ"
494
          | "GYD"
495
          | "HKD"
496
          | "HNL"
497
          | "HRK"
498
          | "HTG"
499
          | "HUF"
500
          | "IDR"
501
          | "ILS"
502
          | "INR"
503
          | "IQD"
504
          | "IRR"
505
          | "ISK"
506
          | "JMD"
507
          | "JOD"
508
          | "JPY"
509
          | "KES"
510
          | "KGS"
511
          | "KHR"
512
          | "KMF"
513
          | "KPW"
514
          | "KRW"
515
          | "KWD"
516
          | "KYD"
517
          | "KZT"
518
          | "LAK"
519
          | "LBP"
520
          | "LKR"
521
          | "LRD"
522
          | "LSL"
523
          | "LTL"
524
          | "LVL"
525
          | "LYD"
526
          | "MAD"
527
          | "MDL"
528
          | "MGA"
529
          | "MKD"
530
          | "MMK"
531
          | "MNT"
532
          | "MOP"
533
          | "MRO"
534
          | "MUR"
535
          | "MVR"
536
          | "MWK"
537
          | "MXN"
538
          | "MXV"
539
          | "MYR"
540
          | "MZN"
541
          | "NAD"
542
          | "NGN"
543
          | "NIO"
544
          | "NOK"
545
          | "NPR"
546
          | "NZD"
547
          | "OMR"
548
          | "PAB"
549
          | "PEN"
550
          | "PGK"
551
          | "PHP"
552
          | "PKR"
553
          | "PLN"
554
          | "PYG"
555
          | "QAR"
556
          | "RON"
557
          | "RSD"
558
          | "RUB"
559
          | "RWF"
560
          | "SAR"
561
          | "SBD"
562
          | "SCR"
563
          | "SDG"
564
          | "SEK"
565
          | "SGD"
566
          | "SHP"
567
          | "SLL"
568
          | "SLE"
569
          | "SOS"
570
          | "SRD"
571
          | "SSP"
572
          | "STD"
573
          | "SVC"
574
          | "SYP"
575
          | "SZL"
576
          | "THB"
577
          | "TJS"
578
          | "TMT"
579
          | "TND"
580
          | "TOP"
581
          | "TRY"
582
          | "TTD"
583
          | "TWD"
584
          | "TZS"
585
          | "UAH"
586
          | "UGX"
587
          | "USD"
588
          | "USN"
589
          | "USS"
590
          | "UYI"
591
          | "UYU"
592
          | "UZS"
593
          | "VEF"
594
          | "VND"
595
          | "VUV"
596
          | "WST"
597
          | "XAF"
598
          | "XAG"
599
          | "XAU"
600
          | "XBA"
601
          | "XBB"
602
          | "XBC"
603
          | "XBD"
604
          | "XCD"
605
          | "XDR"
606
          | "XOF"
607
          | "XPD"
608
          | "XPF"
609
          | "XPT"
610
          | "XTS"
611
          | "XXX"
612
          | "YER"
613
          | "ZAR"
614
          | "ZMK"
615
          | "ZMW"
616
          | "BTC"
617
          | "XUS";
618
      };
619
    };
620
  },
621
) {
622
  const url = new URL(`https://connect.squareup.com/v2/terminals/checkouts`);
623

624
  const response = await fetch(url, {
625
    method: "POST",
626
    headers: {
627
      "Content-Type": "application/json",
628
      Authorization: "Bearer " + auth.token,
629
    },
630
    body: JSON.stringify(body),
631
  });
632
  if (!response.ok) {
633
    const text = await response.text();
634
    throw new Error(`${response.status} ${text}`);
635
  }
636
  return await response.json();
637
}
638