-
Notifications
You must be signed in to change notification settings - Fork 0
/
bank_account.go
135 lines (99 loc) · 5.48 KB
/
bank_account.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package circlesdk
// BankAddress contains address details for the bank, as provided during bank account creation.
type BankAddress struct {
// Name of the bank.
// This property is required for bank accounts outside of the US that do not support IBAN'
BankName string `json:"bankName,omitempty"`
// City portion of the address.
// This property is required for bank accounts outside of the US.
City string `json:"city,omitempty"`
// Country portion of the address.
// Formatted as a two-letter country code specified in ISO 3166-1 alpha-2.
Country string `json:"country,omitempty"`
// Line one of the street address.
Line1 string `json:"line1,omitempty"`
// Line two of the street address.
Line2 string `json:"line2,omitempty"`
// State / County / Province / Region portion of the address.
// US and Canada use the two-letter code for the subdivision.
District string `json:"district,omitempty"`
}
// BankAccountStatus contains the status value for the bank account.
type BankAccountStatus string
const (
// BankAccountStatusPending = "pending".
BankAccountStatusPending BankAccountStatus = "pending"
// BankAccountStatusComplete = "complete".
BankAccountStatusComplete BankAccountStatus = "complete"
// BankAccountStatusFailed = "failed".
BankAccountStatusFailed BankAccountStatus = "failed"
)
// BankAccountErrorCode contains the error code value for the bank account.
type BankAccountErrorCode string
const (
// BankAccountErrorCodeBankAccountAuthorizationExpired = "bank_account_authorization_expired".
BankAccountErrorCodeBankAccountAuthorizationExpired BankAccountErrorCode = "bank_account_authorization_expired"
// BankAccountErrorCodeBankAccountError = "bank_account_error".
BankAccountErrorCodeBankAccountError BankAccountErrorCode = "bank_account_error"
// BankAccountErrorCodeBankAccountIneligible = "bank_account_ineligible".
BankAccountErrorCodeBankAccountIneligible BankAccountErrorCode = "bank_account_ineligible"
// BankAccountErrorCodeBankAccountNotFound = "bank_account_not_found".
BankAccountErrorCodeBankAccountNotFound BankAccountErrorCode = "bank_account_not_found"
// BankAccountErrorCodeBankAccountUnauthorized = "bank_account_unauthorized".
BankAccountErrorCodeBankAccountUnauthorized BankAccountErrorCode = "bank_account_unauthorized"
// BankAccountErrorCodeUnsupportedRoutingNumber = "unsupported_routing_number".
BankAccountErrorCodeUnsupportedRoutingNumber BankAccountErrorCode = "unsupported_routing_number"
// BankAccountErrorCodeVerificationFailed = "verification_failed".
BankAccountErrorCodeVerificationFailed BankAccountErrorCode = "verification_failed"
)
// BankAccount is the object contain the bank account data returned from the API.
type BankAccount struct {
// Unique system generated identifier for the payment item.
ID string `json:"id,omitempty"`
// Status of the account.
// A pending status indicates that the linking is in-progress;
// complete indicates the account was linked successfully;
// failed indicates it failed.
Status BankAccountStatus `json:"status,omitempty"`
// Bank name plus last four digits of the bank account number or IBAN.
Description string `json:"description,omitempty"`
// Wire tracking ref that needs to be set in the wire reference to beneficiary field.
TrackingRef string `json:"trackingRef,omitempty"`
// The redacted account number of the ACH account.
AccountNumber string `json:"accountNumber,omitempty"`
// The routing number of the ACH account.
RoutingNumber string `json:"routingNumber,omitempty"`
// Object containing billing details for the bank account.
BillingDetails *BillingDetails `json:"billingDetails,omitempty"`
// The address details for the bank, as provided during bank account creation.
BankAddress *BankAddress `json:"bankAddress,omitempty"`
// A UUID that uniquely identifies the account number.
// If the same account is used more than once, each card object will have a different id,
// but the fingerprint will stay the same.
Fingerprint string `json:"fingerprint,omitempty"`
// Indicates the failure reason of the ACH account. Only present on failed accounts.
// Possible values are [bank_account_authorization_expired, bank_account_error,
// bank_account_ineligible, bank_account_not_found, bank_account_unauthorized,
// unsupported_routing_number, verification_failed].
ErrorCode BankAccountErrorCode `json:"errorCode,omitempty"`
// Results of risk evaluation. Only present if the payment is denied by Circle's risk service.
RiskEvaluation *RiskEvaluation `json:"riskEvaluation,omitempty"`
// Object containing metadata for the bank account
Metadata *Metadata `json:"metadata,omitempty"`
// ISO-8601 UTC date/time format of the bank account creation date.
CreateDate string `json:"createDate,omitempty"`
// ISO-8601 UTC date/time format of the bank account update date.
UpdateDate string `json:"updateDate"`
}
// CreateBankAccountRequest contains the data to create a bank account (ACH).
type CreateBankAccountRequest struct {
// Universally unique identifier (UUID v4) idempotency key.
// This key is utilized to ensure exactly-once execution of mutating requests.
IdempotencyKey string `json:"idempotencyKey,omitempty"`
// The token for the ACH account provided by the processor (Plaid).
PlaidProcessorToken string `json:"plaidProcessorToken,omitempty"`
// Billing details of the account holder.
BillingDetails *BillingDetails `json:"billingDetails,omitempty"`
// Object containing metadata for the bank account creation process
Metadata *CreateMetadataRequest `json:"metadata,omitempty"`
}