increase 1.361.0 → 1.362.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 693a4c244c1ccd7cd6ce2efec35ed0bb1c7852ffb11df31789decc7fdaaa703d
4
- data.tar.gz: 71892bf2ecf9a4c8a3ad2738b00b835cccda0c7cbcd51c26b62782eb1b8cc04b
3
+ metadata.gz: 55ac30f388550b8f685eb5bf5dce3a9ed1c506387fc9cb58b94746f41f103f5f
4
+ data.tar.gz: 0275dc1471bbee9c227de6bbe30800bcb2dbab8c580b521c516d7c4e7c30539e
5
5
  SHA512:
6
- metadata.gz: '08f7b1d238efae08f9195514392d5c4f4c2b35e2a6c7c07b61392d61445b92bba69edc231a3a922d6fd40fdac5753814db285ee49c718c4abda9126fde19f53c'
7
- data.tar.gz: 711946095b9706ebb435a07e0ac013805f6161f5848eb9e90226caebb23fb18279068f518f4b5476c766f38d43320c4f92be566cfd39a5b38f43d3df41e594bf
6
+ metadata.gz: a9946430baa65f8a3375dd78f87256c1b99c7ee3ad81127381d59bad50449eeb92db6c1d76e8e1298eaf6b9a45c77e024e18dae38b961777c91e8689ad468306
7
+ data.tar.gz: 4ca5d93ed5ed2900ae9997e212447f0e836842ce8d4cdcde2033e4f325e65745c5aa89e90ad96e71c2cab139792409ff431452fa034e755f24f65bc4eaa15d5d
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "increase", "~> 1.361.0"
18
+ gem "increase", "~> 1.362.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -64,6 +64,9 @@ module Increase
64
64
  # @return [Array(Net::HTTPGenericRequest, Proc)]
65
65
  def build_request(request, &blk)
66
66
  method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
