Post accounts account

Updates a connected account by setting the values of the parameters passed.

Script stripe Verified

by hugo697 ยท 10/30/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 368 days ago
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