0

CalculateLoyaltyPoints

by
Published Oct 17, 2025

Calculates the number of points a buyer can earn from a purchase.

Script square Verified

The script

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

208
  const response = await fetch(url, {
209
    method: "POST",
210
    headers: {
211
      "Content-Type": "application/json",
212
      Authorization: "Bearer " + auth.token,
213
    },
214
    body: JSON.stringify(body),
215
  });
216
  if (!response.ok) {
217
    const text = await response.text();
218
    throw new Error(`${response.status} ${text}`);
219
  }
220
  return await response.json();
221
}
222