killbill-aplcache

API change for PaymentStatus -> TransactionStatus API change

6/20/2014 10:32:38 PM

Changes

Details

diff --git a/api/src/main/java/org/killbill/billing/events/PaymentInfoInternalEvent.java b/api/src/main/java/org/killbill/billing/events/PaymentInfoInternalEvent.java
index ac59f9d..a1db7cc 100644
--- a/api/src/main/java/org/killbill/billing/events/PaymentInfoInternalEvent.java
+++ b/api/src/main/java/org/killbill/billing/events/PaymentInfoInternalEvent.java
@@ -20,8 +20,7 @@ import java.math.BigDecimal;
 import java.util.UUID;
 
 import org.joda.time.DateTime;
-
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 
 public interface PaymentInfoInternalEvent extends BusInternalEvent {
 
@@ -37,5 +36,5 @@ public interface PaymentInfoInternalEvent extends BusInternalEvent {
 
     public Integer getPaymentNumber();
 
-    public PaymentStatus getStatus();
+    public TransactionStatus getStatus();
 }
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/util/PaymentChecker.java b/beatrix/src/test/java/org/killbill/billing/beatrix/util/PaymentChecker.java
index 3bcd448..fb7209b 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/util/PaymentChecker.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/util/PaymentChecker.java
@@ -30,6 +30,7 @@ import org.killbill.billing.payment.api.DirectPaymentTransaction;
 import org.killbill.billing.payment.api.PaymentApiException;
 import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.slf4j.Logger;
@@ -59,7 +60,7 @@ public class PaymentChecker {
         Assert.assertEquals(payments.size(), paymentOrderingNumber);
         final DirectPayment payment = payments.get(paymentOrderingNumber - 1);
         final DirectPaymentTransaction transaction = getPurchaseTransaction(payment);
-        if (transaction.getPaymentStatus() == PaymentStatus.UNKNOWN) {
+        if (transaction.getTransactionStatus() == TransactionStatus.UNKNOWN) {
             checkPaymentNoAuditForRuntimeException(accountId, payment, expected);
         } else {
             checkPayment(accountId, payment, context, expected);
@@ -80,7 +81,7 @@ public class PaymentChecker {
         Assert.assertEquals(payment.getAccountId(), accountId);
         final DirectPaymentTransaction transaction = getPurchaseTransaction(payment);
         Assert.assertTrue(transaction.getAmount().compareTo(expected.getAmount()) == 0);
-        Assert.assertEquals(transaction.getPaymentStatus(), expected.getStatus());
+        Assert.assertEquals(transaction.getTransactionStatus(), expected.getStatus());
         Assert.assertEquals(payment.getExternalKey(), expected.getInvoiceId().toString());
         Assert.assertEquals(payment.getCurrency(), expected.getCurrency());
         auditChecker.checkPaymentCreated(payment, context);
@@ -90,7 +91,7 @@ public class PaymentChecker {
         Assert.assertEquals(payment.getAccountId(), accountId);
         final DirectPaymentTransaction transaction = getPurchaseTransaction(payment);
         Assert.assertTrue(transaction.getAmount().compareTo(expected.getAmount()) == 0);
-        Assert.assertEquals(transaction.getPaymentStatus(), expected.getStatus());
+        Assert.assertEquals(transaction.getTransactionStatus(), expected.getStatus());
         Assert.assertEquals(payment.getExternalKey(), expected.getInvoiceId());
         Assert.assertEquals(payment.getCurrency(), expected.getCurrency());
     }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java
index 40542a7..7204ef3 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java
@@ -88,7 +88,7 @@ public class DirectTransactionJson extends JsonBase {
              dpt.getAmount(),
              dpt.getCurrency() != null ? dpt.getCurrency().toString() : null,
              dpt.getEffectiveDate(),
-             dpt.getPaymentStatus() != null ? dpt.getPaymentStatus().toString() : null,
+             dpt.getTransactionStatus() != null ? dpt.getTransactionStatus().toString() : null,
              dpt.getGatewayErrorCode(),
              dpt.getGatewayErrorMsg(),
              dpt.getPaymentInfoPlugin() == null ? null : dpt.getPaymentInfoPlugin().getFirstPaymentReferenceId(),
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPayment.java b/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPayment.java
index df79cc0..73a0d4e 100644
--- a/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPayment.java
+++ b/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPayment.java
@@ -64,7 +64,7 @@ public class DefaultDirectPayment extends EntityBase implements DirectPayment {
         this.isVoided = Iterables.filter(transactions, new Predicate<DirectPaymentTransaction>() {
             @Override
             public boolean apply(final DirectPaymentTransaction input) {
-                return input.getTransactionType() == TransactionType.VOID && PaymentStatus.SUCCESS.equals(input.getPaymentStatus());
+                return input.getTransactionType() == TransactionType.VOID && TransactionStatus.SUCCESS.equals(input.getTransactionStatus());
             }
         }).iterator().hasNext();
         this.currency = (transactions != null && !transactions.isEmpty()) ? transactions.get(0).getCurrency() : null;
@@ -75,7 +75,7 @@ public class DefaultDirectPayment extends EntityBase implements DirectPayment {
         final Iterable<DirectPaymentTransaction> filtered = Iterables.filter(transactions, new Predicate<DirectPaymentTransaction>() {
             @Override
             public boolean apply(final DirectPaymentTransaction input) {
-                return input.getTransactionType() == transactiontype && PaymentStatus.SUCCESS.equals(input.getPaymentStatus());
+                return input.getTransactionType() == transactiontype && TransactionStatus.SUCCESS.equals(input.getTransactionStatus());
             }
         });
         if (TransactionType.AUTHORIZE.equals(transactiontype) && filtered.iterator().hasNext()) {
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPaymentTransaction.java b/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPaymentTransaction.java
index ec90441..151fc0e 100644
--- a/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPaymentTransaction.java
+++ b/payment/src/main/java/org/killbill/billing/payment/api/DefaultDirectPaymentTransaction.java
@@ -30,7 +30,7 @@ public class DefaultDirectPaymentTransaction extends EntityBase implements Direc
     private final String externalKey;
     private final TransactionType transactionType;
     private final DateTime effectiveDate;
-    private final PaymentStatus status;
+    private final TransactionStatus status;
     private final BigDecimal amount;
     private final Currency currency;
     private final BigDecimal processedAmount;
@@ -40,7 +40,7 @@ public class DefaultDirectPaymentTransaction extends EntityBase implements Direc
     private final PaymentTransactionInfoPlugin infoPlugin;
 
     public DefaultDirectPaymentTransaction(final UUID id, final String externalKey, final DateTime createdDate, final DateTime updatedDate, final UUID directPaymentId, final TransactionType transactionType,
-                                           final DateTime effectiveDate, final PaymentStatus status, final BigDecimal amount, final Currency currency, final BigDecimal processedAmount, final Currency processedCurrency,
+                                           final DateTime effectiveDate, final TransactionStatus status, final BigDecimal amount, final Currency currency, final BigDecimal processedAmount, final Currency processedCurrency,
                                            final String gatewayErrorCode, final String gatewayErrorMsg, final PaymentTransactionInfoPlugin infoPlugin) {
         super(id, createdDate, updatedDate);
         this.externalKey = externalKey;
@@ -108,7 +108,7 @@ public class DefaultDirectPaymentTransaction extends EntityBase implements Direc
     }
 
     @Override
-    public PaymentStatus getPaymentStatus() {
+    public TransactionStatus getTransactionStatus() {
         return status;
     }
 
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentInfoEvent.java b/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentInfoEvent.java
index 774e02e..726b54a 100644
--- a/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentInfoEvent.java
+++ b/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentInfoEvent.java
@@ -34,7 +34,7 @@ public class DefaultPaymentInfoEvent extends BusEventBase implements PaymentInfo
     private final UUID paymentId;
     private final BigDecimal amount;
     private final Integer paymentNumber;
-    private final PaymentStatus status;
+    private final TransactionStatus status;
     private final DateTime effectiveDate;
 
     @JsonCreator
@@ -43,7 +43,7 @@ public class DefaultPaymentInfoEvent extends BusEventBase implements PaymentInfo
                                    @JsonProperty("paymentId") final UUID paymentId,
                                    @JsonProperty("amount") final BigDecimal amount,
                                    @JsonProperty("paymentNumber") final Integer paymentNumber,
-                                   @JsonProperty("status") final PaymentStatus status,
+                                   @JsonProperty("status") final TransactionStatus status,
                                    @JsonProperty("extFirstPaymentRefId") final String extFirstPaymentRefId /* TODO for backward compatibility only */,
                                    @JsonProperty("extSecondPaymentRefId") final String extSecondPaymentRefId /* TODO for backward compatibility only */,
                                    @JsonProperty("effectiveDate") final DateTime effectiveDate,
@@ -62,7 +62,7 @@ public class DefaultPaymentInfoEvent extends BusEventBase implements PaymentInfo
 
     public DefaultPaymentInfoEvent(final UUID accountId, final UUID invoiceId,
                                    final UUID paymentId, final BigDecimal amount, final Integer paymentNumber,
-                                   final PaymentStatus status,
+                                   final TransactionStatus status,
                                    final DateTime effectiveDate,
                                    final Long searchKey1,
                                    final Long searchKey2,
@@ -108,7 +108,7 @@ public class DefaultPaymentInfoEvent extends BusEventBase implements PaymentInfo
     }
 
     @Override
-    public PaymentStatus getStatus() {
+    public TransactionStatus getStatus() {
         return status;
     }
 
diff --git a/payment/src/main/java/org/killbill/billing/payment/control/InvoicePaymentControlPluginApi.java b/payment/src/main/java/org/killbill/billing/payment/control/InvoicePaymentControlPluginApi.java
index 3679b03..e0dd294 100644
--- a/payment/src/main/java/org/killbill/billing/payment/control/InvoicePaymentControlPluginApi.java
+++ b/payment/src/main/java/org/killbill/billing/payment/control/InvoicePaymentControlPluginApi.java
@@ -35,14 +35,14 @@ import org.killbill.billing.invoice.api.Invoice;
 import org.killbill.billing.invoice.api.InvoiceApiException;
 import org.killbill.billing.invoice.api.InvoiceInternalApi;
 import org.killbill.billing.invoice.api.InvoiceItem;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.control.dao.InvoicePaymentControlDao;
 import org.killbill.billing.payment.control.dao.PluginAutoPayOffModelDao;
+import org.killbill.billing.payment.dao.PaymentDao;
 import org.killbill.billing.payment.dao.PaymentModelDao;
 import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
-import org.killbill.billing.payment.dao.PaymentDao;
 import org.killbill.billing.payment.glue.PaymentModule;
 import org.killbill.billing.payment.retry.BaseRetryService.RetryServiceScheduler;
 import org.killbill.billing.payment.retry.DefaultFailureCallResult;
@@ -268,12 +268,12 @@ public final class InvoicePaymentControlPluginApi implements PaymentControlPlugi
             return null;
         }
         final PaymentTransactionModelDao lastTransaction = purchasedTransactions.get(purchasedTransactions.size() - 1);
-        switch (lastTransaction.getPaymentStatus()) {
-            case PAYMENT_FAILURE_ABORTED:
+        switch (lastTransaction.getTransactionStatus()) {
+            case PAYMENT_FAILURE:
                 return getNextRetryDateForPaymentFailure(purchasedTransactions);
 
             case UNKNOWN:
-            case PLUGIN_FAILURE_ABORTED:
+            case PLUGIN_FAILURE:
                 return getNextRetryDateForPluginFailure(purchasedTransactions);
 
             default:
@@ -285,7 +285,7 @@ public final class InvoicePaymentControlPluginApi implements PaymentControlPlugi
 
         DateTime result = null;
         final List<Integer> retryDays = paymentConfig.getPaymentRetryDays();
-        final int attemptsInState = getNumberAttemptsInState(purchasedTransactions, PaymentStatus.PAYMENT_FAILURE_ABORTED);
+        final int attemptsInState = getNumberAttemptsInState(purchasedTransactions, TransactionStatus.PAYMENT_FAILURE);
         final int retryCount = (attemptsInState - 1) >= 0 ? (attemptsInState - 1) : 0;
         if (retryCount < retryDays.size()) {
             int retryInDays;
@@ -303,7 +303,7 @@ public final class InvoicePaymentControlPluginApi implements PaymentControlPlugi
     private DateTime getNextRetryDateForPluginFailure(final List<PaymentTransactionModelDao> purchasedTransactions) {
 
         DateTime result = null;
-        final int attemptsInState = getNumberAttemptsInState(purchasedTransactions, PaymentStatus.PLUGIN_FAILURE_ABORTED);
+        final int attemptsInState = getNumberAttemptsInState(purchasedTransactions, TransactionStatus.PLUGIN_FAILURE);
         final int retryAttempt = (attemptsInState - 1) >= 0 ? (attemptsInState - 1) : 0;
 
         if (retryAttempt < paymentConfig.getPluginFailureRetryMaxAttempts()) {
@@ -317,15 +317,15 @@ public final class InvoicePaymentControlPluginApi implements PaymentControlPlugi
         return result;
     }
 
-    private int getNumberAttemptsInState(final Collection<PaymentTransactionModelDao> allTransactions, final PaymentStatus... statuses) {
+    private int getNumberAttemptsInState(final Collection<PaymentTransactionModelDao> allTransactions, final TransactionStatus... statuses) {
         if (allTransactions == null || allTransactions.size() == 0) {
             return 0;
         }
         return Collections2.filter(allTransactions, new Predicate<PaymentTransactionModelDao>() {
             @Override
             public boolean apply(final PaymentTransactionModelDao input) {
-                for (final PaymentStatus cur : statuses) {
-                    if (input.getPaymentStatus() == cur) {
+                for (final TransactionStatus cur : statuses) {
+                    if (input.getTransactionStatus() == cur) {
                         return true;
                     }
                 }
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java b/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
index dddbe88..0de42d7 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
@@ -47,8 +47,8 @@ import org.killbill.billing.payment.api.DefaultPaymentPluginErrorEvent;
 import org.killbill.billing.payment.api.DirectPayment;
 import org.killbill.billing.payment.api.DirectPaymentTransaction;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.core.sm.DirectPaymentAutomatonRunner;
 import org.killbill.billing.payment.dao.PaymentModelDao;
@@ -239,14 +239,14 @@ public class DirectPaymentProcessor extends ProcessorBase {
     public void notifyPendingPaymentOfStateChanged(final Account account, UUID transactionId, final boolean isSuccess, final CallContext callContext, final InternalCallContext internalCallContext) throws PaymentApiException {
 
         final PaymentTransactionModelDao transactionModelDao = paymentDao.getDirectPaymentTransaction(transactionId, internalCallContext);
-        if (transactionModelDao.getPaymentStatus() != PaymentStatus.PENDING) {
+        if (transactionModelDao.getTransactionStatus() != TransactionStatus.PENDING) {
             throw new PaymentApiException(ErrorCode.PAYMENT_NO_SUCH_SUCCESS_PAYMENT, transactionModelDao.getPaymentId());
 
         }
         final PaymentModelDao paymentModelDao = paymentDao.getDirectPayment(transactionModelDao.getPaymentId(), internalCallContext);
         Preconditions.checkState(paymentModelDao != null);
 
-        final PaymentStatus newStatus = isSuccess ? PaymentStatus.SUCCESS : PaymentStatus.PAYMENT_FAILURE_ABORTED;
+        final TransactionStatus newStatus = isSuccess ? TransactionStatus.SUCCESS : TransactionStatus.PAYMENT_FAILURE;
         // STEPH This works if the pending transaction we are trying to update matches is the one that gave the state to the payment. Also can we have multiple PENDING for a given payment?
         final State currentPaymentState = directPaymentAutomatonRunner.fetchNextState(paymentModelDao.getStateName(), isSuccess);
         // STEPH : should we insert a new transaction row to keep the PENDING one?
@@ -262,12 +262,12 @@ public class DirectPaymentProcessor extends ProcessorBase {
         final DateTime utcNow = clock.getUTCNow();
         final PaymentTransactionModelDao chargebackTransaction = new PaymentTransactionModelDao(utcNow, utcNow, chargebackTransactionExternalKey, transactionModelDao.getId(),
 
-                                                                                                            TransactionType.CHARGEBACK, utcNow, PaymentStatus.SUCCESS, amount, currency, null, null);
+                                                                                                            TransactionType.CHARGEBACK, utcNow, TransactionStatus.SUCCESS, amount, currency, null, null);
         final State currentPaymentState = directPaymentAutomatonRunner.fetchNextState("CHARGEBACK_INIT", true);
 
         // TODO STEPH we could create a DAO operation to do both steps at once
         paymentDao.updateDirectPaymentWithNewTransaction(transactionModelDao.getId(), chargebackTransaction, internalCallContext);
-        paymentDao.updateDirectPaymentAndTransactionOnCompletion(transactionModelDao.getId(), currentPaymentState.getName(), chargebackTransaction.getId(), PaymentStatus.SUCCESS,
+        paymentDao.updateDirectPaymentAndTransactionOnCompletion(transactionModelDao.getId(), currentPaymentState.getName(), chargebackTransaction.getId(), TransactionStatus.SUCCESS,
                                                                  chargebackTransaction.getAmount(), chargebackTransaction.getCurrency(),
                                                                  chargebackTransaction.getGatewayErrorCode(), chargebackTransaction.getGatewayErrorMsg(), internalCallContext);
 
@@ -450,7 +450,7 @@ public class DirectPaymentProcessor extends ProcessorBase {
                                                           }).orNull() : null;
 
                 return new DefaultDirectPaymentTransaction(input.getId(), input.getTransactionExternalKey(), input.getCreatedDate(), input.getUpdatedDate(), input.getPaymentId(),
-                                                           input.getTransactionType(), input.getEffectiveDate(), input.getPaymentStatus(), input.getAmount(), input.getCurrency(),
+                                                           input.getTransactionType(), input.getEffectiveDate(), input.getTransactionStatus(), input.getAmount(), input.getCurrency(),
                                                            input.getProcessedAmount(), input.getProcessedCurrency(),
                                                            input.getGatewayErrorCode(), input.getGatewayErrorMsg(), info);
             }
@@ -476,7 +476,7 @@ public class DirectPaymentProcessor extends ProcessorBase {
                                                                                                               }
                                                                                                              ).get();
 
-        switch (directPaymentTransaction.getPaymentStatus()) {
+        switch (directPaymentTransaction.getTransactionStatus()) {
             case SUCCESS:
             case PENDING:
                 return new DefaultPaymentInfoEvent(account.getId(),
@@ -484,12 +484,12 @@ public class DirectPaymentProcessor extends ProcessorBase {
                                                    directPayment.getId(),
                                                    directPaymentTransaction.getAmount(),
                                                    directPayment.getPaymentNumber(),
-                                                   directPaymentTransaction.getPaymentStatus(),
+                                                   directPaymentTransaction.getTransactionStatus(),
                                                    directPaymentTransaction.getEffectiveDate(),
                                                    context.getAccountRecordId(),
                                                    context.getTenantRecordId(),
                                                    context.getUserToken());
-            case PAYMENT_FAILURE_ABORTED:
+            case PAYMENT_FAILURE:
                 return new DefaultPaymentErrorEvent(account.getId(),
                                                     null,
                                                     directPayment.getId(),
@@ -497,7 +497,7 @@ public class DirectPaymentProcessor extends ProcessorBase {
                                                     context.getAccountRecordId(),
                                                     context.getTenantRecordId(),
                                                     context.getUserToken());
-            case PLUGIN_FAILURE_ABORTED:
+            case PLUGIN_FAILURE:
             default:
                 return new DefaultPaymentPluginErrorEvent(account.getId(),
                                                           null,
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentAutomatonDAOHelper.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentAutomatonDAOHelper.java
index a6e8977..5a3c457 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentAutomatonDAOHelper.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentAutomatonDAOHelper.java
@@ -28,7 +28,7 @@ import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.osgi.api.OSGIServiceRegistration;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.dao.PaymentModelDao;
 import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
 import org.killbill.billing.payment.dao.PaymentDao;
@@ -75,7 +75,7 @@ public class DirectPaymentAutomatonDAOHelper {
         directPaymentStateContext.setDirectPaymentTransactionModelDao(paymentTransactionModelDao);
     }
 
-    public void processPaymentInfoPlugin(final PaymentStatus paymentStatus, @Nullable final PaymentTransactionInfoPlugin paymentInfoPlugin,
+    public void processPaymentInfoPlugin(final TransactionStatus paymentStatus, @Nullable final PaymentTransactionInfoPlugin paymentInfoPlugin,
                                          final String currentPaymentStateName) {
         final BigDecimal processedAmount = paymentInfoPlugin == null ? null : paymentInfoPlugin.getAmount();
         final Currency processedCurrency = paymentInfoPlugin == null ? null : paymentInfoPlugin.getCurrency();
@@ -147,7 +147,7 @@ public class DirectPaymentAutomatonDAOHelper {
                                                     directPaymentId,
                                                     directPaymentStateContext.getTransactionType(),
                                                     effectiveDate,
-                                                    PaymentStatus.UNKNOWN,
+                                                    TransactionStatus.UNKNOWN,
                                                     directPaymentStateContext.getAmount(),
                                                     directPaymentStateContext.getCurrency(),
                                                     gatewayErrorCode,
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentEnteringStateCallback.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentEnteringStateCallback.java
index 1fbc17c..c63e8d8 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentEnteringStateCallback.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentEnteringStateCallback.java
@@ -25,7 +25,7 @@ import org.killbill.automaton.State;
 import org.killbill.automaton.State.EnteringStateCallback;
 import org.killbill.automaton.State.LeavingStateCallback;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.plugin.api.PaymentTransactionInfoPlugin;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,38 +52,38 @@ public abstract class DirectPaymentEnteringStateCallback implements EnteringStat
         Preconditions.checkState(directPaymentStateContext.getDirectPaymentTransactionModelDao() != null && directPaymentStateContext.getDirectPaymentTransactionModelDao().getId() != null);
 
         final PaymentTransactionInfoPlugin paymentInfoPlugin = directPaymentStateContext.getPaymentInfoPlugin();
-        final PaymentStatus paymentStatus = paymentPluginStatusToPaymentStatus(paymentInfoPlugin, operationResult);
+        final TransactionStatus paymentStatus = paymentPluginStatusToPaymentStatus(paymentInfoPlugin, operationResult);
 
         daoHelper.processPaymentInfoPlugin(paymentStatus, paymentInfoPlugin, newState.getName());
     }
 
-    private PaymentStatus paymentPluginStatusToPaymentStatus(@Nullable final PaymentTransactionInfoPlugin paymentInfoPlugin, final OperationResult operationResult) {
+    private TransactionStatus paymentPluginStatusToPaymentStatus(@Nullable final PaymentTransactionInfoPlugin paymentInfoPlugin, final OperationResult operationResult) {
         if (paymentInfoPlugin == null) {
             if (OperationResult.EXCEPTION.equals(operationResult)) {
                 // We got an exception during the plugin call
-                return PaymentStatus.PLUGIN_FAILURE_ABORTED;
+                return TransactionStatus.PLUGIN_FAILURE;
             } else {
                 // The plugin completed the call but returned null?! Bad plugin...
-                return PaymentStatus.UNKNOWN;
+                return TransactionStatus.UNKNOWN;
             }
         }
 
         if (paymentInfoPlugin.getStatus() == null) {
             // The plugin completed the call but returned an incomplete PaymentInfoPlugin?! Bad plugin...
-            return PaymentStatus.UNKNOWN;
+            return TransactionStatus.UNKNOWN;
         }
 
         switch (paymentInfoPlugin.getStatus()) {
             case UNDEFINED:
-                return PaymentStatus.UNKNOWN;
+                return TransactionStatus.UNKNOWN;
             case PROCESSED:
-                return PaymentStatus.SUCCESS;
+                return TransactionStatus.SUCCESS;
             case PENDING:
-                return PaymentStatus.PENDING;
+                return TransactionStatus.PENDING;
             case ERROR:
-                return PaymentStatus.PAYMENT_FAILURE_ABORTED;
+                return TransactionStatus.PAYMENT_FAILURE;
             default:
-                return PaymentStatus.UNKNOWN;
+                return TransactionStatus.UNKNOWN;
         }
     }
 }
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/RetryOperationCallback.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/RetryOperationCallback.java
index 57eaa3d..47c69dd 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/RetryOperationCallback.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/RetryOperationCallback.java
@@ -33,8 +33,8 @@ import org.killbill.billing.osgi.api.OSGIServiceRegistration;
 import org.killbill.billing.payment.api.DirectPayment;
 import org.killbill.billing.payment.api.DirectPaymentTransaction;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.core.DirectPaymentProcessor;
 import org.killbill.billing.payment.core.ProcessorBase.WithAccountLockCallback;
@@ -133,8 +133,7 @@ public abstract class RetryOperationCallback extends PluginOperation implements 
                     ((RetryableDirectPaymentStateContext) directPaymentStateContext).setResult(result);
                     final DirectPaymentTransaction transaction = ((RetryableDirectPaymentStateContext) directPaymentStateContext).getCurrentTransaction();
 
-                    success = transaction.getPaymentStatus() == PaymentStatus.SUCCESS || transaction.getPaymentStatus() == PaymentStatus.PENDING;
-
+                    success = transaction.getTransactionStatus() == TransactionStatus.SUCCESS || transaction.getTransactionStatus() == TransactionStatus.PENDING;
                     if (success) {
                         final PaymentControlContext updatedPaymentControlContext = new DefaultPaymentControlContext(directPaymentStateContext.account,
                                                                                                                     directPaymentStateContext.paymentMethodId,
diff --git a/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java b/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java
index 52acd01..68d5721 100644
--- a/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java
+++ b/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java
@@ -33,7 +33,7 @@ import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.entity.EntityPersistenceException;
 import org.killbill.billing.payment.api.DirectPayment;
 import org.killbill.billing.payment.api.PaymentMethod;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.Pagination;
@@ -211,7 +211,7 @@ public class DefaultPaymentDao implements PaymentDao {
 
     @Override
     public void updateDirectPaymentAndTransactionOnCompletion(final UUID directPaymentId, final String currentPaymentStateName,
-                                                              final UUID directTransactionId, final PaymentStatus paymentStatus,
+                                                              final UUID directTransactionId, final TransactionStatus paymentStatus,
                                                               final BigDecimal processedAmount, final Currency processedCurrency,
                                                               final String gatewayErrorCode, final String gatewayErrorMsg,
                                                               final InternalCallContext context) {
diff --git a/payment/src/main/java/org/killbill/billing/payment/dao/PaymentDao.java b/payment/src/main/java/org/killbill/billing/payment/dao/PaymentDao.java
index ac4e99b..8cbbd2e 100644
--- a/payment/src/main/java/org/killbill/billing/payment/dao/PaymentDao.java
+++ b/payment/src/main/java/org/killbill/billing/payment/dao/PaymentDao.java
@@ -23,7 +23,7 @@ import java.util.UUID;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.catalog.api.Currency;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.util.entity.Pagination;
 
 public interface PaymentDao {
@@ -50,7 +50,7 @@ public interface PaymentDao {
     public PaymentTransactionModelDao updateDirectPaymentWithNewTransaction(UUID directPaymentId, PaymentTransactionModelDao directPaymentTransaction, InternalCallContext context);
 
     public void updateDirectPaymentAndTransactionOnCompletion(UUID directPaymentId, String currentPaymentStateName,
-                                                              UUID directTransactionId, PaymentStatus paymentStatus,
+                                                              UUID directTransactionId, TransactionStatus paymentStatus,
                                                               BigDecimal processedAmount, Currency processedCurrency,
                                                               String gatewayErrorCode, String gatewayErrorMsg,
                                                               InternalCallContext context);
diff --git a/payment/src/main/java/org/killbill/billing/payment/dao/PaymentTransactionModelDao.java b/payment/src/main/java/org/killbill/billing/payment/dao/PaymentTransactionModelDao.java
index 4646577..eb5aae7 100644
--- a/payment/src/main/java/org/killbill/billing/payment/dao/PaymentTransactionModelDao.java
+++ b/payment/src/main/java/org/killbill/billing/payment/dao/PaymentTransactionModelDao.java
@@ -25,7 +25,7 @@ import org.joda.time.DateTime;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.entity.EntityBase;
 import org.killbill.billing.payment.api.DirectPaymentTransaction;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.util.dao.TableName;
 import org.killbill.billing.util.entity.dao.EntityModelDao;
@@ -38,7 +38,7 @@ public class PaymentTransactionModelDao extends EntityBase implements EntityMode
     private String transactionExternalKey;
     private TransactionType transactionType;
     private DateTime effectiveDate;
-    private PaymentStatus paymentStatus;
+    private TransactionStatus transactionStatus;
     private BigDecimal amount;
     private Currency currency;
     private BigDecimal processedAmount;
@@ -51,13 +51,13 @@ public class PaymentTransactionModelDao extends EntityBase implements EntityMode
 
     public PaymentTransactionModelDao(final UUID id, @Nullable final String transactionExternalKey, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
                                       final UUID paymentId, final TransactionType transactionType, final DateTime effectiveDate,
-                                      final PaymentStatus paymentStatus, final BigDecimal amount, final Currency currency, final String gatewayErrorCode, final String gatewayErrorMsg) {
+                                      final TransactionStatus paymentStatus, final BigDecimal amount, final Currency currency, final String gatewayErrorCode, final String gatewayErrorMsg) {
         super(id, createdDate, updatedDate);
         this.transactionExternalKey = Objects.firstNonNull(transactionExternalKey, id.toString());
         this.paymentId = paymentId;
         this.transactionType = transactionType;
         this.effectiveDate = effectiveDate;
-        this.paymentStatus = paymentStatus;
+        this.transactionStatus = paymentStatus;
         this.amount = amount;
         this.currency = currency;
         this.processedAmount = null;
@@ -68,7 +68,7 @@ public class PaymentTransactionModelDao extends EntityBase implements EntityMode
 
     public PaymentTransactionModelDao(@Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
                                       @Nullable final String transactionExternalKey, final UUID paymentId, final TransactionType transactionType, final DateTime effectiveDate,
-                                      final PaymentStatus paymentStatus, final BigDecimal amount, final Currency currency, final String gatewayErrorCode, final String gatewayErrorMsg) {
+                                      final TransactionStatus paymentStatus, final BigDecimal amount, final Currency currency, final String gatewayErrorCode, final String gatewayErrorMsg) {
         this(UUID.randomUUID(), transactionExternalKey, createdDate, updatedDate, paymentId, transactionType, effectiveDate, paymentStatus, amount, currency, gatewayErrorCode, gatewayErrorMsg);
     }
 
@@ -88,8 +88,8 @@ public class PaymentTransactionModelDao extends EntityBase implements EntityMode
         return effectiveDate;
     }
 
-    public PaymentStatus getPaymentStatus() {
-        return paymentStatus;
+    public TransactionStatus getTransactionStatus() {
+        return transactionStatus;
     }
 
     public BigDecimal getAmount() {
@@ -132,8 +132,8 @@ public class PaymentTransactionModelDao extends EntityBase implements EntityMode
         this.effectiveDate = effectiveDate;
     }
 
-    public void setPaymentStatus(final PaymentStatus paymentStatus) {
-        this.paymentStatus = paymentStatus;
+    public void setTransactionStatus(final TransactionStatus transactionStatus) {
+        this.transactionStatus = transactionStatus;
     }
 
     public void setAmount(final BigDecimal amount) {
@@ -195,7 +195,7 @@ public class PaymentTransactionModelDao extends EntityBase implements EntityMode
         if (gatewayErrorMsg != null ? !gatewayErrorMsg.equals(that.gatewayErrorMsg) : that.gatewayErrorMsg != null) {
             return false;
         }
-        if (paymentStatus != that.paymentStatus) {
+        if (transactionStatus != that.transactionStatus) {
             return false;
         }
         if (processedAmount != null ? processedAmount.compareTo(that.processedAmount) != 0 : that.processedAmount != null) {
@@ -217,7 +217,7 @@ public class PaymentTransactionModelDao extends EntityBase implements EntityMode
         result = 31 * result + (transactionExternalKey != null ? transactionExternalKey.hashCode() : 0);
         result = 31 * result + (transactionType != null ? transactionType.hashCode() : 0);
         result = 31 * result + (effectiveDate != null ? effectiveDate.hashCode() : 0);
-        result = 31 * result + (paymentStatus != null ? paymentStatus.hashCode() : 0);
+        result = 31 * result + (transactionStatus != null ? transactionStatus.hashCode() : 0);
         result = 31 * result + (amount != null ? amount.hashCode() : 0);
         result = 31 * result + (currency != null ? currency.hashCode() : 0);
         result = 31 * result + (processedAmount != null ? processedAmount.hashCode() : 0);
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestEventJson.java b/payment/src/test/java/org/killbill/billing/payment/api/TestEventJson.java
index 64703fe..a8b0471 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestEventJson.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestEventJson.java
@@ -43,7 +43,7 @@ public class TestEventJson extends PaymentTestSuiteNoDB {
 
     @Test(groups = "fast")
     public void testPaymentInfoEvent() throws Exception {
-        final PaymentInfoInternalEvent e = new DefaultPaymentInfoEvent(UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID(), new BigDecimal(12.9), new Integer(13), PaymentStatus.SUCCESS,
+        final PaymentInfoInternalEvent e = new DefaultPaymentInfoEvent(UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID(), new BigDecimal(12.9), new Integer(13), TransactionStatus.SUCCESS,
                                                                        new DateTime(), 1L, 2L, UUID.randomUUID());
         final String json = mapper.writeValueAsString(e);
 
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java
index 7c1c2ef..04880e4 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java
@@ -98,7 +98,7 @@ public class TestPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(payment.getTransactions().get(0).getProcessedAmount().compareTo(requestedAmount), 0);
         assertEquals(payment.getTransactions().get(0).getProcessedCurrency(), Currency.AED);
 
-        assertEquals(payment.getTransactions().get(0).getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(payment.getTransactions().get(0).getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(payment.getTransactions().get(0).getTransactionType(), TransactionType.PURCHASE);
         assertNull(payment.getTransactions().get(0).getGatewayErrorMsg());
         assertNull(payment.getTransactions().get(0).getGatewayErrorCode());
@@ -134,7 +134,7 @@ public class TestPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(payment.getTransactions().get(0).getProcessedAmount().compareTo(authAmount), 0);
         assertEquals(payment.getTransactions().get(0).getProcessedCurrency(), Currency.AED);
 
-        assertEquals(payment.getTransactions().get(0).getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(payment.getTransactions().get(0).getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(payment.getTransactions().get(0).getTransactionType(), TransactionType.AUTHORIZE);
         assertNull(payment.getTransactions().get(0).getGatewayErrorMsg());
         assertNull(payment.getTransactions().get(0).getGatewayErrorCode());
@@ -159,7 +159,7 @@ public class TestPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(payment2.getTransactions().get(1).getProcessedAmount().compareTo(captureAmount), 0);
         assertEquals(payment2.getTransactions().get(1).getProcessedCurrency(), Currency.AED);
 
-        assertEquals(payment2.getTransactions().get(1).getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(payment2.getTransactions().get(1).getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(payment2.getTransactions().get(1).getTransactionType(), TransactionType.CAPTURE);
         assertNull(payment2.getTransactions().get(1).getGatewayErrorMsg());
         assertNull(payment2.getTransactions().get(1).getGatewayErrorCode());
@@ -209,7 +209,7 @@ public class TestPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(payment4.getTransactions().get(3).getCurrency(), Currency.USD);
         assertEquals(payment4.getTransactions().get(3).getProcessedAmount().compareTo(payment3.getCapturedAmount()), 0);
         assertEquals(payment4.getTransactions().get(3).getProcessedCurrency(), Currency.USD);
-        assertEquals(payment4.getTransactions().get(3).getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(payment4.getTransactions().get(3).getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(payment4.getTransactions().get(3).getTransactionType(), TransactionType.REFUND);
         assertNull(payment4.getTransactions().get(3).getGatewayErrorMsg());
         assertNull(payment4.getTransactions().get(3).getGatewayErrorCode());
@@ -258,7 +258,7 @@ public class TestPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(payment.getTransactions().get(0).getProcessedAmount().compareTo(requestedAmount), 0);
         assertEquals(payment.getTransactions().get(0).getProcessedCurrency(), Currency.USD);
 
-        assertEquals(payment.getTransactions().get(0).getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(payment.getTransactions().get(0).getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(payment.getTransactions().get(0).getTransactionType(), TransactionType.PURCHASE);
         assertNull(payment.getTransactions().get(0).getGatewayErrorMsg());
         assertNull(payment.getTransactions().get(0).getGatewayErrorCode());
@@ -463,7 +463,7 @@ public class TestPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(payment2.getTransactions().get(1).getProcessedAmount().compareTo(requestedAmount), 0);
         assertEquals(payment2.getTransactions().get(1).getProcessedCurrency(), Currency.AED);
 
-        assertEquals(payment2.getTransactions().get(1).getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(payment2.getTransactions().get(1).getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(payment2.getTransactions().get(1).getTransactionType(), TransactionType.CHARGEBACK);
         assertNull(payment2.getTransactions().get(1).getGatewayErrorMsg());
         assertNull(payment2.getTransactions().get(1).getGatewayErrorCode());
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiNoDB.java b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiNoDB.java
index ef42757..d97bc39 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiNoDB.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiNoDB.java
@@ -144,7 +144,7 @@ public class TestPaymentApiNoDB extends PaymentTestSuiteNoDB {
             assertEquals(paymentInfo.getTransactions().get(0).getCurrency(), Currency.USD);
             assertEquals(paymentInfo.getTransactions().get(0).getDirectPaymentId(), paymentInfo.getId());
             assertEquals(paymentInfo.getTransactions().get(0).getTransactionType(), TransactionType.PURCHASE);
-            assertEquals(paymentInfo.getTransactions().get(0).getPaymentStatus(), PaymentStatus.SUCCESS);
+            assertEquals(paymentInfo.getTransactions().get(0).getTransactionStatus(), TransactionStatus.SUCCESS);
 
         } catch (final PaymentApiException e) {
             if (expectedAmount != null) {
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/MockRetryAuthorizeOperationCallback.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/MockRetryAuthorizeOperationCallback.java
index e009298..bc0c24b 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/MockRetryAuthorizeOperationCallback.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/MockRetryAuthorizeOperationCallback.java
@@ -25,11 +25,11 @@ import org.killbill.billing.payment.api.DefaultDirectPaymentTransaction;
 import org.killbill.billing.payment.api.DirectPayment;
 import org.killbill.billing.payment.api.DirectPaymentTransaction;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.core.DirectPaymentProcessor;
+import org.killbill.billing.payment.dao.PaymentDao;
 import org.killbill.billing.payment.dao.PaymentModelDao;
 import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
-import org.killbill.billing.payment.dao.PaymentDao;
 import org.killbill.billing.payment.dispatcher.PluginDispatcher;
 import org.killbill.billing.retry.plugin.api.PaymentControlPluginApi;
 import org.killbill.clock.Clock;
@@ -50,7 +50,7 @@ public class MockRetryAuthorizeOperationCallback extends RetryAuthorizeOperation
     }
 
     @Override
-    protected DirectPayment doPluginOperation() throws PaymentApiException {
+    protected DirectPayment doCallSpecificOperationCallback() throws PaymentApiException {
         if (exception != null) {
             if (exception instanceof PaymentApiException) {
                 throw (PaymentApiException) exception;
@@ -59,22 +59,22 @@ public class MockRetryAuthorizeOperationCallback extends RetryAuthorizeOperation
             }
         }
         final PaymentModelDao payment = new PaymentModelDao(clock.getUTCNow(),
-                                                                        clock.getUTCNow(),
-                                                                        directPaymentStateContext.account.getId(),
-                                                                        directPaymentStateContext.paymentMethodId,
-                                                                        directPaymentStateContext.directPaymentExternalKey);
+                                                            clock.getUTCNow(),
+                                                            directPaymentStateContext.account.getId(),
+                                                            directPaymentStateContext.paymentMethodId,
+                                                            directPaymentStateContext.directPaymentExternalKey);
 
         final PaymentTransactionModelDao transaction = new PaymentTransactionModelDao(clock.getUTCNow(),
-                                                                                                  clock.getUTCNow(),
-                                                                                                  directPaymentStateContext.directPaymentTransactionExternalKey,
-                                                                                                  directPaymentStateContext.directPaymentId,
-                                                                                                  directPaymentStateContext.transactionType,
-                                                                                                  clock.getUTCNow(),
-                                                                                                  PaymentStatus.SUCCESS,
-                                                                                                  directPaymentStateContext.amount,
-                                                                                                  directPaymentStateContext.currency,
-                                                                                                  "",
-                                                                                                  "");
+                                                                                      clock.getUTCNow(),
+                                                                                      directPaymentStateContext.directPaymentTransactionExternalKey,
+                                                                                      directPaymentStateContext.directPaymentId,
+                                                                                      directPaymentStateContext.transactionType,
+                                                                                      clock.getUTCNow(),
+                                                                                      TransactionStatus.SUCCESS,
+                                                                                      directPaymentStateContext.amount,
+                                                                                      directPaymentStateContext.currency,
+                                                                                      "",
+                                                                                      "");
         final PaymentModelDao paymentModelDao = paymentDao.insertDirectPaymentWithFirstTransaction(payment, transaction, directPaymentStateContext.internalCallContext);
         final DirectPaymentTransaction convertedTransaction = new DefaultDirectPaymentTransaction(transaction.getId(),
                                                                                                   transaction.getTransactionExternalKey(),
@@ -83,7 +83,7 @@ public class MockRetryAuthorizeOperationCallback extends RetryAuthorizeOperation
                                                                                                   transaction.getPaymentId(),
                                                                                                   transaction.getTransactionType(),
                                                                                                   transaction.getEffectiveDate(),
-                                                                                                  transaction.getPaymentStatus(),
+                                                                                                  transaction.getTransactionStatus(),
                                                                                                   transaction.getAmount(),
                                                                                                   transaction.getCurrency(),
                                                                                                   transaction.getProcessedAmount(),
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentAutomatonDAOHelper.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentAutomatonDAOHelper.java
index 2562aed..447639f 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentAutomatonDAOHelper.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentAutomatonDAOHelper.java
@@ -27,8 +27,8 @@ import org.killbill.billing.account.api.Account;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.dao.PaymentModelDao;
 import org.killbill.billing.payment.plugin.api.PaymentTransactionInfoPlugin;
@@ -80,14 +80,14 @@ public class TestDirectPaymentAutomatonDAOHelper extends PaymentTestSuiteWithEmb
         Mockito.when(paymentInfoPlugin.getStatus()).thenReturn(PaymentPluginStatus.PROCESSED);
         Mockito.when(paymentInfoPlugin.getGatewayErrorCode()).thenReturn(UUID.randomUUID().toString().substring(0, 5));
         Mockito.when(paymentInfoPlugin.getGatewayError()).thenReturn(UUID.randomUUID().toString());
-        daoHelper.processPaymentInfoPlugin(PaymentStatus.SUCCESS, paymentInfoPlugin, "SOME_STATE");
+        daoHelper.processPaymentInfoPlugin(TransactionStatus.SUCCESS, paymentInfoPlugin, "SOME_STATE");
 
         final PaymentModelDao directPayment2 = daoHelper.getDirectPayment();
         Assert.assertEquals(directPayment2.getExternalKey(), directPaymentExternalKey);
         Assert.assertEquals(directPayment2.getStateName(), "SOME_STATE");
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getPaymentId(), directPayment2.getId());
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getTransactionExternalKey(), directPaymentTransactionExternalKey);
-        Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getPaymentStatus(), PaymentStatus.SUCCESS);
+        Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getTransactionStatus(), TransactionStatus.SUCCESS);
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getAmount().compareTo(amount), 0);
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getCurrency(), currency);
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getProcessedAmount().compareTo(paymentInfoPlugin.getAmount()), 0);
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentEnteringStateCallback.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentEnteringStateCallback.java
index c13bc17..c665585 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentEnteringStateCallback.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentEnteringStateCallback.java
@@ -28,12 +28,12 @@ import org.killbill.billing.account.api.Account;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
-import org.killbill.billing.payment.plugin.api.PaymentTransactionInfoPlugin;
 import org.killbill.billing.payment.plugin.api.PaymentPluginStatus;
+import org.killbill.billing.payment.plugin.api.PaymentTransactionInfoPlugin;
 import org.mockito.Mockito;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
@@ -78,7 +78,7 @@ public class TestDirectPaymentEnteringStateCallback extends PaymentTestSuiteWith
     public void testEnterStateAndProcessPaymentTransactionInfoPlugin() throws Exception {
         // Create the payment and first transaction (would be done by DirectPaymentLeavingStateCallback)
         daoHelper.createNewDirectPaymentTransaction();
-        Assert.assertEquals(paymentDao.getDirectPaymentTransaction(directPaymentStateContext.getDirectPaymentTransactionModelDao().getId(), internalCallContext).getPaymentStatus(), PaymentStatus.UNKNOWN);
+        Assert.assertEquals(paymentDao.getDirectPaymentTransaction(directPaymentStateContext.getDirectPaymentTransactionModelDao().getId(), internalCallContext).getTransactionStatus(), TransactionStatus.UNKNOWN);
 
         // Mock the plugin result
         final PaymentTransactionInfoPlugin paymentInfoPlugin = Mockito.mock(PaymentTransactionInfoPlugin.class);
@@ -98,7 +98,7 @@ public class TestDirectPaymentEnteringStateCallback extends PaymentTestSuiteWith
         Assert.assertEquals(directPaymentTransaction.getCurrency(), directPaymentStateContext.getCurrency());
         Assert.assertEquals(directPaymentTransaction.getProcessedAmount().compareTo(paymentInfoPlugin.getAmount()), 0);
         Assert.assertEquals(directPaymentTransaction.getProcessedCurrency(), paymentInfoPlugin.getCurrency());
-        Assert.assertEquals(directPaymentTransaction.getPaymentStatus(), PaymentStatus.PENDING);
+        Assert.assertEquals(directPaymentTransaction.getTransactionStatus(), TransactionStatus.PENDING);
         Assert.assertEquals(directPaymentTransaction.getGatewayErrorCode(), paymentInfoPlugin.getGatewayErrorCode());
         Assert.assertEquals(directPaymentTransaction.getGatewayErrorMsg(), paymentInfoPlugin.getGatewayError());
     }
@@ -112,7 +112,7 @@ public class TestDirectPaymentEnteringStateCallback extends PaymentTestSuiteWith
 
         callback.enteringState(state, operationCallback, operationResult, leavingStateCallback);
 
-        Assert.assertEquals(paymentDao.getDirectPaymentTransaction(directPaymentStateContext.getDirectPaymentTransactionModelDao().getId(), internalCallContext).getPaymentStatus(), PaymentStatus.PLUGIN_FAILURE_ABORTED);
+        Assert.assertEquals(paymentDao.getDirectPaymentTransaction(directPaymentStateContext.getDirectPaymentTransactionModelDao().getId(), internalCallContext).getTransactionStatus(), TransactionStatus.PLUGIN_FAILURE);
     }
 
     @Test(groups = "slow", expectedExceptions = IllegalStateException.class)
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentLeavingStateCallback.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentLeavingStateCallback.java
index f97f903..2e93c53 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentLeavingStateCallback.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentLeavingStateCallback.java
@@ -27,8 +27,8 @@ import org.killbill.billing.account.api.Account;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.dao.PaymentModelDao;
 import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
@@ -83,7 +83,7 @@ public class TestDirectPaymentLeavingStateCallback extends PaymentTestSuiteWithE
     private void verifyDirectPaymentTransaction() {
         Assert.assertNotNull(directPaymentStateContext.getDirectPaymentTransactionModelDao().getPaymentId());
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getTransactionExternalKey(), directPaymentStateContext.getDirectPaymentTransactionExternalKey());
-        Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getPaymentStatus(), PaymentStatus.UNKNOWN);
+        Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getTransactionStatus(), TransactionStatus.UNKNOWN);
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getAmount().compareTo(directPaymentStateContext.getAmount()), 0);
         Assert.assertEquals(directPaymentStateContext.getDirectPaymentTransactionModelDao().getCurrency(), directPaymentStateContext.getCurrency());
         Assert.assertNull(directPaymentStateContext.getDirectPaymentTransactionModelDao().getProcessedAmount());
@@ -111,24 +111,24 @@ public class TestDirectPaymentLeavingStateCallback extends PaymentTestSuiteWithE
         if (directPaymentId != null) {
             // Create the first payment manually
             final PaymentModelDao newPaymentModelDao = new PaymentModelDao(directPaymentId,
-                                                                                       clock.getUTCNow(),
-                                                                                       clock.getUTCNow(),
-                                                                                       directPaymentStateContext.getAccount().getId(),
-                                                                                       directPaymentStateContext.getPaymentMethodId(),
-                                                                                       1,
-                                                                                       directPaymentStateContext.getDirectPaymentExternalKey(),
-                                                                                       null, null);
+                                                                           clock.getUTCNow(),
+                                                                           clock.getUTCNow(),
+                                                                           directPaymentStateContext.getAccount().getId(),
+                                                                           directPaymentStateContext.getPaymentMethodId(),
+                                                                           1,
+                                                                           directPaymentStateContext.getDirectPaymentExternalKey()
+            );
             final PaymentTransactionModelDao newPaymentTransactionModelDao = new PaymentTransactionModelDao(clock.getUTCNow(),
-                                                                                                                        clock.getUTCNow(),
-                                                                                                                        directPaymentStateContext.getDirectPaymentTransactionExternalKey(),
-                                                                                                                        directPaymentId,
-                                                                                                                        directPaymentStateContext.getTransactionType(),
-                                                                                                                        clock.getUTCNow(),
-                                                                                                                        PaymentStatus.UNKNOWN,
-                                                                                                                        directPaymentStateContext.getAmount(),
-                                                                                                                        directPaymentStateContext.getCurrency(),
-                                                                                                                        null,
-                                                                                                                        null);
+                                                                                                            clock.getUTCNow(),
+                                                                                                            directPaymentStateContext.getDirectPaymentTransactionExternalKey(),
+                                                                                                            directPaymentId,
+                                                                                                            directPaymentStateContext.getTransactionType(),
+                                                                                                            clock.getUTCNow(),
+                                                                                                            TransactionStatus.UNKNOWN,
+                                                                                                            directPaymentStateContext.getAmount(),
+                                                                                                            directPaymentStateContext.getCurrency(),
+                                                                                                            null,
+                                                                                                            null);
             paymentDao.insertDirectPaymentWithFirstTransaction(newPaymentModelDao, newPaymentTransactionModelDao, internalCallContext);
         }
 
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryableDirectPayment.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryableDirectPayment.java
index fdec68a..188f899 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryableDirectPayment.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryableDirectPayment.java
@@ -34,8 +34,8 @@ import org.killbill.billing.osgi.api.OSGIServiceDescriptor;
 import org.killbill.billing.osgi.api.OSGIServiceRegistration;
 import org.killbill.billing.payment.PaymentTestSuiteNoDB;
 import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.core.DirectPaymentProcessor;
 import org.killbill.billing.payment.core.PluginControlledPaymentProcessor;
@@ -588,8 +588,8 @@ public class TestRetryableDirectPayment extends PaymentTestSuiteNoDB {
         final UUID directPaymentId = UUID.randomUUID();
         paymentDao.insertPaymentAttemptWithProperties(new PaymentAttemptModelDao(utcNow, utcNow, directPaymentExternalKey, directTransactionId, directPaymentTransactionExternalKey, state.getName(), TransactionType.AUTHORIZE.name(), null),
                                                       ImmutableList.<PluginPropertyModelDao>of(), internalCallContext);
-        paymentDao.insertDirectPaymentWithFirstTransaction(new PaymentModelDao(directPaymentId, utcNow, utcNow, account.getId(), paymentMethodId, -1, directPaymentExternalKey, null, null),
-                                                           new PaymentTransactionModelDao(directTransactionId, directPaymentTransactionExternalKey, utcNow, utcNow, directPaymentId, TransactionType.AUTHORIZE, utcNow, PaymentStatus.PAYMENT_FAILURE, amount, currency, "bla", "foo"),
+        paymentDao.insertDirectPaymentWithFirstTransaction(new PaymentModelDao(directPaymentId, utcNow, utcNow, account.getId(), paymentMethodId, -1, directPaymentExternalKey),
+                                                           new PaymentTransactionModelDao(directTransactionId, directPaymentTransactionExternalKey, utcNow, utcNow, directPaymentId, TransactionType.AUTHORIZE, utcNow, TransactionStatus.PAYMENT_FAILURE, amount, currency, "bla", "foo"),
                                                            internalCallContext);
 
         processor.retryPaymentTransaction(directPaymentTransactionExternalKey, MockPaymentControlProviderPlugin.PLUGIN_NAME, internalCallContext);
@@ -619,9 +619,9 @@ public class TestRetryableDirectPayment extends PaymentTestSuiteNoDB {
         final UUID directPaymentId = UUID.randomUUID();
         paymentDao.insertPaymentAttemptWithProperties(new PaymentAttemptModelDao(utcNow, utcNow, directPaymentExternalKey, directTransactionId, directPaymentTransactionExternalKey, state.getName(), TransactionType.AUTHORIZE.name(), null),
                                                       ImmutableList.<PluginPropertyModelDao>of(), internalCallContext);
-        paymentDao.insertDirectPaymentWithFirstTransaction(new PaymentModelDao(directPaymentId, utcNow, utcNow, account.getId(), paymentMethodId, -1, directPaymentExternalKey, null, null),
+        paymentDao.insertDirectPaymentWithFirstTransaction(new PaymentModelDao(directPaymentId, utcNow, utcNow, account.getId(), paymentMethodId, -1, directPaymentExternalKey),
                                                            new PaymentTransactionModelDao(directTransactionId, directPaymentTransactionExternalKey, utcNow, utcNow, directPaymentId, TransactionType.AUTHORIZE, utcNow,
-                                                                                                PaymentStatus.PAYMENT_FAILURE, amount, currency, "bla", "foo"),
+                                                                                          TransactionStatus.PAYMENT_FAILURE, amount, currency, "bla", "foo"),
                                                            internalCallContext
                                                           );
 
@@ -657,9 +657,9 @@ public class TestRetryableDirectPayment extends PaymentTestSuiteNoDB {
             final UUID directPaymentId = UUID.randomUUID();
             paymentDao.insertPaymentAttemptWithProperties(new PaymentAttemptModelDao(utcNow, utcNow, directPaymentExternalKey, directTransactionId, directPaymentTransactionExternalKey, state.getName(), TransactionType.AUTHORIZE.name(), null),
                                                           ImmutableList.<PluginPropertyModelDao>of(), internalCallContext);
-            paymentDao.insertDirectPaymentWithFirstTransaction(new PaymentModelDao(directPaymentId, utcNow, utcNow, account.getId(), paymentMethodId, -1, directPaymentExternalKey, null, null),
+            paymentDao.insertDirectPaymentWithFirstTransaction(new PaymentModelDao(directPaymentId, utcNow, utcNow, account.getId(), paymentMethodId, -1, directPaymentExternalKey),
                                                                new PaymentTransactionModelDao(directTransactionId, directPaymentTransactionExternalKey, utcNow, utcNow, directPaymentId, TransactionType.AUTHORIZE, utcNow,
-                                                                                                    PaymentStatus.PAYMENT_FAILURE, amount, currency, "bla", "foo"),
+                                                                                              TransactionStatus.PAYMENT_FAILURE, amount, currency, "bla", "foo"),
                                                                internalCallContext
                                                               );
 
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/TestDirectPaymentProcessor.java b/payment/src/test/java/org/killbill/billing/payment/core/TestDirectPaymentProcessor.java
index 81ebe98..7e2de1d 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/TestDirectPaymentProcessor.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/TestDirectPaymentProcessor.java
@@ -36,8 +36,8 @@ import org.killbill.billing.events.PaymentPluginErrorInternalEvent;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
 import org.killbill.billing.payment.api.DirectPayment;
 import org.killbill.billing.payment.api.DirectPaymentTransaction;
-import org.killbill.billing.payment.api.PaymentStatus;
 import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
@@ -244,7 +244,7 @@ public class TestDirectPaymentProcessor extends PaymentTestSuiteWithEmbeddedDB {
             } else {
                 Assert.assertEquals(event.getAmount().compareTo(amount), 0);
             }
-            Assert.assertEquals(event.getStatus(), PaymentStatus.SUCCESS);
+            Assert.assertEquals(event.getStatus(), TransactionStatus.SUCCESS);
         }
     }
 }
diff --git a/payment/src/test/java/org/killbill/billing/payment/dao/MockPaymentDao.java b/payment/src/test/java/org/killbill/billing/payment/dao/MockPaymentDao.java
index 7ed075f..d6005e5 100644
--- a/payment/src/test/java/org/killbill/billing/payment/dao/MockPaymentDao.java
+++ b/payment/src/test/java/org/killbill/billing/payment/dao/MockPaymentDao.java
@@ -28,7 +28,7 @@ import java.util.UUID;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.catalog.api.Currency;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.util.entity.Pagination;
 
 import com.google.common.base.Predicate;
@@ -143,7 +143,7 @@ public class MockPaymentDao implements PaymentDao {
     }
 
     @Override
-    public void updateDirectPaymentAndTransactionOnCompletion(final UUID directPaymentId, final String currentPaymentStateName, final UUID directTransactionId, final PaymentStatus paymentStatus, final BigDecimal processedAmount, final Currency processedCurrency, final String gatewayErrorCode, final String gatewayErrorMsg, final InternalCallContext context) {
+    public void updateDirectPaymentAndTransactionOnCompletion(final UUID directPaymentId, final String currentPaymentStateName, final UUID directTransactionId, final TransactionStatus paymentStatus, final BigDecimal processedAmount, final Currency processedCurrency, final String gatewayErrorCode, final String gatewayErrorMsg, final InternalCallContext context) {
         synchronized (this) {
             final PaymentModelDao payment = payments.get(directPaymentId);
             if (payment != null) {
@@ -151,7 +151,7 @@ public class MockPaymentDao implements PaymentDao {
             }
             final PaymentTransactionModelDao transaction = transactions.get(directTransactionId);
             if (transaction != null) {
-                transaction.setPaymentStatus(paymentStatus);
+                transaction.setTransactionStatus(paymentStatus);
                 transaction.setProcessedAmount(processedAmount);
                 transaction.setProcessedCurrency(processedCurrency);
                 transaction.setGatewayErrorCode(gatewayErrorCode);
diff --git a/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java b/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java
index 968e241..105f66b 100644
--- a/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java
+++ b/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java
@@ -24,7 +24,7 @@ import java.util.UUID;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.testng.Assert;
 import org.testng.annotations.Test;
@@ -64,7 +64,7 @@ public class TestDefaultPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         paymentDao.updateDirectPaymentAndTransactionOnCompletion(specifiedSecondDirectPaymentTransactionModelDao.getPaymentId(),
                                                                  "SOME_ERRORED_STATE",
                                                                  specifiedSecondDirectPaymentTransactionModelDao.getId(),
-                                                                 PaymentStatus.PAYMENT_FAILURE_ABORTED,
+                                                                 TransactionStatus.PAYMENT_FAILURE,
                                                                  processedAmount,
                                                                  processedCurrency,
                                                                  gatewayErrorCode,
@@ -72,7 +72,7 @@ public class TestDefaultPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
                                                                  accountCallContext);
 
         final PaymentTransactionModelDao updatedSecondDirectPaymentTransactionModelDao = paymentDao.getDirectPaymentTransaction(specifiedSecondDirectPaymentTransactionModelDao.getId(), accountCallContext);
-        Assert.assertEquals(updatedSecondDirectPaymentTransactionModelDao.getPaymentStatus(), PaymentStatus.PAYMENT_FAILURE_ABORTED);
+        Assert.assertEquals(updatedSecondDirectPaymentTransactionModelDao.getTransactionStatus(), TransactionStatus.PAYMENT_FAILURE);
         Assert.assertEquals(updatedSecondDirectPaymentTransactionModelDao.getGatewayErrorMsg(), gatewayErrorMsg);
         Assert.assertEquals(updatedSecondDirectPaymentTransactionModelDao.getGatewayErrorMsg(), gatewayErrorMsg);
 
@@ -119,29 +119,29 @@ public class TestDefaultPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
 
     private PaymentTransactionModelDao generateDirectPaymentTransactionModelDao(final UUID directPaymentId) {
         return new PaymentTransactionModelDao(UUID.randomUUID(),
-                                                    UUID.randomUUID().toString(),
-                                                    clock.getUTCNow(),
-                                                    clock.getUTCNow(),
-                                                    directPaymentId,
-                                                    TransactionType.CAPTURE,
-                                                    clock.getUTCNow(),
-                                                    PaymentStatus.SUCCESS,
-                                                    new BigDecimal("192.32910002"),
-                                                    Currency.EUR,
-                                                    UUID.randomUUID().toString().substring(0, 5),
-                                                    UUID.randomUUID().toString()
+                                              UUID.randomUUID().toString(),
+                                              clock.getUTCNow(),
+                                              clock.getUTCNow(),
+                                              directPaymentId,
+                                              TransactionType.CAPTURE,
+                                              clock.getUTCNow(),
+                                              TransactionStatus.SUCCESS,
+                                              new BigDecimal("192.32910002"),
+                                              Currency.EUR,
+                                              UUID.randomUUID().toString().substring(0, 5),
+                                              UUID.randomUUID().toString()
         );
     }
 
     private PaymentModelDao generateDirectPaymentModelDao(final UUID accountId) {
         return new PaymentModelDao(UUID.randomUUID(),
-                                         clock.getUTCNow(),
-                                         clock.getUTCNow(),
-                                         accountId,
-                                         UUID.randomUUID(),
-                                         -1,
-                                         UUID.randomUUID().toString(),
-                                         null, null);
+                                   clock.getUTCNow(),
+                                   clock.getUTCNow(),
+                                   accountId,
+                                   UUID.randomUUID(),
+                                   -1,
+                                   UUID.randomUUID().toString()
+        );
     }
 
     private void verifyDirectPayment(final PaymentModelDao loadedPaymentModelDao, final PaymentModelDao specifiedPaymentModelDao) {
@@ -156,7 +156,7 @@ public class TestDefaultPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getTransactionExternalKey(), specifiedDirectPaymentTransactionModelDao.getTransactionExternalKey());
         Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getTransactionType(), specifiedDirectPaymentTransactionModelDao.getTransactionType());
         Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getEffectiveDate().compareTo(specifiedDirectPaymentTransactionModelDao.getEffectiveDate()), 0);
-        Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getPaymentStatus(), specifiedDirectPaymentTransactionModelDao.getPaymentStatus());
+        Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getTransactionStatus(), specifiedDirectPaymentTransactionModelDao.getTransactionStatus());
         Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getAmount().compareTo(specifiedDirectPaymentTransactionModelDao.getAmount()), 0);
         Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getCurrency(), specifiedDirectPaymentTransactionModelDao.getCurrency());
         Assert.assertEquals(loadedDirectPaymentTransactionModelDao.getGatewayErrorCode(), specifiedDirectPaymentTransactionModelDao.getGatewayErrorCode());
diff --git a/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java b/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
index 60d9e1b..6507522 100644
--- a/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
+++ b/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
@@ -24,7 +24,7 @@ import java.util.UUID;
 import org.joda.time.DateTime;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
-import org.killbill.billing.payment.api.PaymentStatus;
+import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.testng.annotations.Test;
 
@@ -105,9 +105,9 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
 
         final PaymentModelDao paymentModelDao = new PaymentModelDao(utcNow, utcNow, accountId, paymentMethodId, externalKey);
         final PaymentTransactionModelDao transactionModelDao = new PaymentTransactionModelDao(utcNow, utcNow, transactionExternalKey,
-                                                                                                          paymentModelDao.getId(), TransactionType.AUTHORIZE, utcNow,
-                                                                                                          PaymentStatus.SUCCESS, BigDecimal.TEN, Currency.AED,
-                                                                                                          "success", "");
+                                                                                              paymentModelDao.getId(), TransactionType.AUTHORIZE, utcNow,
+                                                                                              TransactionStatus.SUCCESS, BigDecimal.TEN, Currency.AED,
+                                                                                              "success", "");
 
         final PaymentModelDao savedPayment = paymentDao.insertDirectPaymentWithFirstTransaction(paymentModelDao, transactionModelDao, internalCallContext);
         assertEquals(savedPayment.getId(), paymentModelDao.getId());
@@ -134,7 +134,7 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(savedTransaction.getTransactionExternalKey(), transactionExternalKey);
         assertEquals(savedTransaction.getPaymentId(), paymentModelDao.getId());
         assertEquals(savedTransaction.getTransactionType(), TransactionType.AUTHORIZE);
-        assertEquals(savedTransaction.getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(savedTransaction.getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(savedTransaction.getAmount().compareTo(BigDecimal.TEN), 0);
         assertEquals(savedTransaction.getCurrency(), Currency.AED);
 
@@ -142,27 +142,27 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(savedTransaction2.getTransactionExternalKey(), transactionExternalKey);
         assertEquals(savedTransaction2.getPaymentId(), paymentModelDao.getId());
         assertEquals(savedTransaction2.getTransactionType(), TransactionType.AUTHORIZE);
-        assertEquals(savedTransaction2.getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(savedTransaction2.getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(savedTransaction2.getAmount().compareTo(BigDecimal.TEN), 0);
         assertEquals(savedTransaction2.getCurrency(), Currency.AED);
 
         final PaymentTransactionModelDao transactionModelDao2 = new PaymentTransactionModelDao(utcNow, utcNow, transactionExternalKey2,
-                                                                                                           paymentModelDao.getId(), TransactionType.AUTHORIZE, utcNow,
-                                                                                                           PaymentStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
-                                                                                                           "success", "");
+                                                                                               paymentModelDao.getId(), TransactionType.AUTHORIZE, utcNow,
+                                                                                               TransactionStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
+                                                                                               "success", "");
 
         final PaymentTransactionModelDao savedTransactionModelDao2 = paymentDao.updateDirectPaymentWithNewTransaction(savedPayment.getId(), transactionModelDao2, internalCallContext);
         assertEquals(savedTransactionModelDao2.getTransactionExternalKey(), transactionExternalKey2);
         assertEquals(savedTransactionModelDao2.getPaymentId(), paymentModelDao.getId());
         assertEquals(savedTransactionModelDao2.getTransactionType(), TransactionType.AUTHORIZE);
-        assertEquals(savedTransactionModelDao2.getPaymentStatus(), PaymentStatus.UNKNOWN);
+        assertEquals(savedTransactionModelDao2.getTransactionStatus(), TransactionStatus.UNKNOWN);
         assertEquals(savedTransactionModelDao2.getAmount().compareTo(BigDecimal.TEN), 0);
         assertEquals(savedTransactionModelDao2.getCurrency(), Currency.AED);
 
         final List<PaymentTransactionModelDao> transactions = paymentDao.getDirectTransactionsForDirectPayment(savedPayment.getId(), internalCallContext);
         assertEquals(transactions.size(), 2);
 
-        paymentDao.updateDirectPaymentAndTransactionOnCompletion(savedPayment.getId(), "AUTH_SUCCESS", transactionModelDao2.getId(), PaymentStatus.SUCCESS,
+        paymentDao.updateDirectPaymentAndTransactionOnCompletion(savedPayment.getId(), "AUTH_SUCCESS", transactionModelDao2.getId(), TransactionStatus.SUCCESS,
                                                                  BigDecimal.ONE, Currency.USD, null, "nothing", internalCallContext);
 
         final PaymentModelDao savedPayment4 = paymentDao.getDirectPayment(savedPayment.getId(), internalCallContext);
@@ -176,20 +176,18 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         assertEquals(savedTransactionModelDao4.getTransactionExternalKey(), transactionExternalKey2);
         assertEquals(savedTransactionModelDao4.getPaymentId(), paymentModelDao.getId());
         assertEquals(savedTransactionModelDao4.getTransactionType(), TransactionType.AUTHORIZE);
-        assertEquals(savedTransactionModelDao4.getPaymentStatus(), PaymentStatus.SUCCESS);
+        assertEquals(savedTransactionModelDao4.getTransactionStatus(), TransactionStatus.SUCCESS);
         assertEquals(savedTransactionModelDao4.getAmount().compareTo(BigDecimal.TEN), 0);
         assertEquals(savedTransactionModelDao4.getCurrency(), Currency.AED);
         assertEquals(savedTransactionModelDao4.getProcessedAmount().compareTo(BigDecimal.ONE), 0);
         assertEquals(savedTransactionModelDao4.getProcessedCurrency(), Currency.USD);
         assertNull(savedTransactionModelDao4.getGatewayErrorCode());
         assertEquals(savedTransactionModelDao4.getGatewayErrorMsg(), "nothing");
-        assertNull(savedTransactionModelDao4.getExtFirstPaymentRefId());
-        assertNull(savedTransactionModelDao4.getExtSecondPaymentRefId());
 
         final List<PaymentModelDao> payments = paymentDao.getDirectPaymentsForAccount(accountId, internalCallContext);
         assertEquals(payments.size(), 1);
 
-        final List<PaymentTransactionModelDao> transactions2 =paymentDao.getDirectTransactionsForAccount(accountId, internalCallContext);
+        final List<PaymentTransactionModelDao> transactions2 = paymentDao.getDirectTransactionsForAccount(accountId, internalCallContext);
         assertEquals(transactions2.size(), 2);
     }