0

Update a payment

by
Published Oct 17, 2025

Updates an existing payment by setting field values. Any fields not provided remain unchanged.

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 a payment
7
 * Updates an existing payment by setting field values. Any fields not provided remain unchanged.
8
 */
9
export async function main(
10
	auth: SageIntacct,
11
	key: string,
12
	body: {
13
		key?: string
14
		id?: string
15
		href?: string
16
		recordType?:
17
			| 'apAdjustments'
18
			| 'apBill'
19
			| 'apDiscount'
20
			| 'apAppliedAdvance'
21
			| 'apPayment'
22
			| 'apAdvance'
23
			| 'arAdjustments'
24
			| 'arDiscount'
25
			| 'interEntityReceivable'
26
			| 'arInvoice'
27
			| 'arRealizedMultiCurrencyGainLoss'
28
			| 'arAppliedAdvanceOverpayment'
29
			| 'arReceipts'
30
			| 'arAdvance'
31
			| 'employeeExpenses'
32
			| 'employeeReimbursements'
33
			| 'expenseAdjustment'
34
			| 'manualCheck'
35
			| 'cmPrintedQuickCheck'
36
		financialEntity?: { id?: string }
37
		action?: 'draft' | 'submit'
38
		systemGenerated?: 'true' | 'false'
39
		state?:
40
			| 'draft'
41
			| 'partiallyApproved'
42
			| 'submitted'
43
			| 'voided'
44
			| 'confirmed'
45
			| 'approved'
46
			| 'declined'
47
			| 'delivered'
48
			| 'printVoided'
49
			| 'deleted'
50
			| 'quickDelivery'
51
		documentNumber?: string
52
		description?: string
53
		documentId?: string
54
		txnDate?: string
55
		txnPaidDate?: string
56
		paymentDate?: string
57
		baseCurrency?: {
58
			currency?: string
59
			amountToPay?: string
60
			totalAmount?: string
61
			totalSelected?: string
62
			totalPaid?: string
63
			totalDue?: string
64
		}
65
		txnCurrency?: {
66
			currency?: string
67
			amountToPay?: string
68
			totalAmount?: string
69
			totalSelected?: string
70
			totalPaid?: string
71
			totalDue?: string
72
		}
73
		cleared?: false | true
74
		clearedDate?: string
75
		isInclusiveTax?: false | true
76
		paymentSummary?: {
77
			key?: string
78
			id?: string
79
			name?: string
80
			postingDate?: string
81
			href?: string
82
		}
83
		exchangeRate?: { date?: string; rate?: string; typeId?: string }
84
		paymentProvider?: { key?: string; id?: string; href?: string }
85
		paymentMethod?: string
86
		payTo?: { href?: string; key?: string; id?: string }
87
		taxSolution?: {
88
			key?: string
89
			id?: string
90
			taxCalculationMethod?: string
91
			href?: string
92
		}
93
		vendor?: {
94
			href?: string
95
			entity?: string
96
			key?: string
97
			id?: string
98
			name?: string
99
		}
100
		jointPayee?: { href?: string; key?: string; id?: string }
101
		paymentRequestMethod?:
102
			| 'useVendorPreference'
103
			| 'generateOneRequestPerBill'
104
			| 'mergeRequestsIntoOnePerVendor'
105
			| 'mergeRequestIntoOnePerVendorPayToContact'
106
		details?: {
107
			key?: string
108
			id?: string
109
			href?: string
110
			paymentDate?: string
111
			baseCurrency?: {
112
				paymentAmount?: string
113
				inlineAmount?: string
114
				discountAmount?: string
115
				adjustmentAmount?: string
116
				postedAdvanceAmount?: string
117
			}
118
			txnCurrency?: {
119
				currency?: string
120
				paymentAmount?: string
121
				inlineAmount?: string
122
				discountAmount?: string
123
				adjustmentAmount?: string
124
				postedAdvanceAmount?: string
125
			}
126
			discountDate?: string
127
			state?: 'draft' | 'confirmed'
128
			moduleKey?: string
129
			apDebitAdjustment?: { href?: string; key?: string; id?: string }
130
			apDebitAdjustmentLine?: { href?: string; key?: string; id?: string }
131
			bill?: { href?: string; key?: string; id?: string }
132
			billLine?: { href?: string; key?: string; id?: string }
133
			apPayment?: { href?: string; key?: string; id?: string }
134
			apPaymentLine?: { href?: string; key?: string; id?: string }
135
			inlineBill?: { href?: string; key?: string; id?: string }
136
			inlineBillLine?: { href?: string; key?: string; id?: string }
137
			apCreditAdjustment?: { href?: string; key?: string; id?: string }
138
			apCreditAdjustmentLine?: { href?: string; key?: string; id?: string }
139
			apAdvance?: { key?: string; id?: string; href?: string }
140
			apAdvanceLine?: { key?: string; id?: string; href?: string }
141
			apPostedAdvance?: { key?: string; id?: string; href?: string }
142
			apPostedAdvanceLine?: { key?: string; id?: string; href?: string }
143
			jointPayee?: {
144
				href?: string
145
				key?: string
146
				id?: string
147
				printAs?: string
148
			}
149
			audit?: {
150
				createdDateTime?: string
151
				modifiedDateTime?: string
152
				createdBy?: string
153
				modifiedBy?: string
154
			}
155
		}[]
156
		lines?: {
157
			key?: string
158
			id?: string
159
			href?: string
160
			description?: string
161
			exchangeRate?: { date?: string; rate?: string; typeId?: string }
162
			lineNumber?: number
163
			baseCurrency?: {
164
				currency?: string
165
				amount?: string
166
				totalPaid?: string
167
				totalSelected?: string
168
			}
169
			txnCurrency?: {
170
				currency?: string
171
				amount?: string
172
				totalPaid?: string
173
				totalSelected?: string
174
			}
175
			paymentLineRecord?: string
176
			baseLocation?: string
177
			isTax?: false | true
178
			taxDetail?: { key?: string; id?: string; href?: string }
179
			glAccount?: { key?: string; id?: string; name?: string; href?: string }
180
			dimensions?: {
181
				location?: { key?: string; id?: string; name?: string; href?: string }
182
				department?: {
183
					key?: string
184
					id?: string
185
					name?: string
186
					href?: string
187
				}
188
				employee?: { key?: string; id?: string; name?: string; href?: string }
189
				project?: { key?: string; id?: string; name?: string; href?: string }
190
				customer?: { key?: string; id?: string; name?: string; href?: string }
191
				vendor?: { key?: string; id?: string; name?: string; href?: string }
192
				item?: { key?: string; id?: string; name?: string; href?: string }
193
				warehouse?: { key?: string; id?: string; name?: string; href?: string }
194
				class?: { key?: string; id?: string; name?: string; href?: string }
195
				task?: { id?: string; key?: string; name?: string; href?: string }
196
				costType?: { id?: string; key?: string; name?: string; href?: string }
197
				asset?: { id?: string; key?: string; name?: string; href?: string }
198
				contract?: { id?: string; key?: string; name?: string; href?: string }
199
				affiliateEntity?: {
200
					key?: string
201
					id?: string
202
					href?: string
203
					name?: string
204
				}
205
			} & {
206
				department?: {
207
					key?: string
208
					id?: string
209
					name?: string
210
					href?: string
211
				}
212
				location?: { key?: string; id?: string; name?: string; href?: string }
213
			}
214
			apPayment?: { key?: string; id?: string; href?: string }
215
			audit?: {
216
				createdDateTime?: string
217
				modifiedDateTime?: string
218
				createdBy?: string
219
				modifiedBy?: string
220
			}
221
		}[]
222
		entity?: { key?: string; id?: string; name?: string; href?: string }
223
		audit?: {
224
			createdDateTime?: string
225
			modifiedDateTime?: string
226
			createdBy?: string
227
			modifiedBy?: string
228
		} & { createdDateTime?: string }
229
	} & { id?: {} }
230
) {
231
	const url = new URL(`https://api.intacct.com/ia/api/v1/objects/accounts-payable/payment/${key}`)
232

233
	const response = await fetch(url, {
234
		method: 'PATCH',
235
		headers: {
236
			'Content-Type': 'application/json',
237
			Authorization: 'Bearer ' + auth.token
238
		},
239
		body: JSON.stringify(body)
240
	})
241
	if (!response.ok) {
242
		const text = await response.text()
243
		throw new Error(`${response.status} ${text}`)
244
	}
245
	return await response.json()
246
}
247