/// <summary>
        /// Create submit for Standalone Credits
        /// </summary>
        /// <param name="submit">submit</param>
        /// <returns>StandaloneCredits</returns>
        public StandaloneCredits submit(StandaloneCredits standalonecredits)
        {
            standalonecredits.setRequiredFields(new List <string> {
                DirectDebitConstants.merchantRefNum,
                DirectDebitConstants.amount,
            });
            standalonecredits.checkRequiredFields();
            standalonecredits.setOptionalFields(new List <string> {
                DirectDebitConstants.customerIp,
                DirectDebitConstants.dupCheck,
                DirectDebitConstants.ach,
                DirectDebitConstants.bacs,
                DirectDebitConstants.eft,
                DirectDebitConstants.billingDetails,
                DirectDebitConstants.profile,
            });
            Request request = new Request(
                method: RequestType.POST,
                uri: this.prepareURI(client.account() + "/standalonecredits"),
                body: standalonecredits
                );
            dynamic response = this.client.processRequest(request);

            return(new StandaloneCredits(response));
        }
        /// <summary>
        /// Create cancel for Standalone Credits
        /// </summary>
        /// <param name="cancel">cancel</param>
        /// <returns>StandaloneCredits</returns>
        public StandaloneCredits cancel(StandaloneCredits standalonecredits)
        {
            standalonecredits.setRequiredFields(new List <string> {
                DirectDebitConstants.status,
                DirectDebitConstants.id
            });
            standalonecredits.checkRequiredFields();
            standalonecredits.setOptionalFields(new List <string> {
                DirectDebitConstants.ach,
                DirectDebitConstants.bacs,
                DirectDebitConstants.eft,
            });

            Request request = new Request(
                method: RequestType.PUT,
                uri: this.prepareURI(client.account() + "/standalonecredits/" + standalonecredits.id()),
                body: standalonecredits
                );
            dynamic response = this.client.processRequest(request);

            StandaloneCredits returnVal = new StandaloneCredits(response);

            returnVal.id(standalonecredits.id());
            return(returnVal);
        }
        /// <summary>
        /// Get matching StandaloneCredits
        /// </summary>
        /// <param name="standalonescredits"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        public Pagerator <StandaloneCredits> getStandaloneCredits(StandaloneCredits standalonescredits = null, Filter filter = null)
        {
            Dictionary <String, String> queryStr = new Dictionary <String, String>();

            if (standalonescredits != null && !String.IsNullOrWhiteSpace(standalonescredits.merchantRefNum()))
            {
                queryStr.Add("merchantRefNum", standalonescredits.merchantRefNum());
            }
            if (filter != null)
            {
                if (filter.limit != null)
                {
                    queryStr.Add("limit", filter.limit.ToString());
                }
                if (filter.offset != null)
                {
                    queryStr.Add("offset", filter.offset.ToString());
                }
                if (!String.IsNullOrWhiteSpace(filter.startDate))
                {
                    queryStr.Add("startDate", filter.startDate);
                }
                if (!String.IsNullOrWhiteSpace(filter.endDate))
                {
                    queryStr.Add("endDate", filter.endDate);
                }
            }

            Request request = new Request(
                method: RequestType.GET,
                uri: this.prepareURI(client.account() + "/standalonecredits"),
                queryString: queryStr
                );

            dynamic response = this.client.processRequest(request);

            return(new Pagerator <StandaloneCredits>(this.client, typeof(StandaloneCredits), response));
        }