diff --git a/README.md b/README.md
index 5a6666ec..187ddf61 100644
--- a/README.md
+++ b/README.md
@@ -23,14 +23,14 @@ And then add the artifact `incognia-api-client` **or** `incognia-api-client-shad
com.incognia
incognia-api-client
- 3.14.0
+ 3.15.0
```
```xml
com.incognia
incognia-api-client-shaded
- 3.14.0
+ 3.15.0
```
@@ -47,13 +47,13 @@ repositories {
And then add the dependency
```gradle
dependencies {
- implementation 'com.incognia:incognia-api-client:3.14.0'
+ implementation 'com.incognia:incognia-api-client:3.15.0'
}
```
OR
```gradle
dependencies {
- implementation 'com.incognia:incognia-api-client-shaded:3.14.0'
+ implementation 'com.incognia:incognia-api-client-shaded:3.15.0'
}
```
diff --git a/build.gradle b/build.gradle
index 4833104d..f81a0367 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,7 +8,7 @@ plugins {
}
group = "com.incognia"
-version = "3.14.0"
+version = "3.15.0"
task createProjectVersionFile {
def projectVersionDir = "$projectDir/src/main/java/com/incognia/api"
diff --git a/src/main/java/com/incognia/api/IncogniaAPI.java b/src/main/java/com/incognia/api/IncogniaAPI.java
index beaf3490..df950a8a 100644
--- a/src/main/java/com/incognia/api/IncogniaAPI.java
+++ b/src/main/java/com/incognia/api/IncogniaAPI.java
@@ -543,6 +543,7 @@ public void registerFeedback(
.externalId(identifiers.getExternalId())
.requestToken(identifiers.getRequestToken())
.personId(identifiers.getPersonId())
+ .financialAccount(identifiers.getFinancialAccount())
.expiresAt(
Optional.ofNullable(identifiers.getExpiresAt()).map(Instant::toString).orElse(null))
.build();
diff --git a/src/main/java/com/incognia/common/FinancialAccount.java b/src/main/java/com/incognia/common/FinancialAccount.java
new file mode 100644
index 00000000..89cf9e9f
--- /dev/null
+++ b/src/main/java/com/incognia/common/FinancialAccount.java
@@ -0,0 +1,21 @@
+package com.incognia.common;
+
+import com.incognia.transaction.payment.PixKey;
+import java.util.List;
+import lombok.Builder;
+import lombok.Value;
+
+@Value
+@Builder
+public class FinancialAccount {
+ String accountNumber;
+ String branchCode;
+ HolderTaxID holderTaxID;
+ String holderType;
+ String accountCheckDigit;
+ String accountPurpose;
+ String accountType;
+ String country; // ISO 3166-1 alpha-2
+ String ispbCode;
+ List pixKeys;
+}
diff --git a/src/main/java/com/incognia/common/HolderTaxID.java b/src/main/java/com/incognia/common/HolderTaxID.java
new file mode 100644
index 00000000..ae673f02
--- /dev/null
+++ b/src/main/java/com/incognia/common/HolderTaxID.java
@@ -0,0 +1,27 @@
+package com.incognia.common;
+
+import lombok.Builder;
+import lombok.Value;
+
+@Value
+@Builder
+public class HolderTaxID {
+ String type;
+ String value;
+
+ public static HolderTaxID ofCPF(String cpfValue) {
+ return HolderTaxID.builder().type("cpf").value(cpfValue).build();
+ }
+
+ public static HolderTaxID ofSSN(String ssnValue) {
+ return HolderTaxID.builder().type("ssn").value(ssnValue).build();
+ }
+
+ public static HolderTaxID ofEIN(String einValue) {
+ return HolderTaxID.builder().type("ein").value(einValue).build();
+ }
+
+ public static HolderTaxID ofCNPJ(String cnpjValue) {
+ return HolderTaxID.builder().type("cnpj").value(cnpjValue).build();
+ }
+}
diff --git a/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java
index 9714b013..a47759e1 100644
--- a/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java
+++ b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java
@@ -1,5 +1,6 @@
package com.incognia.feedback;
+import com.incognia.common.FinancialAccount;
import com.incognia.common.PersonID;
import java.time.Instant;
import lombok.Builder;
@@ -18,4 +19,5 @@ public class FeedbackIdentifiers {
String externalId;
Instant expiresAt;
PersonID personId;
+ FinancialAccount financialAccount;
}
diff --git a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java
index 959673d9..5fcbd599 100644
--- a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java
+++ b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java
@@ -1,5 +1,6 @@
package com.incognia.feedback;
+import com.incognia.common.FinancialAccount;
import com.incognia.common.PersonID;
import lombok.Builder;
import lombok.Value;
@@ -19,4 +20,5 @@ public class PostFeedbackRequestBody {
String signupId;
String expiresAt;
PersonID personId;
+ FinancialAccount financialAccount;
}
diff --git a/src/test/java/com/incognia/api/IncogniaAPITest.java b/src/test/java/com/incognia/api/IncogniaAPITest.java
index 5ef91761..2163bb16 100644
--- a/src/test/java/com/incognia/api/IncogniaAPITest.java
+++ b/src/test/java/com/incognia/api/IncogniaAPITest.java
@@ -13,6 +13,8 @@
import com.incognia.api.clients.TokenAwareDispatcher;
import com.incognia.common.Address;
import com.incognia.common.Coordinates;
+import com.incognia.common.FinancialAccount;
+import com.incognia.common.HolderTaxID;
import com.incognia.common.Location;
import com.incognia.common.PersonID;
import com.incognia.common.Reason;
@@ -983,6 +985,15 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) {
String signupId = UUID.randomUUID().toString();
Instant timestamp = Instant.now();
PersonID personId = PersonID.ofCPF("12345678901");
+ HolderTaxID holderTaxId = HolderTaxID.ofCNPJ("50100638000172");
+
+ FinancialAccount financialAccount =
+ FinancialAccount.builder()
+ .accountNumber("123456")
+ .branchCode("1234")
+ .holderTaxID(holderTaxId)
+ .holderType("individual")
+ .build();
dispatcher.setExpectedFeedbackRequestBody(
PostFeedbackRequestBody.builder()
@@ -993,6 +1004,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) {
.event(FeedbackEvent.ACCOUNT_TAKEOVER)
.timestamp(timestamp.toEpochMilli())
.personId(personId)
+ .financialAccount(financialAccount)
.build());
mockServer.setDispatcher(dispatcher);
client.registerFeedback(
@@ -1004,6 +1016,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) {
.externalId(externalId)
.signupId(signupId)
.personId(personId)
+ .financialAccount(financialAccount)
.build(),
dryRun);
}