Post treasury financial accounts financial account

Updates the details of a FinancialAccount.

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 treasury financial accounts financial account
6
 * Updates the details of a FinancialAccount.
7
 */
8
export async function main(
9
  auth: Stripe,
10
  financial_account: string,
11
  body: {
12
    expand?: string[];
13
    features?: {
14
      card_issuing?: { requested: boolean; [k: string]: unknown };
15
      deposit_insurance?: { requested: boolean; [k: string]: unknown };
16
      financial_addresses?: {
17
        aba?: { requested: boolean; [k: string]: unknown };
18
        [k: string]: unknown;
19
      };
20
      inbound_transfers?: {
21
        ach?: { requested: boolean; [k: string]: unknown };
22
        [k: string]: unknown;
23
      };
24
      intra_stripe_flows?: { requested: boolean; [k: string]: unknown };
25
      outbound_payments?: {
26
        ach?: { requested: boolean; [k: string]: unknown };
27
        us_domestic_wire?: { requested: boolean; [k: string]: unknown };
28
        [k: string]: unknown;
29
      };
30
      outbound_transfers?: {
31
        ach?: { requested: boolean; [k: string]: unknown };
32
        us_domestic_wire?: { requested: boolean; [k: string]: unknown };
33
        [k: string]: unknown;
34
      };
35
      [k: string]: unknown;
36
    };
37
    metadata?: { [k: string]: string };
38
    platform_restrictions?: {
39
      inbound_flows?: "restricted" | "unrestricted";
40
      outbound_flows?: "restricted" | "unrestricted";
41
      [k: string]: unknown;
42
    };
43
  }
44
) {
45
  const url = new URL(
46
    `https://api.stripe.com/v1/treasury/financial_accounts/${financial_account}`
47
  );
48

49
  const response = await fetch(url, {
50
    method: "POST",
51
    headers: {
52
      "Content-Type": "application/x-www-form-urlencoded",
53
      Authorization: "Bearer " + auth.token,
54
    },
55
    body: encodeParams(body),
56
  });
57
  if (!response.ok) {
58
    const text = await response.text();
59
    throw new Error(`${response.status} ${text}`);
60
  }
61
  return await response.json();
62
}
63

64
function encodeParams(o: any) {
65
  function iter(o: any, path: string) {
66
    if (Array.isArray(o)) {
67
      o.forEach(function (a) {
68
        iter(a, path + "[]");
69
      });
70
      return;
71
    }
72
    if (o !== null && typeof o === "object") {
73
      Object.keys(o).forEach(function (k) {
74
        iter(o[k], path + "[" + k + "]");
75
      });
76
      return;
77
    }
78
    data.push(path + "=" + o);
79
  }
80
  const data: string[] = [];
81
  Object.keys(o).forEach(function (k) {
82
    if (o[k] !== undefined) {
83
      iter(o[k], k);
84
    }
85
  });
86
  return new URLSearchParams(data.join("&"));
87
}
88