0

Create a payment

by
Published Oct 17, 2025

Creates a new payment.

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

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