0

Update an employee

by
Published Oct 17, 2025

Updates an existing employee by setting field values. Any fields not provided remain unchanged. Permissions and other requirements SubscriptionCompany User typeBusiness user with admin privileges PermissionsEdit Employees

Script sage_intacct Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type SageIntacct = {
3
	token: string
4
}
5
/**
6
 * Update an employee
7
 * Updates an existing employee by setting field values. Any fields not provided remain unchanged.
8

9

10
Permissions and other requirements
11

12
SubscriptionCompany
13
User typeBusiness user with admin privileges
14
PermissionsEdit Employees
15

16

17

18

19
 */
20
export async function main(
21
	auth: SageIntacct,
22
	key: string,
23
	body: {
24
		key?: string
25
		id?: string
26
		name?: string
27
		startDate?: string
28
		jobTitle?: string
29
		status?: 'active' | 'inactive'
30
		birthDate?: string
31
		endDate?: string
32
		postActualCostWithVariance?: false | true
33
		mergePaymentRequests?: false | true
34
		sendAutomaticPaymentNotification?: false | true
35
		manager?: { key?: string; id?: string; name?: string; href?: string }
36
		gender?: 'female' | 'male'
37
		location?: { key?: string; id?: string; name?: string; href?: string }
38
		department?: { key?: string; id?: string; name?: string; href?: string }
39
		class?: { key?: string; id?: string; name?: string; href?: string }
40
		defaultCurrency?: string
41
		primaryContact?: {
42
			key?: string
43
			id?: string
44
			lastName?: string
45
			firstName?: string
46
			middleName?: string
47
			prefix?: string
48
			email1?: string
49
			email2?: string
50
			phone1?: string
51
			phone2?: string
52
			mobile?: string
53
			pager?: string
54
			fax?: string
55
			URL1?: string
56
			URL2?: string
57
			companyName?: string
58
			printAs?: string
59
			mailingAddress?: {
60
				addressLine1?: string
61
				addressLine2?: string
62
				city?: string
63
				state?: string
64
				postCode?: string
65
				country?: string
66
				isoCountryCode?: string
67
			}
68
			href?: string
69
		}
70
		employeeType?: { key?: string; id?: string; href?: string }
71
		earningType?: { key?: string; id?: string; href?: string }
72
		SSN?: string
73
		employeePosition?: {
74
			key?: string
75
			id?: string
76
			name?: string
77
			href?: string
78
		}
79
		terminationType?: 'voluntary' | 'involuntary' | 'deceased' | 'disability' | 'retired'
80
		form1099?: { name?: string; type?: string; box?: string }
81
		ach?: {
82
			enabled?: false | true
83
			bankRoutingNumber?: string
84
			accountNumber?: string
85
			accountType?: 'checkingAccount' | 'savingsAccount'
86
			remittanceType?: 'personalPPD' | 'businessCCD' | 'businessCTX'
87
		}
88
		isPlaceholderResource?: false | true
89
		filePaymentService?: 'ach' | 'bankFile' | 'none'
90
		bankFile?: {
91
			paymentCountryCode?:
92
				| 'us'
93
				| 'af'
94
				| 'ax'
95
				| 'al'
96
				| 'dz'
97
				| 'as'
98
				| 'ad'
99
				| 'ao'
100
				| 'ai'
101
				| 'aq'
102
				| 'ag'
103
				| 'ar'
104
				| 'am'
105
				| 'aw'
106
				| 'au'
107
				| 'at'
108
				| 'az'
109
				| 'bs'
110
				| 'bh'
111
				| 'bd'
112
				| 'bb'
113
				| 'by'
114
				| 'be'
115
				| 'bz'
116
				| 'bj'
117
				| 'bm'
118
				| 'bt'
119
				| 'bo'
120
				| 'bq'
121
				| 'ba'
122
				| 'bw'
123
				| 'bv'
124
				| 'br'
125
				| 'io'
126
				| 'bn'
127
				| 'bg'
128
				| 'bf'
129
				| 'bi'
130
				| 'kh'
131
				| 'cm'
132
				| 'ca'
133
				| 'cv'
134
				| 'ky'
135
				| 'cf'
136
				| 'td'
137
				| 'cl'
138
				| 'cn'
139
				| 'cx'
140
				| 'cc'
141
				| 'co'
142
				| 'km'
143
				| 'cg'
144
				| 'cd'
145
				| 'ck'
146
				| 'cr'
147
				| 'ci'
148
				| 'hr'
149
				| 'cu'
150
				| 'cw'
151
				| 'cy'
152
				| 'cz'
153
				| 'dk'
154
				| 'dj'
155
				| 'dm'
156
				| 'do'
157
				| 'ec'
158
				| 'eg'
159
				| 'sv'
160
				| 'gq'
161
				| 'er'
162
				| 'ee'
163
				| 'sz'
164
				| 'et'
165
				| 'fk'
166
				| 'fo'
167
				| 'fj'
168
				| 'fi'
169
				| 'fr'
170
				| 'gf'
171
				| 'pf'
172
				| 'tf'
173
				| 'ga'
174
				| 'gm'
175
				| 'ge'
176
				| 'de'
177
				| 'gh'
178
				| 'gi'
179
				| 'gr'
180
				| 'gl'
181
				| 'gd'
182
				| 'gp'
183
				| 'gu'
184
				| 'gt'
185
				| 'gg'
186
				| 'gn'
187
				| 'gw'
188
				| 'gy'
189
				| 'ht'
190
				| 'hm'
191
				| 'hn'
192
				| 'hk'
193
				| 'hu'
194
				| 'is'
195
				| 'in'
196
				| 'id'
197
				| 'ir'
198
				| 'iq'
199
				| 'ie'
200
				| 'im'
201
				| 'il'
202
				| 'it'
203
				| 'jm'
204
				| 'jp'
205
				| 'je'
206
				| 'jo'
207
				| 'kz'
208
				| 'ke'
209
				| 'ki'
210
				| 'kr'
211
				| 'kp'
212
				| 'xk'
213
				| 'kw'
214
				| 'kg'
215
				| 'la'
216
				| 'lv'
217
				| 'lb'
218
				| 'ls'
219
				| 'lr'
220
				| 'ly'
221
				| 'li'
222
				| 'lt'
223
				| 'lu'
224
				| 'mo'
225
				| 'mk'
226
				| 'mg'
227
				| 'mw'
228
				| 'my'
229
				| 'mv'
230
				| 'ml'
231
				| 'mt'
232
				| 'mh'
233
				| 'mq'
234
				| 'mr'
235
				| 'mu'
236
				| 'yt'
237
				| 'mx'
238
				| 'fm'
239
				| 'md'
240
				| 'mc'
241
				| 'mn'
242
				| 'me'
243
				| 'ms'
244
				| 'ma'
245
				| 'mz'
246
				| 'mm'
247
				| 'na'
248
				| 'nr'
249
				| 'np'
250
				| 'nl'
251
				| 'an'
252
				| 'nc'
253
				| 'nz'
254
				| 'ni'
255
				| 'ne'
256
				| 'ng'
257
				| 'nu'
258
				| 'nf'
259
				| 'mp'
260
				| 'no'
261
				| 'om'
262
				| 'pk'
263
				| 'pw'
264
				| 'ps'
265
				| 'pa'
266
				| 'pg'
267
				| 'py'
268
				| 'pe'
269
				| 'ph'
270
				| 'pn'
271
				| 'pl'
272
				| 'pt'
273
				| 'pr'
274
				| 'qa'
275
				| 're'
276
				| 'ro'
277
				| 'ru'
278
				| 'rw'
279
				| 'bl'
280
				| 'sh'
281
				| 'kn'
282
				| 'lc'
283
				| 'mf'
284
				| 'pm'
285
				| 'vc'
286
				| 'ws'
287
				| 'sm'
288
				| 'st'
289
				| 'sa'
290
				| 'sn'
291
				| 'rs'
292
				| 'sc'
293
				| 'sl'
294
				| 'sg'
295
				| 'sx'
296
				| 'sk'
297
				| 'si'
298
				| 'sb'
299
				| 'so'
300
				| 'za'
301
				| 'gs'
302
				| 'es'
303
				| 'lk'
304
				| 'sd'
305
				| 'ss'
306
				| 'sr'
307
				| 'sj'
308
				| 'se'
309
				| 'ch'
310
				| 'sy'
311
				| 'tw'
312
				| 'tj'
313
				| 'tz'
314
				| 'th'
315
				| 'tl'
316
				| 'tg'
317
				| 'tk'
318
				| 'to'
319
				| 'tt'
320
				| 'tn'
321
				| 'tr'
322
				| 'tm'
323
				| 'tc'
324
				| 'tv'
325
				| 'ug'
326
				| 'ua'
327
				| 'ae'
328
				| 'gb'
329
				| 'um'
330
				| 'uy'
331
				| 'uz'
332
				| 'vu'
333
				| 'va'
334
				| 've'
335
				| 'vn'
336
				| 'vg'
337
				| 'vi'
338
				| 'wf'
339
				| 'eh'
340
				| 'ye'
341
				| 'zm'
342
				| 'zw'
343
			paymentCurrency?: string
344
		}
345
		bankFileSetup?: {
346
			key?: string
347
			id?: string
348
			bankAccountNumber?: string
349
			bankAccountName?: string
350
			bsbNumber?: string
351
			sortCode?: string
352
			paymentReference?: string
353
			branchCode?: string
354
			bankAccountType?: string
355
			bankAccountCode?: string
356
			printPaymentProof?: false | true
357
			businessIdCode?: string
358
			creditorCode?: string
359
			secondaryIdentifier?: string
360
			employee?: { key?: string; id?: string; href?: string }
361
			href?: string
362
		}[]
363
		preferredPaymentMethod?: 'ach' | 'printedCheck' | 'eft' | 'cash'
364
		attachmentFolder?: { key?: string; id?: string; href?: string }
365
		employeeRates?: {
366
			key?: string
367
			id?: string
368
			href?: string
369
			hourlyRate?: string
370
			annualSalary?: string
371
			startDate?: string
372
			endDate?: string
373
			employee?: { id?: string; key?: string; name?: string; href?: string }
374
			audit?: {
375
				createdDateTime?: string
376
				modifiedDateTime?: string
377
				createdBy?: string
378
				modifiedBy?: string
379
			}
380
		}[]
381
		positionSkills?: { key?: string; id?: string; href?: string }[]
382
		audit?: {
383
			createdDateTime?: string
384
			modifiedDateTime?: string
385
			createdBy?: string
386
			modifiedBy?: string
387
		}
388
		entity?: { key?: string; id?: string; name?: string; href?: string }
389
		href?: string
390
	} & { id?: {} }
391
) {
392
	const url = new URL(`https://api.intacct.com/ia/api/v1/objects/company-config/employee/${key}`)
393

394
	const response = await fetch(url, {
395
		method: 'PATCH',
396
		headers: {
397
			'Content-Type': 'application/json',
398
			Authorization: 'Bearer ' + auth.token
399
		},
400
		body: JSON.stringify(body)
401
	})
402
	if (!response.ok) {
403
		const text = await response.text()
404
		throw new Error(`${response.status} ${text}`)
405
	}
406
	return await response.json()
407
}
408