67
+ # Streamed bodies (e.g. multipart) arrive as a factory so each attempt gets a fresh stream.
68
+ body = body.call if body.is_a?(Proc)
69
+
67
70
  req = Net::HTTPGenericRequest.new(
68
71
  method.to_s.upcase,
69
72
  !body.nil?,
@@ -608,34 +608,39 @@ module Increase
608
608
  #
609
609
  # @param body [Object]
610
610
  #
611
- # @return [Array(String, Enumerable<String>)]
611
+ # @return [Array(String, Proc)]
612
612
  private def encode_multipart_streaming(body)
613
613
  # rubocop:disable Style/CaseEquality
614
614
  # RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
615
615
  boundary = SecureRandom.urlsafe_base64(46)
616
616
 
617
- closing = []
618
- strio = writable_enum do |y|
619
- case body
620
- in Hash
621
- body.each do |key, val|
622
- case val
623
- in Array if val.all? { primitive?(_1) || Increase::Internal::Type::FileInput === _1 }
624
- val.each do |v|
625
- write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
617
+ # Retries and redirects resend the request, and a streamed body can only be read
618
+ # once, so hand back a factory that builds a fresh stream for each attempt.
619
+ stream = lambda do
620
+ closing = []
621
+ strio = writable_enum do |y|
622
+ case body
623
+ in Hash
624
+ body.each do |key, val|
625
+ case val
626
+ in Array if val.all? { primitive?(_1) || Increase::Internal::Type::FileInput === _1 }
627
+ val.each do |v|
628
+ write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
629
+ end
630
+ else
631
+ write_multipart_chunk(y, boundary: boundary, key: key, val: val, closing: closing)
626
632
  end
627
- else
628
- write_multipart_chunk(y, boundary: boundary, key: key, val: val, closing: closing)
629
633
  end
634
+ else
635
+ write_multipart_chunk(y, boundary: boundary, key: nil, val: body, closing: closing)
630
636
  end
631
- else
632
- write_multipart_chunk(y, boundary: boundary, key: nil, val: body, closing: closing)
637
+ y << "--#{boundary}--\r\n"
633
638
  end
634
- y << "--#{boundary}--\r\n"
639
+
640
+ fused_enum(strio) { closing.each(&:call) }
635
641
  end
636
642
 
637
- fused_io = fused_enum(strio) { closing.each(&:call) }
638
- [boundary, fused_io]
643
+ [boundary, stream]
639
644
  # rubocop:enable Style/CaseEquality
640
645
  end
641
646
 
@@ -8,15 +8,20 @@ module Increase
8
8
  include Increase::Internal::Type::RequestParameters
9
9
 
10
10
  # @!attribute account_id
11
- # The Increase identifier for the account that will send the transfer.
11
+ # The Increase identifier for the account that will originate the transfer. For
12
+ # credit transfers (transfers with a positive `amount`), this is the account that
13
+ # funds will be sent from. For debit transfers (transfers with a negative
14
+ # `amount`), this is the account that funds will be pulled into.
12
15
  #
13
16
  # @return [String]
14
17
  required :account_id, String
15
18
 
16
19
  # @!attribute amount
17
20
  # The transfer amount in USD cents. A positive amount originates a credit transfer
18
- # pushing funds to the receiving account. A negative amount originates a debit
19
- # transfer pulling funds from the receiving account.
21
+ # pushing funds from Increase to the account at the other bank. A negative amount
22
+ # originates a debit transfer pulling funds from the account at the other bank
23
+ # into Increase. Debit transfers
24
+ # [might result in a hold before funds are available](/documentation/sending-ach-debit-transfers).
20
25
  #
21
26
  # @return [Integer]
22
27
  required :amount, Integer
@@ -33,9 +38,10 @@ module Increase
33
38
  required :statement_descriptor, String
34
39
 
35
40
  # @!attribute account_number
36
- # The receiver's account number. For credit transfers (positive `amount`) this is
37
- # the account that funds will be sent to. For debit transfers (negative `amount`)
38
- # this is the account that funds will be pulled from.
41
+ # The receiver's account number. For credit transfers (transfers with a positive
42
+ # `amount`), this is the account that funds will be sent to. For debit transfers
43
+ # (transfers with a negative `amount`), this is the account that funds will be
44
+ # pulled from.
39
45
  #
40
46
  # @return [String, nil]
41
47
  optional :account_number, String
@@ -58,27 +64,32 @@ module Increase
58
64
  optional :company_descriptive_date, String
59
65
 
60
66
  # @!attribute company_discretionary_data
61
- # Custom data sent in the company batch header. This value is informational and
62
- # does not affect funds movement, settlement timing, or returns. Most ACH
63
- # transfers do not need this. Only set this if your recipient has asked for it.
67
+ # Custom data sent in the company batch header, meant as metadata for the
68
+ # originator. This value is informational and does not affect funds movement,
69
+ # settlement timing, or returns. Most ACH transfers do not need this; we recommend
70
+ # storing metadata in your own application instead.
64
71
  #
65
72
  # @return [String, nil]
66
73
  optional :company_discretionary_data, String
67
74
 
68
75
  # @!attribute company_entry_description
69
- # A short description sent in the company batch header. Most receivers do not
70
- # surface this. Only set this if your recipient has asked for a specific value or
71
- # if Nacha mandates one for your Standard Entry Class (SEC) code and use case. For
72
- # example, Prearranged Payment and Deposit (PPD) payroll credits must use
73
- # `PAYROLL`, and reversals must use `REVERSAL`.
76
+ # A short description sent in the company batch header, meant to provide the
77
+ # receiver with a reason for the transfer. Many receivers do not surface this data
78
+ # on the receiver's bank statement. Only set this if your recipient has asked for
79
+ # a specific value or if Nacha mandates one for your Standard Entry Class (SEC)
80
+ # code and use case. For example, some use cases require constants like
81
+ # `ACCTVERIFY`, `PURCHASE`, `PAYROLL`, or `REVERSAL`.
74
82
  #
75
83
  # @return [String, nil]
76
84
  optional :company_entry_description, String
77
85
 
78
86
  # @!attribute company_name
79
- # The name by which the recipient knows you, sent in the company batch header. We
80
- # recommend setting this on every transfer; if you do not, we fall back to the
81
- # `statement_descriptor`.
87
+ # The name by which the recipient knows the counterparty of this transaction. If
88
+ # you're processing payments on behalf of another party, use their name, not your
89
+ # own, so that it's more likely the recipient understands the context of the
90
+ # payment. This value is usually displayed to the recipient on their bank
91
+ # statement. We recommend setting this on every transfer; if you do not, we fall
92
+ # back to the `statement_descriptor`.
82
93
  #
83
94
  # @return [String, nil]
84
95
  optional :company_name, String
@@ -106,15 +117,19 @@ module Increase
106
117
  optional :funding, enum: -> { Increase::ACHTransferCreateParams::Funding }
107
118
 
108
119
  # @!attribute individual_id
109
- # Your internal identifier for the transfer recipient. This value is informational
110
- # and not verified by the recipient's bank. Most callers can leave this unset.
120
+ # Your internal identifier for the recipient. This value is informational and
121
+ # generally not verified by the recipient's bank. Most callers can leave this
122
+ # unset. For the specific case of person-to-person credits with the WEB standard
123
+ # entry class code, this must include the name of the payer.
111
124
  #
112
125
  # @return [String, nil]
113
126
  optional :individual_id, String
114
127
 
115
128
  # @!attribute individual_name
116
- # The name of the transfer recipient. This value is informational and not verified
117
- # by the recipient's bank.
129
+ # The name of the transfer recipient. This value is informational and generally
130
+ # not verified by the recipient's bank. This value is usually displayed to the
131
+ # recipient on their bank statement. We recommend setting this on every transfer;
132
+ # if you do not, we fall back to the `statement_descriptor`.
118
133
  #
119
134
  # @return [String, nil]
120
135
  optional :individual_name, String
@@ -152,12 +167,18 @@ module Increase
152
167
  enum: -> { Increase::ACHTransferCreateParams::StandardEntryClassCode }
153
168
 
154
169
  # @!method initialize(account_id:, amount:, statement_descriptor:, account_number: nil, addenda: nil, company_descriptive_date: nil, company_discretionary_data: nil, company_entry_description: nil, company_name: nil, destination_account_holder: nil, external_account_id: nil, funding: nil, individual_id: nil, individual_name: nil, preferred_effective_date: nil, require_approval: nil, routing_number: nil, standard_entry_class_code: nil, request_options: {})
155
- # @param account_id [String] The Increase identifier for the account that will send the transfer.
170
+ # @param account_id [String]
171
+ # The Increase identifier for the account that will originate the transfer. For
172
+ # credit transfers (transfers with a positive `amount`), this is the account that
173
+ # funds will be sent from. For debit transfers (transfers with a negative
174
+ # `amount`), this is the account that funds will be pulled into.
156
175
  #
157
176
  # @param amount [Integer]
158
177
  # The transfer amount in USD cents. A positive amount originates a credit transfer
159
- # pushing funds to the receiving account. A negative amount originates a debit
160
- # transfer pulling funds from the receiving account.
178
+ # pushing funds from Increase to the account at the other bank. A negative amount
179
+ # originates a debit transfer pulling funds from the account at the other bank
180
+ # into Increase. Debit transfers
181
+ # [might result in a hold before funds are available](/documentation/sending-ach-debit-transfers).
161
182
  #
162
183
  # @param statement_descriptor [String]
163
184
  # A description you choose to give the transfer. This will be saved with the
@@ -168,9 +189,10 @@ module Increase
168
189
  # `individual_name` and `company_name` instead of relying on this fallback.
169
190
  #
170
191
  # @param account_number [String]
171
- # The receiver's account number. For credit transfers (positive `amount`) this is
172
- # the account that funds will be sent to. For debit transfers (negative `amount`)
173
- # this is the account that funds will be pulled from.
192
+ # The receiver's account number. For credit transfers (transfers with a positive
193
+ # `amount`), this is the account that funds will be sent to. For debit transfers
194
+ # (transfers with a negative `amount`), this is the account that funds will be
195
+ # pulled from.
174
196
  #
175
197
  # @param addenda [Increase::Models::ACHTransferCreateParams::Addenda]
176
198
  # Additional information passed through to the receiving bank with the transfer.
@@ -184,21 +206,26 @@ module Increase
184
206
  # settlement timing, or returns. Only set this if your recipient has asked for it.
185
207
  #
186
208
  # @param company_discretionary_data [String]
187
- # Custom data sent in the company batch header. This value is informational and
188
- # does not affect funds movement, settlement timing, or returns. Most ACH
189
- # transfers do not need this. Only set this if your recipient has asked for it.
209
+ # Custom data sent in the company batch header, meant as metadata for the
210
+ # originator. This value is informational and does not affect funds movement,
211
+ # settlement timing, or returns. Most ACH transfers do not need this; we recommend
212
+ # storing metadata in your own application instead.
190
213
  #
191
214
  # @param company_entry_description [String]
192
- # A short description sent in the company batch header. Most receivers do not
193
- # surface this. Only set this if your recipient has asked for a specific value or
194
- # if Nacha mandates one for your Standard Entry Class (SEC) code and use case. For
195
- # example, Prearranged Payment and Deposit (PPD) payroll credits must use
196
- # `PAYROLL`, and reversals must use `REVERSAL`.
215
+ # A short description sent in the company batch header, meant to provide the
216
+ # receiver with a reason for the transfer. Many receivers do not surface this data
217
+ # on the receiver's bank statement. Only set this if your recipient has asked for
218
+ # a specific value or if Nacha mandates one for your Standard Entry Class (SEC)
219
+ # code and use case. For example, some use cases require constants like
220
+ # `ACCTVERIFY`, `PURCHASE`, `PAYROLL`, or `REVERSAL`.
197
221
  #
198
222
  # @param company_name [String]
199
- # The name by which the recipient knows you, sent in the company batch header. We
200
- # recommend setting this on every transfer; if you do not, we fall back to the
201
- # `statement_descriptor`.
223
+ # The name by which the recipient knows the counterparty of this transaction. If
224
+ # you're processing payments on behalf of another party, use their name, not your
225
+ # own, so that it's more likely the recipient understands the context of the
226
+ # payment. This value is usually displayed to the recipient on their bank
227
+ # statement. We recommend setting this on every transfer; if you do not, we fall
228
+ # back to the `statement_descriptor`.
202
229
  #
203
230
  # @param destination_account_holder [Symbol, Increase::Models::ACHTransferCreateParams::DestinationAccountHolder]
204
231
  # The type of entity that owns the receiver's account.
@@ -213,12 +240,16 @@ module Increase
213
240
  # Defaults to `checking`.
214
241
  #
215
242
  # @param individual_id [String]
216
- # Your internal identifier for the transfer recipient. This value is informational
217
- # and not verified by the recipient's bank. Most callers can leave this unset.
243
+ # Your internal identifier for the recipient. This value is informational and
244
+ # generally not verified by the recipient's bank. Most callers can leave this
245
+ # unset. For the specific case of person-to-person credits with the WEB standard
246
+ # entry class code, this must include the name of the payer.
218
247
  #
219
248
  # @param individual_name [String]
220
- # The name of the transfer recipient. This value is informational and not verified
221
- # by the recipient's bank.
249
+ # The name of the transfer recipient. This value is informational and generally
250
+ # not verified by the recipient's bank. This value is usually displayed to the
251
+ # recipient on their bank statement. We recommend setting this on every transfer;
252
+ # if you do not, we fall back to the `statement_descriptor`.
222
253
  #
223
254
  # @param preferred_effective_date [Increase::Models::ACHTransferCreateParams::PreferredEffectiveDate]
224
255
  # Configuration for how the effective date of the transfer will be set. This
@@ -68,6 +68,14 @@ module Increase
68
68
  # @return [Increase::Models::Simulations::CardDisputeActionParams::Visa::AcceptChargeback, nil]
69
69
  optional :accept_chargeback, -> { Increase::Simulations::CardDisputeActionParams::Visa::AcceptChargeback }
70
70
 
71
+ # @!attribute accept_user_prearbitration
72
+ # The parameters for accepting the user prearbitration. Required if and only if
73
+ # `action` is `accept_user_prearbitration`.
74
+ #
75
+ # @return [Increase::Models::Simulations::CardDisputeActionParams::Visa::AcceptUserPrearbitration, nil]
76
+ optional :accept_user_prearbitration,
77
+ -> { Increase::Simulations::CardDisputeActionParams::Visa::AcceptUserPrearbitration }
78
+
71
79
  # @!attribute accept_user_submission
72
80
  # The parameters for accepting the user submission. Required if and only if
73
81
  # `action` is `accept_user_submission`.
@@ -146,7 +154,7 @@ module Increase
146
154
  optional :time_out_user_prearbitration,
147
155
  -> { Increase::Simulations::CardDisputeActionParams::Visa::TimeOutUserPrearbitration }
148
156
 
149
- # @!method initialize(action:, accept_chargeback: nil, accept_user_submission: nil, decline_user_prearbitration: nil, receive_merchant_prearbitration: nil, reject: nil, represent: nil, request_further_information: nil, time_out_chargeback: nil, time_out_merchant_prearbitration: nil, time_out_representment: nil, time_out_user_prearbitration: nil)
157
+ # @!method initialize(action:, accept_chargeback: nil, accept_user_prearbitration: nil, accept_user_submission: nil, decline_user_prearbitration: nil, receive_merchant_prearbitration: nil, reject: nil, represent: nil, request_further_information: nil, time_out_chargeback: nil, time_out_merchant_prearbitration: nil, time_out_representment: nil, time_out_user_prearbitration: nil)
150
158
  # The Visa-specific parameters for taking action on the dispute. Required if and
151
159
  # only if `network` is `visa`.
152
160
  #
@@ -158,6 +166,10 @@ module Increase
158
166
  # The parameters for accepting the chargeback. Required if and only if `action` is
159
167
  # `accept_chargeback`.
160
168
  #
169
+ # @param accept_user_prearbitration [Increase::Models::Simulations::CardDisputeActionParams::Visa::AcceptUserPrearbitration]
170
+ # The parameters for accepting the user prearbitration. Required if and only if
171
+ # `action` is `accept_user_prearbitration`.
172
+ #
161
173
  # @param accept_user_submission [Increase::Models::Simulations::CardDisputeActionParams::Visa::AcceptUserSubmission]
162
174
  # The parameters for accepting the user submission. Required if and only if
163
175
  # `action` is `accept_user_submission`.
@@ -208,19 +220,22 @@ module Increase
208
220
  # Simulate the merchant accepting the chargeback. This will move the dispute to a `won` state.
209
221
  ACCEPT_CHARGEBACK = :accept_chargeback
210
222
 
223
+ # Simulate the merchant accepting the user's pre-arbitration. This will move the dispute to a `won` state.
224
+ ACCEPT_USER_PREARBITRATION = :accept_user_prearbitration
225
+
211
226
  # Accept the user's submission and transmit it to the network. This will move the dispute to a `pending_response` state.
212
227
  ACCEPT_USER_SUBMISSION = :accept_user_submission
213
228
 
214
229
  # Simulate the merchant declining the user's pre-arbitration. This will move the dispute to a `lost` state.
215
230
  DECLINE_USER_PREARBITRATION = :decline_user_prearbitration
216
231
 
217
- # Simulate the merchant issuing pre-arbitration. This will move the dispute to a `user_submission_required` state.
232
+ # Simulate the merchant issuing pre-arbitration. Only available for disputes in the fraud or authorization category. This will move the dispute to a `user_submission_required` state.
218
233
  RECEIVE_MERCHANT_PREARBITRATION = :receive_merchant_prearbitration
219
234
 
220
235
  # Simulate the dispute being rejected before it is submitted to the network. This will move the dispute to a `rejected` state.
221
236
  REJECT = :reject
222
237
 
223
- # Simulate the merchant re-presenting the dispute. This will move the dispute to a `user_submission_required` state.
238
+ # Simulate the merchant re-presenting the dispute. Only available for disputes in a consumer or processing error category. This will move the dispute to a `user_submission_required` state.
224
239
  REPRESENT = :represent
225
240
 
226
241
  # Simulate further information being requested from the user. This will move the dispute to a `user_submission_required` state.
@@ -235,7 +250,7 @@ module Increase
235
250
  # Simulate the user timing out responding to a merchant re-presentment. This will move the dispute to a `lost` state.
236
251
  TIME_OUT_REPRESENTMENT = :time_out_representment
237
252
 
238
- # Simulate the merchant timing out responding to a user pre-arbitration. This will move the dispute to a `win` state.
253
+ # Simulate the merchant timing out responding to a user pre-arbitration. This will move the dispute to a `won` state.
239
254
  TIME_OUT_USER_PREARBITRATION = :time_out_user_prearbitration
240
255
 
241
256
  # @!method self.values
@@ -249,6 +264,13 @@ module Increase
249
264
  # `accept_chargeback`.
250
265
  end
251
266
 
267
+ # @see Increase::Models::Simulations::CardDisputeActionParams::Visa#accept_user_prearbitration
268
+ class AcceptUserPrearbitration < Increase::Internal::Type::BaseModel
269
+ # @!method initialize
270
+ # The parameters for accepting the user prearbitration. Required if and only if
271
+ # `action` is `accept_user_prearbitration`.
272
+ end
273
+
252
274
  # @see Increase::Models::Simulations::CardDisputeActionParams::Visa#accept_user_submission
253
275
  class AcceptUserSubmission < Increase::Internal::Type::BaseModel
254
276
  # @!method initialize
@@ -14,10 +14,61 @@ module Increase
14
14
  # @return [String]
15
15
  required :wire_drawdown_request_id, String
16
16
 
17
- # @!method initialize(wire_drawdown_request_id:, request_options: {})
17
+ # @!attribute refusal_reason_additional_information
18
+ # Additional information about the refusal that the simulated refusal will have.
19
+ #
20
+ # @return [String, nil]
21
+ optional :refusal_reason_additional_information, String
22
+
23
+ # @!attribute refusal_reason_code
24
+ # The reason code that the simulated refusal will have.
25
+ #
26
+ # Defaults to `other`.
27
+ #
28
+ # @return [Symbol, Increase::Models::Simulations::WireDrawdownRequestRefuseParams::RefusalReasonCode, nil]
29
+ optional :refusal_reason_code,
30
+ enum: -> { Increase::Simulations::WireDrawdownRequestRefuseParams::RefusalReasonCode }
31
+
32
+ # @!method initialize(wire_drawdown_request_id:, refusal_reason_additional_information: nil, refusal_reason_code: nil, request_options: {})
18
33
  # @param wire_drawdown_request_id [String] The identifier of the Wire Drawdown Request you wish to refuse.
19
34
  #
35
+ # @param refusal_reason_additional_information [String]
36
+ # Additional information about the refusal that the simulated refusal will have.
37
+ #
38
+ # @param refusal_reason_code [Symbol, Increase::Models::Simulations::WireDrawdownRequestRefuseParams::RefusalReasonCode]
39
+ # The reason code that the simulated refusal will have.
40
+ #
41
+ # Defaults to `other`.
42
+ #
20
43
  # @param request_options [Increase::RequestOptions, Hash{Symbol=>Object}]
44
+
45
+ # The reason code that the simulated refusal will have.
46
+ #
47
+ # Defaults to `other`.
48
+ module RefusalReasonCode
49
+ extend Increase::Internal::Type::Enum
50
+
51
+ # The debtor's account number is invalid or missing. Corresponds to the Fedwire reason code `AC02`.
52
+ INVALID_DEBTOR_ACCOUNT_NUMBER = :invalid_debtor_account_number
53
+
54
+ # The debtor account does not allow drawdown requests. Corresponds to the Fedwire reason code `AG01`.
55
+ TRANSACTION_FORBIDDEN = :transaction_forbidden
56
+
57
+ # The debtor account cannot be debited for a generic reason. Corresponds to the Fedwire reason code `AG07`.
58
+ UNSUCCESSFUL_DIRECT_DEBIT = :unsuccessful_direct_debit
59
+
60
+ # The debtor's identification is inconsistent with the debtor account number. Corresponds to the Fedwire reason code `BE01`.
61
+ INCONSISTENT_WITH_END_CUSTOMER = :inconsistent_with_end_customer
62
+
63
+ # The reason is provided as narrative information in the additional information field. Corresponds to the Fedwire reason code `NARR`.
64
+ NARRATIVE = :narrative
65
+
66
+ # Some other error or issue has occurred.
67
+ OTHER = :other
68
+
69
+ # @!method self.values
70
+ # @return [Array<Symbol>]
71
+ end
21
72
  end
22
73
  end
23
74
  end
@@ -108,6 +108,13 @@ module Increase
108
108
  # @return [String, nil]
109
109
  required :idempotency_key, String, nil?: true
110
110
 
111
+ # @!attribute refusal
112
+ # If the debtor refuses the drawdown request, this will contain supplemental
113
+ # details.
114
+ #
115
+ # @return [Increase::Models::WireDrawdownRequest::Refusal, nil]
116
+ required :refusal, -> { Increase::WireDrawdownRequest::Refusal }, nil?: true
117
+
111
118
  # @!attribute status
112
119
  # The lifecycle status of the drawdown request.
113
120
  #
@@ -142,7 +149,7 @@ module Increase
142
149
  # @return [String]
143
150
  required :unstructured_remittance_information, String
144
151
 
145
- # @!method initialize(id:, account_id:, account_number_id:, amount:, created_at:, creditor_address:, creditor_name:, currency:, debtor_account_number:, debtor_address:, debtor_external_account_id:, debtor_name:, debtor_routing_number:, end_to_end_identification:, fulfillment_inbound_wire_transfer_id:, idempotency_key:, status:, submission:, type:, unique_end_to_end_transaction_reference:, unstructured_remittance_information:)
152
+ # @!method initialize(id:, account_id:, account_number_id:, amount:, created_at:, creditor_address:, creditor_name:, currency:, debtor_account_number:, debtor_address:, debtor_external_account_id:, debtor_name:, debtor_routing_number:, end_to_end_identification:, fulfillment_inbound_wire_transfer_id:, idempotency_key:, refusal:, status:, submission:, type:, unique_end_to_end_transaction_reference:, unstructured_remittance_information:)
146
153
  # Wire drawdown requests enable you to request that someone else send you a wire.
147
154
  # Because there is nuance to making sure your counterparty's bank processes these
148
155
  # correctly, we ask that you reach out to
@@ -197,6 +204,10 @@ module Increase
197
204
  # Increase and is used to ensure that a request is only processed once. Learn more
198
205
  # about [idempotency](https://increase.com/documentation/idempotency-keys).
199
206
  #
207
+ # @param refusal [Increase::Models::WireDrawdownRequest::Refusal, nil]
208
+ # If the debtor refuses the drawdown request, this will contain supplemental
209
+ # details.
210
+ #
200
211
  # @param status [Symbol, Increase::Models::WireDrawdownRequest::Status]
201
212
  # The lifecycle status of the drawdown request.
202
213
  #
@@ -334,6 +345,72 @@ module Increase
334
345
  # @param state [String, nil] The address state.
335
346
  end
336
347
 
348
+ # @see Increase::Models::WireDrawdownRequest#refusal
349
+ class Refusal < Increase::Internal::Type::BaseModel
350
+ # @!attribute refusal_reason_additional_information
351
+ # Additional information about the refusal provided by the debtor bank. This is
352
+ # typically present when the `refusal_reason_code` is `narrative`.
353
+ #
354
+ # @return [String, nil]
355
+ required :refusal_reason_additional_information, String, nil?: true
356
+
357
+ # @!attribute refusal_reason_code
358
+ # The reason the wire drawdown request was refused as provided by the debtor bank.
359
+ #
360
+ # @return [Symbol, Increase::Models::WireDrawdownRequest::Refusal::RefusalReasonCode]
361
+ required :refusal_reason_code, enum: -> { Increase::WireDrawdownRequest::Refusal::RefusalReasonCode }
362
+
363
+ # @!attribute refused_at
364
+ # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which
365
+ # the wire drawdown request was refused.
366
+ #
367
+ # @return [Time]
368
+ required :refused_at, Time
369
+
370
+ # @!method initialize(refusal_reason_additional_information:, refusal_reason_code:, refused_at:)
371
+ # If the debtor refuses the drawdown request, this will contain supplemental
372
+ # details.
373
+ #
374
+ # @param refusal_reason_additional_information [String, nil]
375
+ # Additional information about the refusal provided by the debtor bank. This is
376
+ # typically present when the `refusal_reason_code` is `narrative`.
377
+ #
378
+ # @param refusal_reason_code [Symbol, Increase::Models::WireDrawdownRequest::Refusal::RefusalReasonCode]
379
+ # The reason the wire drawdown request was refused as provided by the debtor bank.
380
+ #
381
+ # @param refused_at [Time]
382
+ # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which
383
+ # the wire drawdown request was refused.
384
+
385
+ # The reason the wire drawdown request was refused as provided by the debtor bank.
386
+ #
387
+ # @see Increase::Models::WireDrawdownRequest::Refusal#refusal_reason_code
388
+ module RefusalReasonCode
389
+ extend Increase::Internal::Type::Enum
390
+
391
+ # The debtor's account number is invalid or missing. Corresponds to the Fedwire reason code `AC02`.
392
+ INVALID_DEBTOR_ACCOUNT_NUMBER = :invalid_debtor_account_number
393
+
394
+ # The debtor account does not allow drawdown requests. Corresponds to the Fedwire reason code `AG01`.
395
+ TRANSACTION_FORBIDDEN = :transaction_forbidden
396
+
397
+ # The debtor account cannot be debited for a generic reason. Corresponds to the Fedwire reason code `AG07`.
398
+ UNSUCCESSFUL_DIRECT_DEBIT = :unsuccessful_direct_debit
399
+
400
+ # The debtor's identification is inconsistent with the debtor account number. Corresponds to the Fedwire reason code `BE01`.
401
+ INCONSISTENT_WITH_END_CUSTOMER = :inconsistent_with_end_customer
402
+
403
+ # The reason is provided as narrative information in the additional information field. Corresponds to the Fedwire reason code `NARR`.
404
+ NARRATIVE = :narrative
405
+
406
+ # Some other error or issue has occurred.
407
+ OTHER = :other
408
+
409
+ # @!method self.values
410
+ # @return [Array<Symbol>]
411
+ end
412
+ end
413
+
337
414
  # The lifecycle status of the drawdown request.
338
415
  #
339
416
  # @see Increase::Models::WireDrawdownRequest#status