0

CreateSubscription

by
Published Oct 17, 2025

Enrolls a customer in a subscription.

Script square Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type Square = {
3
  token: string;
4
};
5
/**
6
 * CreateSubscription
7
 * Enrolls a customer in a subscription.
8
 */
9
export async function main(
10
  auth: Square,
11
  body: {
12
    idempotency_key?: string;
13
    location_id: string;
14
    plan_variation_id?: string;
15
    customer_id: string;
16
    start_date?: string;
17
    canceled_date?: string;
18
    tax_percentage?: string;
19
    price_override_money?: {
20
      amount?: number;
21
      currency?:
22
        | "UNKNOWN_CURRENCY"
23
        | "AED"
24
        | "AFN"
25
        | "ALL"
26
        | "AMD"
27
        | "ANG"
28
        | "AOA"
29
        | "ARS"
30
        | "AUD"
31
        | "AWG"
32
        | "AZN"
33
        | "BAM"
34
        | "BBD"
35
        | "BDT"
36
        | "BGN"
37
        | "BHD"
38
        | "BIF"
39
        | "BMD"
40
        | "BND"
41
        | "BOB"
42
        | "BOV"
43
        | "BRL"
44
        | "BSD"
45
        | "BTN"
46
        | "BWP"
47
        | "BYR"
48
        | "BZD"
49
        | "CAD"
50
        | "CDF"
51
        | "CHE"
52
        | "CHF"
53
        | "CHW"
54
        | "CLF"
55
        | "CLP"
56
        | "CNY"
57
        | "COP"
58
        | "COU"
59
        | "CRC"
60
        | "CUC"
61
        | "CUP"
62
        | "CVE"
63
        | "CZK"
64
        | "DJF"
65
        | "DKK"
66
        | "DOP"
67
        | "DZD"
68
        | "EGP"
69
        | "ERN"
70
        | "ETB"
71
        | "EUR"
72
        | "FJD"
73
        | "FKP"
74
        | "GBP"
75
        | "GEL"
76
        | "GHS"
77
        | "GIP"
78
        | "GMD"
79
        | "GNF"
80
        | "GTQ"
81
        | "GYD"
82
        | "HKD"
83
        | "HNL"
84
        | "HRK"
85
        | "HTG"
86
        | "HUF"
87
        | "IDR"
88
        | "ILS"
89
        | "INR"
90
        | "IQD"
91
        | "IRR"
92
        | "ISK"
93
        | "JMD"
94
        | "JOD"
95
        | "JPY"
96
        | "KES"
97
        | "KGS"
98
        | "KHR"
99
        | "KMF"
100
        | "KPW"
101
        | "KRW"
102
        | "KWD"
103
        | "KYD"
104
        | "KZT"
105
        | "LAK"
106
        | "LBP"
107
        | "LKR"
108
        | "LRD"
109
        | "LSL"
110
        | "LTL"
111
        | "LVL"
112
        | "LYD"
113
        | "MAD"
114
        | "MDL"
115
        | "MGA"
116
        | "MKD"
117
        | "MMK"
118
        | "MNT"
119
        | "MOP"
120
        | "MRO"
121
        | "MUR"
122
        | "MVR"
123
        | "MWK"
124
        | "MXN"
125
        | "MXV"
126
        | "MYR"
127
        | "MZN"
128
        | "NAD"
129
        | "NGN"
130
        | "NIO"
131
        | "NOK"
132
        | "NPR"
133
        | "NZD"
134
        | "OMR"
135
        | "PAB"
136
        | "PEN"
137
        | "PGK"
138
        | "PHP"
139
        | "PKR"
140
        | "PLN"
141
        | "PYG"
142
        | "QAR"
143
        | "RON"
144
        | "RSD"
145
        | "RUB"
146
        | "RWF"
147
        | "SAR"
148
        | "SBD"
149
        | "SCR"
150
        | "SDG"
151
        | "SEK"
152
        | "SGD"
153
        | "SHP"
154
        | "SLL"
155
        | "SLE"
156
        | "SOS"
157
        | "SRD"
158
        | "SSP"
159
        | "STD"
160
        | "SVC"
161
        | "SYP"
162
        | "SZL"
163
        | "THB"
164
        | "TJS"
165
        | "TMT"
166
        | "TND"
167
        | "TOP"
168
        | "TRY"
169
        | "TTD"
170
        | "TWD"
171
        | "TZS"
172
        | "UAH"
173
        | "UGX"
174
        | "USD"
175
        | "USN"
176
        | "USS"
177
        | "UYI"
178
        | "UYU"
179
        | "UZS"
180
        | "VEF"
181
        | "VND"
182
        | "VUV"
183
        | "WST"
184
        | "XAF"
185
        | "XAG"
186
        | "XAU"
187
        | "XBA"
188
        | "XBB"
189
        | "XBC"
190
        | "XBD"
191
        | "XCD"
192
        | "XDR"
193
        | "XOF"
194
        | "XPD"
195
        | "XPF"
196
        | "XPT"
197
        | "XTS"
198
        | "XXX"
199
        | "YER"
200
        | "ZAR"
201
        | "ZMK"
202
        | "ZMW"
203
        | "BTC"
204
        | "XUS";
205
    };
206
    card_id?: string;
207
    timezone?: string;
208
    source?: { name?: string };
209
    monthly_billing_anchor_date?: number;
210
    phases?: {
211
      uid?: string;
212
      ordinal?: number;
213
      order_template_id?: string;
214
      plan_phase_uid?: string;
215
    }[];
216
  },
217
) {
218
  const url = new URL(`https://connect.squareup.com/v2/subscriptions`);
219

220
  const response = await fetch(url, {
221
    method: "POST",
222
    headers: {
223
      "Content-Type": "application/json",
224
      Authorization: "Bearer " + auth.token,
225
    },
226
    body: JSON.stringify(body),
227
  });
228
  if (!response.ok) {
229
    const text = await response.text();
230
    throw new Error(`${response.status} ${text}`);
231
  }
232
  return await response.json();
233
}
234