Creates a new chart of accounts

Script xero Verified

by hugo697 ยท 12/20/2024

The script

Submitted by hugo697 Bun
Verified 515 days ago
1
//native
2
type Xero = {
3
	token: string
4
}
5
/**
6
 * Creates a new chart of accounts
7
 *
8
 */
9
export async function main(
10
	auth: Xero,
11
	xero_tenant_id: string,
12
	Idempotency_Key: string,
13
	body: {
14
		Code?: string
15
		Name?: string
16
		AccountID?: string
17
		Type?:
18
			| 'BANK'
19
			| 'CURRENT'
20
			| 'CURRLIAB'
21
			| 'DEPRECIATN'
22
			| 'DIRECTCOSTS'
23
			| 'EQUITY'
24
			| 'EXPENSE'
25
			| 'FIXED'
26
			| 'INVENTORY'
27
			| 'LIABILITY'
28
			| 'NONCURRENT'
29
			| 'OTHERINCOME'
30
			| 'OVERHEADS'
31
			| 'PREPAYMENT'
32
			| 'REVENUE'
33
			| 'SALES'
34
			| 'TERMLIAB'
35
			| 'PAYG'
36
		BankAccountNumber?: string
37
		Status?: 'ACTIVE' | 'ARCHIVED' | 'DELETED'
38
		Description?: string
39
		BankAccountType?: '' | 'BANK' | 'CREDITCARD' | 'PAYPAL' | 'NONE'
40
		CurrencyCode?:
41
			| 'AED'
42
			| 'AFN'
43
			| 'ALL'
44
			| 'AMD'
45
			| 'ANG'
46
			| 'AOA'
47
			| 'ARS'
48
			| 'AUD'
49
			| 'AWG'
50
			| 'AZN'
51
			| 'BAM'
52
			| 'BBD'
53
			| 'BDT'
54
			| 'BGN'
55
			| 'BHD'
56
			| 'BIF'
57
			| 'BMD'
58
			| 'BND'
59
			| 'BOB'
60
			| 'BRL'
61
			| 'BSD'
62
			| 'BTN'
63
			| 'BWP'
64
			| 'BYN'
65
			| 'BYR'
66
			| 'BZD'
67
			| 'CAD'
68
			| 'CDF'
69
			| 'CHF'
70
			| 'CLF'
71
			| 'CLP'
72
			| 'CNY'
73
			| 'COP'
74
			| 'CRC'
75
			| 'CUC'
76
			| 'CUP'
77
			| 'CVE'
78
			| 'CZK'
79
			| 'DJF'
80
			| 'DKK'
81
			| 'DOP'
82
			| 'DZD'
83
			| 'EEK'
84
			| 'EGP'
85
			| 'ERN'
86
			| 'ETB'
87
			| 'EUR'
88
			| 'FJD'
89
			| 'FKP'
90
			| 'GBP'
91
			| 'GEL'
92
			| 'GHS'
93
			| 'GIP'
94
			| 'GMD'
95
			| 'GNF'
96
			| 'GTQ'
97
			| 'GYD'
98
			| 'HKD'
99
			| 'HNL'
100
			| 'HRK'
101
			| 'HTG'
102
			| 'HUF'
103
			| 'IDR'
104
			| 'ILS'
105
			| 'INR'
106
			| 'IQD'
107
			| 'IRR'
108
			| 'ISK'
109
			| 'JMD'
110
			| 'JOD'
111
			| 'JPY'
112
			| 'KES'
113
			| 'KGS'
114
			| 'KHR'
115
			| 'KMF'
116
			| 'KPW'
117
			| 'KRW'
118
			| 'KWD'
119
			| 'KYD'
120
			| 'KZT'
121
			| 'LAK'
122
			| 'LBP'
123
			| 'LKR'
124
			| 'LRD'
125
			| 'LSL'
126
			| 'LTL'
127
			| 'LVL'
128
			| 'LYD'
129
			| 'MAD'
130
			| 'MDL'
131
			| 'MGA'
132
			| 'MKD'
133
			| 'MMK'
134
			| 'MNT'
135
			| 'MOP'
136
			| 'MRO'
137
			| 'MRU'
138
			| 'MUR'
139
			| 'MVR'
140
			| 'MWK'
141
			| 'MXN'
142
			| 'MXV'
143
			| 'MYR'
144
			| 'MZN'
145
			| 'NAD'
146
			| 'NGN'
147
			| 'NIO'
148
			| 'NOK'
149
			| 'NPR'
150
			| 'NZD'
151
			| 'OMR'
152
			| 'PAB'
153
			| 'PEN'
154
			| 'PGK'
155
			| 'PHP'
156
			| 'PKR'
157
			| 'PLN'
158
			| 'PYG'
159
			| 'QAR'
160
			| 'RON'
161
			| 'RSD'
162
			| 'RUB'
163
			| 'RWF'
164
			| 'SAR'
165
			| 'SBD'
166
			| 'SCR'
167
			| 'SDG'
168
			| 'SEK'
169
			| 'SGD'
170
			| 'SHP'
171
			| 'SKK'
172
			| 'SLE'
173
			| 'SLL'
174
			| 'SOS'
175
			| 'SRD'
176
			| 'STD'
177
			| 'STN'
178
			| 'SVC'
179
			| 'SYP'
180
			| 'SZL'
181
			| 'THB'
182
			| 'TJS'
183
			| 'TMT'
184
			| 'TND'
185
			| 'TOP'
186
			| 'TRY'
187
			| 'TTD'
188
			| 'TWD'
189
			| 'TZS'
190
			| 'UAH'
191
			| 'UGX'
192
			| 'USD'
193
			| 'UYU'
194
			| 'UZS'
195
			| 'VEF'
196
			| 'VES'
197
			| 'VND'
198
			| 'VUV'
199
			| 'WST'
200
			| 'XAF'
201
			| 'XCD'
202
			| 'XOF'
203
			| 'XPF'
204
			| 'YER'
205
			| 'ZAR'
206
			| 'ZMW'
207
			| 'ZMK'
208
			| 'ZWD'
209
		TaxType?: string
210
		EnablePaymentsToAccount?: false | true
211
		ShowInExpenseClaims?: false | true
212
		Class?: 'EQUITY' | 'EXPENSE' | 'LIABILITY' | 'REVENUE' | 'ASSET'
213
		SystemAccount?:
214
			| ''
215
			| 'DEBTORS'
216
			| 'CREDITORS'
217
			| 'BANKCURRENCYGAIN'
218
			| 'GST'
219
			| 'GSTONIMPORTS'
220
			| 'HISTORICAL'
221
			| 'REALISEDCURRENCYGAIN'
222
			| 'RETAINEDEARNINGS'
223
			| 'ROUNDING'
224
			| 'TRACKINGTRANSFERS'
225
			| 'UNPAIDEXPCLM'
226
			| 'UNREALISEDCURRENCYGAIN'
227
			| 'WAGEPAYABLES'
228
			| 'CISASSETS'
229
			| 'CISASSET'
230
			| 'CISLABOUR'
231
			| 'CISLABOUREXPENSE'
232
			| 'CISLABOURINCOME'
233
			| 'CISLIABILITY'
234
			| 'CISMATERIALS'
235
		ReportingCode?: string
236
		ReportingCodeName?: string
237
		HasAttachments?: never
238
		UpdatedDateUTC?: string
239
		AddToWatchlist?: false | true
240
		ValidationErrors?: { Message?: string }[]
241
	}
242
) {
243
	const url = new URL(`https://api.xero.com/api.xro/2.0/Accounts`)
244

245
	const response = await fetch(url, {
246
		method: 'PUT',
247
		headers: {
248
			Accept: 'application/json',
249
			'xero-tenant-id': xero_tenant_id,
250
			'Idempotency-Key': Idempotency_Key,
251
			'Content-Type': 'application/json',
252
			Authorization: 'Bearer ' + auth.token
253
		},
254
		body: JSON.stringify(body)
255
	})
256
	if (!response.ok) {
257
		const text = await response.text()
258
		throw new Error(`${response.status} ${text}`)
259
	}
260
	return await response.json()
261
}
262