diff --git a/.forge/BAIS-HALT-1783815860-attempt-3.md b/.forge/BAIS-HALT-1783815860-attempt-3.md
new file mode 100644
index 0000000..df454a5
--- /dev/null
+++ b/.forge/BAIS-HALT-1783815860-attempt-3.md
@@ -0,0 +1,3 @@
+# BAIS-HALT-1783815860-attempt-3
+
+Forge 이슈 작업 브랜치 `forge/BAIS-HALT-1783815860-attempt-3`.
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..a80bfb0
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,20 @@
+
+ 4.0.0
+
+ com.klaro.bais
+ bais-platform
+ 1.0-SNAPSHOT
+ pom
+
+
+ services/payments
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.5.14
+
+
\ No newline at end of file
diff --git a/services/payments/pom.xml b/services/payments/pom.xml
new file mode 100644
index 0000000..8327749
--- /dev/null
+++ b/services/payments/pom.xml
@@ -0,0 +1,20 @@
+
+ 4.0.0
+
+
+
+
+
+ payments
+ jar
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.18.0
+
+
+
\ No newline at end of file
diff --git a/services/payments/src/main/java/com/klaro/bais/payments/PaymentReferenceService.java b/services/payments/src/main/java/com/klaro/bais/payments/PaymentReferenceService.java
new file mode 100644
index 0000000..ef0f219
--- /dev/null
+++ b/services/payments/src/main/java/com/klaro/bais/payments/PaymentReferenceService.java
@@ -0,0 +1,9 @@
+package com.klaro.bais.payments;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class PaymentReferenceService {
+ public String normalize(String paymentReference) {
+ return StringUtils.trimToEmpty(paymentReference);
+ }
+}
\ No newline at end of file
diff --git a/services/payments/src/test/java/com/klaro/bais/payments/PaymentReferenceServiceTest.java b/services/payments/src/test/java/com/klaro/bais/payments/PaymentReferenceServiceTest.java
new file mode 100644
index 0000000..304139e
--- /dev/null
+++ b/services/payments/src/test/java/com/klaro/bais/payments/PaymentReferenceServiceTest.java
@@ -0,0 +1,29 @@
+package com.klaro.bais.payments;
+
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+class PaymentReferenceServiceTest {
+
+ private final PaymentReferenceService service = new PaymentReferenceService();
+
+ @Test
+ void testNormalize_Null() {
+ assertEquals("", service.normalize(null));
+ }
+
+ @Test
+ void testNormalize_EmptyString() {
+ assertEquals("", service.normalize(""));
+ }
+
+ @Test
+ void testNormalize_Whitespace() {
+ assertEquals("", service.normalize(" "));
+ }
+
+ @Test
+ void testNormalize_ValidString() {
+ assertEquals("validReference", service.normalize("validReference"));
+ }
+}
\ No newline at end of file