diff --git a/src/main/java/com/supwisdom/dlpay/consume/PayDtlBuilder.java b/src/main/java/com/supwisdom/dlpay/consume/PayDtlBuilder.java
new file mode 100644
index 0000000..8c0498a
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/consume/PayDtlBuilder.java
@@ -0,0 +1,86 @@
+package com.supwisdom.dlpay.consume;
+
+import com.supwisdom.dlpay.consume.domain.TAccount;
+import com.supwisdom.dlpay.consume.domain.TPerson;
+import com.supwisdom.dlpay.framework.service.PersonPayService;
+import com.supwisdom.dlpay.framework.util.TradeDict;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PayDtlBuilder {
+  public static class PayDetail {
+    private String accNo;
+    private String accName;
+    private Double amount;
+    private String direction;
+    private String summary;
+  }
+
+  private TPerson person;
+  private TAccount account;
+  private String direction;
+
+  private Double payAmount;
+
+  private String summary;
+
+  private List<PayDetail> detail;
+
+  public static PayDtlBuilder newBuilder() {
+    return new PayDtlBuilder();
+  }
+
+  private PayDtlBuilder() {
+    this.detail = new ArrayList<>();
+  }
+
+  public PayDtlBuilder person(TPerson per, TAccount acc, String direction) {
+    this.person = per;
+    this.account = acc;
+    this.direction = direction;
+    return this;
+  }
+
+  public PayDtlBuilder setSummary(String s) {
+    this.summary = s;
+    return this;
+  }
+
+  public PayDtlBuilder setTransDatetime(String transDate ,String transTime) {
+
+    return this;
+  }
+
+  public Boolean done(PersonPayService service) {
+    if (this.detail.size() == 0) {
+      return false;
+    }
+    this.payAmount = 0.0;
+
+    for (PayDetail d : detail) {
+      this.payAmount += d.amount;
+    }
+    if (this.payAmount > this.account.getBalance()) {
+      return false;
+    }
+    service.process(this);
+    return true;
+  }
+
+
+  public PayDtlBuilder addSubDtl(String accNo, Double amount, String summary) {
+    PayDetail dtl = new PayDetail();
+    dtl.accNo = accNo;
+    dtl.accName = "";
+    dtl.amount = amount;
+    if (this.direction.equals(TradeDict.TRANS_DIRECTION_CREDIT)) {
+      dtl.direction = TradeDict.TRANS_DIRECTION_DEBIT;
+    } else {
+      dtl.direction = TradeDict.TRANS_DIRECTION_CREDIT;
+    }
+    dtl.summary = summary;
+    this.detail.add(dtl);
+    return this;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TPayCreditDtl.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TPayCreditDtl.java
new file mode 100644
index 0000000..9a2e3fa
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TPayCreditDtl.java
@@ -0,0 +1,33 @@
+package com.supwisdom.dlpay.consume.domain;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "t_paycreditdtl")
+public class TPayCreditDtl {
+  private String refno;
+  private Integer rowno;
+  /**
+   * 贷方账号
+   */
+  private String accNo;
+  private String accSubjNo;
+
+  private String otherAccNo;
+
+  /**
+   * 发生金额
+   */
+  private Double amount;
+
+  /**
+   * 交易方向 credit, debit
+   */
+  private String direction;
+
+  /**
+   * 交易摘要
+   */
+  private String summary;
+}
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TPaydtl.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TPaydtl.java
new file mode 100644
index 0000000..e2e79e7
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TPaydtl.java
@@ -0,0 +1,83 @@
+package com.supwisdom.dlpay.consume.domain;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "t_paydtl")
+public class TPaydtl {
+  private String refno;
+  /**
+   * 交易关联个人信息
+   */
+  private String userid;
+  private String name;
+  /**
+   * 记账日期
+   */
+  private String accDate;
+  /**
+   * 交易发生日期
+   */
+  private String transDate;
+  private String transTime;
+
+  /**
+   * 交易代码
+   */
+  private Integer transCode;
+  private String transName;
+  /**
+   * 可选值 init, wip, success, failed
+   */
+  private String status;
+  /**
+   * 交易总金额
+   */
+  private Double amount;
+  /**
+   * 交易前个人账户余额
+   */
+  private Double befBalance;
+  /**
+   * 借方账号
+   */
+  private String accNo;
+  private String accName;
+  /**
+   * 借方科目号
+   */
+  private String accSubjNo;
+
+  /**
+   * 交易方向 credit, debit
+   */
+  private String direction;
+  /**
+   * 结算标志 none, ok
+   */
+  private String settleStatus;
+  /**
+   * 结算日期
+   */
+  private String settleDate;
+  /**
+   * 可选值 none, cancel, reversed
+   */
+  private String reverseFlag;
+  /**
+   * 当有撤销交易时，撤销金额填写
+   */
+  private Double reverseAmount;
+
+  /**
+   * 交易说明
+   */
+  private String describe;
+
+  /**
+   * 交易字表
+   */
+  private String detailType;
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/PersonPayService.java b/src/main/java/com/supwisdom/dlpay/framework/service/PersonPayService.java
new file mode 100644
index 0000000..5e7ace6
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/service/PersonPayService.java
@@ -0,0 +1,10 @@
+package com.supwisdom.dlpay.framework.service;
+
+import com.supwisdom.dlpay.consume.PayDtlBuilder;
+import com.supwisdom.dlpay.consume.domain.TPaydtl;
+import org.springframework.stereotype.Service;
+
+@Service
+public interface PersonPayService {
+  TPaydtl process(PayDtlBuilder builder);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java b/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
index 685ad9f..b570823 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
@@ -26,6 +26,12 @@
   public static final String DTL_STATUS_CANCEL = "cancel";
 
   /**
+   * 交易借方
+   */
+  public static final String TRANS_DIRECTION_CREDIT = "credit";
+  public static final String TRANS_DIRECTION_DEBIT = "debit";
+
+  /**
    * 科目定义 subjno
    * 2004 - 商户科目
    * 220201 - 个人存款
