private CreditCardReceipt updateRecurringPurchaseHelper(
            PeriodicPurchaseInfo periodicPurchaseInfo, CreditCard creditCard,
            String storageTokenId, VerificationRequest verificationRequest,
            PurchaseCardRequest purchaseCard) {

        if (periodicPurchaseInfo.getPeriodicTransactionId() == null) {
            return new CreditCardReceipt(REQ_INVALID_REQUEST, "recurringPurchaseId is required",
                    null);
        }
        // create the request string
        final StringBuilder req = new StringBuilder();
        try {
            this.appendHeader(req, "recurringPurchase");
            this.appendOperationType(req, "update");
            this.appendTransactionId(req, periodicPurchaseInfo.getPeriodicTransactionId());
            this.appendPeriodicPurchaseInfo(req, periodicPurchaseInfo);
            if (creditCard != null) {
                this.appendCreditCard(req, creditCard);
            }
            if (storageTokenId != null) {
                this.appendStorageTokenId(req, storageTokenId);
            }
            if (verificationRequest != null) {
                this.appendVerificationRequest(req, verificationRequest);
            }
            this.appendPurchaseCard(req, purchaseCard);

            // render indicator
            for (CreditCardIndicator indicator : super.indicatorList) {
                this.appendIndicator(req, indicator);
            }
        } catch (Exception e) {
            return new CreditCardReceipt(REQ_INVALID_REQUEST, e.toString(), null);
        }
        return this.send(req);
    }