1 | type Stripe = { |
2 | token: string; |
3 | }; |
4 | |
5 | * Post accounts account |
6 | * Updates a connected account by setting the values of the parameters passed. |
7 | */ |
8 | export async function main( |
9 | auth: Stripe, |
10 | account: string, |
11 | body: { |
12 | account_token?: string; |
13 | business_profile?: { |
14 | annual_revenue?: { |
15 | amount: number; |
16 | currency: string; |
17 | fiscal_year_end: string; |
18 | [k: string]: unknown; |
19 | }; |
20 | estimated_worker_count?: number; |
21 | mcc?: string; |
22 | monthly_estimated_revenue?: { |
23 | amount: number; |
24 | currency: string; |
25 | [k: string]: unknown; |
26 | }; |
27 | name?: string; |
28 | product_description?: string; |
29 | support_address?: { |
30 | city?: string; |
31 | country?: string; |
32 | line1?: string; |
33 | line2?: string; |
34 | postal_code?: string; |
35 | state?: string; |
36 | [k: string]: unknown; |
37 | }; |
38 | support_email?: string; |
39 | support_phone?: string; |
40 | support_url?: string | ""; |
41 | url?: string; |
42 | [k: string]: unknown; |
43 | }; |
44 | business_type?: |
45 | | "company" |
46 | | "government_entity" |
47 | | "individual" |
48 | | "non_profit"; |
49 | capabilities?: { |
50 | acss_debit_payments?: { requested?: boolean; [k: string]: unknown }; |
51 | affirm_payments?: { requested?: boolean; [k: string]: unknown }; |
52 | afterpay_clearpay_payments?: { |
53 | requested?: boolean; |
54 | [k: string]: unknown; |
55 | }; |
56 | au_becs_debit_payments?: { requested?: boolean; [k: string]: unknown }; |
57 | bacs_debit_payments?: { requested?: boolean; [k: string]: unknown }; |
58 | bancontact_payments?: { requested?: boolean; [k: string]: unknown }; |
59 | bank_transfer_payments?: { requested?: boolean; [k: string]: unknown }; |
60 | blik_payments?: { requested?: boolean; [k: string]: unknown }; |
61 | boleto_payments?: { requested?: boolean; [k: string]: unknown }; |
62 | card_issuing?: { requested?: boolean; [k: string]: unknown }; |
63 | card_payments?: { requested?: boolean; [k: string]: unknown }; |
64 | cartes_bancaires_payments?: { requested?: boolean; [k: string]: unknown }; |
65 | cashapp_payments?: { requested?: boolean; [k: string]: unknown }; |
66 | eps_payments?: { requested?: boolean; [k: string]: unknown }; |
67 | fpx_payments?: { requested?: boolean; [k: string]: unknown }; |
68 | giropay_payments?: { requested?: boolean; [k: string]: unknown }; |
69 | grabpay_payments?: { requested?: boolean; [k: string]: unknown }; |
70 | ideal_payments?: { requested?: boolean; [k: string]: unknown }; |
71 | india_international_payments?: { |
72 | requested?: boolean; |
73 | [k: string]: unknown; |
74 | }; |
75 | jcb_payments?: { requested?: boolean; [k: string]: unknown }; |
76 | klarna_payments?: { requested?: boolean; [k: string]: unknown }; |
77 | konbini_payments?: { requested?: boolean; [k: string]: unknown }; |
78 | legacy_payments?: { requested?: boolean; [k: string]: unknown }; |
79 | link_payments?: { requested?: boolean; [k: string]: unknown }; |
80 | oxxo_payments?: { requested?: boolean; [k: string]: unknown }; |
81 | p24_payments?: { requested?: boolean; [k: string]: unknown }; |
82 | paynow_payments?: { requested?: boolean; [k: string]: unknown }; |
83 | promptpay_payments?: { requested?: boolean; [k: string]: unknown }; |
84 | revolut_pay_payments?: { requested?: boolean; [k: string]: unknown }; |
85 | sepa_debit_payments?: { requested?: boolean; [k: string]: unknown }; |
86 | sofort_payments?: { requested?: boolean; [k: string]: unknown }; |
87 | swish_payments?: { requested?: boolean; [k: string]: unknown }; |
88 | tax_reporting_us_1099_k?: { requested?: boolean; [k: string]: unknown }; |
89 | tax_reporting_us_1099_misc?: { |
90 | requested?: boolean; |
91 | [k: string]: unknown; |
92 | }; |
93 | transfers?: { requested?: boolean; [k: string]: unknown }; |
94 | treasury?: { requested?: boolean; [k: string]: unknown }; |
95 | us_bank_account_ach_payments?: { |
96 | requested?: boolean; |
97 | [k: string]: unknown; |
98 | }; |
99 | zip_payments?: { requested?: boolean; [k: string]: unknown }; |
100 | [k: string]: unknown; |
101 | }; |
102 | company?: { |
103 | address?: { |
104 | city?: string; |
105 | country?: string; |
106 | line1?: string; |
107 | line2?: string; |
108 | postal_code?: string; |
109 | state?: string; |
110 | [k: string]: unknown; |
111 | }; |
112 | address_kana?: { |
113 | city?: string; |
114 | country?: string; |
115 | line1?: string; |
116 | line2?: string; |
117 | postal_code?: string; |
118 | state?: string; |
119 | town?: string; |
120 | [k: string]: unknown; |
121 | }; |
122 | address_kanji?: { |
123 | city?: string; |
124 | country?: string; |
125 | line1?: string; |
126 | line2?: string; |
127 | postal_code?: string; |
128 | state?: string; |
129 | town?: string; |
130 | [k: string]: unknown; |
131 | }; |
132 | directors_provided?: boolean; |
133 | executives_provided?: boolean; |
134 | export_license_id?: string; |
135 | export_purpose_code?: string; |
136 | name?: string; |
137 | name_kana?: string; |
138 | name_kanji?: string; |
139 | owners_provided?: boolean; |
140 | ownership_declaration?: { |
141 | date?: number; |
142 | ip?: string; |
143 | user_agent?: string; |
144 | [k: string]: unknown; |
145 | }; |
146 | phone?: string; |
147 | registration_number?: string; |
148 | structure?: |
149 | | "" |
150 | | "free_zone_establishment" |
151 | | "free_zone_llc" |
152 | | "government_instrumentality" |
153 | | "governmental_unit" |
154 | | "incorporated_non_profit" |
155 | | "incorporated_partnership" |
156 | | "limited_liability_partnership" |
157 | | "llc" |
158 | | "multi_member_llc" |
159 | | "private_company" |
160 | | "private_corporation" |
161 | | "private_partnership" |
162 | | "public_company" |
163 | | "public_corporation" |
164 | | "public_partnership" |
165 | | "registered_charity" |
166 | | "single_member_llc" |
167 | | "sole_establishment" |
168 | | "sole_proprietorship" |
169 | | "tax_exempt_government_instrumentality" |
170 | | "unincorporated_association" |
171 | | "unincorporated_non_profit" |
172 | | "unincorporated_partnership"; |
173 | tax_id?: string; |
174 | tax_id_registrar?: string; |
175 | vat_id?: string; |
176 | verification?: { |
177 | document?: { back?: string; front?: string; [k: string]: unknown }; |
178 | [k: string]: unknown; |
179 | }; |
180 | [k: string]: unknown; |
181 | }; |
182 | default_currency?: string; |
183 | documents?: { |
184 | bank_account_ownership_verification?: { |
185 | files?: string[]; |
186 | [k: string]: unknown; |
187 | }; |
188 | company_license?: { files?: string[]; [k: string]: unknown }; |
189 | company_memorandum_of_association?: { |
190 | files?: string[]; |
191 | [k: string]: unknown; |
192 | }; |
193 | company_ministerial_decree?: { files?: string[]; [k: string]: unknown }; |
194 | company_registration_verification?: { |
195 | files?: string[]; |
196 | [k: string]: unknown; |
197 | }; |
198 | company_tax_id_verification?: { files?: string[]; [k: string]: unknown }; |
199 | proof_of_registration?: { files?: string[]; [k: string]: unknown }; |
200 | [k: string]: unknown; |
201 | }; |
202 | email?: string; |
203 | expand?: string[]; |
204 | external_account?: string; |
205 | individual?: { |
206 | address?: { |
207 | city?: string; |
208 | country?: string; |
209 | line1?: string; |
210 | line2?: string; |
211 | postal_code?: string; |
212 | state?: string; |
213 | [k: string]: unknown; |
214 | }; |
215 | address_kana?: { |
216 | city?: string; |
217 | country?: string; |
218 | line1?: string; |
219 | line2?: string; |
220 | postal_code?: string; |
221 | state?: string; |
222 | town?: string; |
223 | [k: string]: unknown; |
224 | }; |
225 | address_kanji?: { |
226 | city?: string; |
227 | country?: string; |
228 | line1?: string; |
229 | line2?: string; |
230 | postal_code?: string; |
231 | state?: string; |
232 | town?: string; |
233 | [k: string]: unknown; |
234 | }; |
235 | dob?: |
236 | | { day: number; month: number; year: number; [k: string]: unknown } |
237 | | ""; |
238 | email?: string; |
239 | first_name?: string; |
240 | first_name_kana?: string; |
241 | first_name_kanji?: string; |
242 | full_name_aliases?: string[] | ""; |
243 | gender?: string; |
244 | id_number?: string; |
245 | id_number_secondary?: string; |
246 | last_name?: string; |
247 | last_name_kana?: string; |
248 | last_name_kanji?: string; |
249 | maiden_name?: string; |
250 | metadata?: { [k: string]: string } | ""; |
251 | phone?: string; |
252 | political_exposure?: "existing" | "none"; |
253 | registered_address?: { |
254 | city?: string; |
255 | country?: string; |
256 | line1?: string; |
257 | line2?: string; |
258 | postal_code?: string; |
259 | state?: string; |
260 | [k: string]: unknown; |
261 | }; |
262 | relationship?: { |
263 | director?: boolean; |
264 | executive?: boolean; |
265 | owner?: boolean; |
266 | percent_ownership?: number | ""; |
267 | title?: string; |
268 | [k: string]: unknown; |
269 | }; |
270 | ssn_last_4?: string; |
271 | verification?: { |
272 | additional_document?: { |
273 | back?: string; |
274 | front?: string; |
275 | [k: string]: unknown; |
276 | }; |
277 | document?: { back?: string; front?: string; [k: string]: unknown }; |
278 | [k: string]: unknown; |
279 | }; |
280 | [k: string]: unknown; |
281 | }; |
282 | metadata?: { [k: string]: string } | ""; |
283 | settings?: { |
284 | bacs_debit_payments?: { display_name?: string; [k: string]: unknown }; |
285 | branding?: { |
286 | icon?: string; |
287 | logo?: string; |
288 | primary_color?: string; |
289 | secondary_color?: string; |
290 | [k: string]: unknown; |
291 | }; |
292 | card_issuing?: { |
293 | tos_acceptance?: { |
294 | date?: number; |
295 | ip?: string; |
296 | user_agent?: string | ""; |
297 | [k: string]: unknown; |
298 | }; |
299 | [k: string]: unknown; |
300 | }; |
301 | card_payments?: { |
302 | decline_on?: { |
303 | avs_failure?: boolean; |
304 | cvc_failure?: boolean; |
305 | [k: string]: unknown; |
306 | }; |
307 | statement_descriptor_prefix?: string; |
308 | statement_descriptor_prefix_kana?: string | ""; |
309 | statement_descriptor_prefix_kanji?: string | ""; |
310 | [k: string]: unknown; |
311 | }; |
312 | invoices?: { |
313 | default_account_tax_ids?: string[] | ""; |
314 | [k: string]: unknown; |
315 | }; |
316 | payments?: { |
317 | statement_descriptor?: string; |
318 | statement_descriptor_kana?: string; |
319 | statement_descriptor_kanji?: string; |
320 | [k: string]: unknown; |
321 | }; |
322 | payouts?: { |
323 | debit_negative_balances?: boolean; |
324 | schedule?: { |
325 | delay_days?: "minimum" | number; |
326 | interval?: "daily" | "manual" | "monthly" | "weekly"; |
327 | monthly_anchor?: number; |
328 | weekly_anchor?: |
329 | | "friday" |
330 | | "monday" |
331 | | "saturday" |
332 | | "sunday" |
333 | | "thursday" |
334 | | "tuesday" |
335 | | "wednesday"; |
336 | [k: string]: unknown; |
337 | }; |
338 | statement_descriptor?: string; |
339 | [k: string]: unknown; |
340 | }; |
341 | treasury?: { |
342 | tos_acceptance?: { |
343 | date?: number; |
344 | ip?: string; |
345 | user_agent?: string | ""; |
346 | [k: string]: unknown; |
347 | }; |
348 | [k: string]: unknown; |
349 | }; |
350 | [k: string]: unknown; |
351 | }; |
352 | tos_acceptance?: { |
353 | date?: number; |
354 | ip?: string; |
355 | service_agreement?: string; |
356 | user_agent?: string; |
357 | [k: string]: unknown; |
358 | }; |
359 | } |
360 | ) { |
361 | const url = new URL(`https://api.stripe.com/v1/accounts/${account}`); |
362 |
|
363 | const response = await fetch(url, { |
364 | method: "POST", |
365 | headers: { |
366 | "Content-Type": "application/x-www-form-urlencoded", |
367 | Authorization: "Bearer " + auth.token, |
368 | }, |
369 | body: encodeParams(body), |
370 | }); |
371 | if (!response.ok) { |
372 | const text = await response.text(); |
373 | throw new Error(`${response.status} ${text}`); |
374 | } |
375 | return await response.json(); |
376 | } |
377 |
|
378 | function encodeParams(o: any) { |
379 | function iter(o: any, path: string) { |
380 | if (Array.isArray(o)) { |
381 | o.forEach(function (a) { |
382 | iter(a, path + "[]"); |
383 | }); |
384 | return; |
385 | } |
386 | if (o !== null && typeof o === "object") { |
387 | Object.keys(o).forEach(function (k) { |
388 | iter(o[k], path + "[" + k + "]"); |
389 | }); |
390 | return; |
391 | } |
392 | data.push(path + "=" + o); |
393 | } |
394 | const data: string[] = []; |
395 | Object.keys(o).forEach(function (k) { |
396 | if (o[k] !== undefined) { |
397 | iter(o[k], k); |
398 | } |
399 | }); |
400 | return new URLSearchParams(data.join("&")); |
401 | } |
402 |
|