GoodFunds Gateway - RESTful API Documentation

Recurring

Recurring payments are only setup with ACH and with specific gateways, please reach out to us to ensure recurring option is enabled for your account.

Recurring payments will be ran on the scheduled options presented to us towards the gateway_id in the request

GET recurrings

List all recurring scheduled payments.

    Resource Information

  • Method: GET
  • URL: https://demo.goodfundsgateway.com/api/recurrings.json
  • Requires authentication? Yes

Method Parameters

N/A

Query Parameters

Parameter Type Required Description
internal_id string Y Only show recurring schedule for this specific customer

PHP Example Request:

      $data = array(
        'internal_id' =>  '123456',
      );

      if(isset($data))
      {
        $url = 'https://demo.goodfundsgateway.com/api/recurrings.json?' . http_build_query($data);
      }
      else
      {
        $url = 'https://demo.goodfundsgateway.com/api/recurrings.json';
      }

      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
          'Content-Type: application/json',
          'svs-api-id: [SVS API ID]',
          'svs-api-key: [SVS API KEY]')
      );                       
                                                                                                                           
      $result = curl_exec($ch);

      $err = curl_error($ch);

      curl_close($ch);

      if ($err) {
        echo "cURL Error #:" . $err;
      } else {
        echo $result;
      }
    

Response data: (json format)

      {
        "status": "success",
            "successMessage": {
                "response_code": 706,
                "message": {
                    "recurrings": [
                    {
                        "recur_id": "[recur_id]",
                        "gateway_id": "[gateway_id]",
                        "internal_id": "[internal_id]",
                        "start_date": "2025-07-12",
                        "day_of_month": "12",
                        "frequency": "monthly",
                        "description": "Product Services",
                        "amount": "1.00",
                        "timestamp": "2025-07-29 05:57:18"
                    },
                    {
                        "recur_id": "[recur_id]",
                        "gateway_id": "[gateway_id]",
                        "internal_id": "[internal_id]",
                        "start_date": "2025-07-12",
                        "day_of_month": "12",
                        "frequency": "monthly",
                        "description": "Product Services",
                        "amount": "1.00",
                        "timestamp": "2025-07-29 05:57:18"
                    }
                ]
            }
        }
    }
    

POST setuprecurringcharge

Setup recurring ach payment.

    Resource Information

  • Method: POST
  • URL: https://demo.goodfundsgateway.com/api/setuprecurringcharge.json
  • Requires authentication? Yes

Method Parameters

N/A

Query Parameters

Parameter Type Required Description
charge_type string Y "ecrecurring" : Setup Recurring payment with gateway
gateway_id int N Condition: { If not included, the default ach gateway account will be used if possible }
Unique gateway account id to be used for processing ach.
customer node N Customer Node: Customer information node
internal_id string N A username or user ID in your own records, e.g. "Simulatedusername", "98765432".
first_name string Y Joe
last_name string Y Smith
company string N John Smith Plumbing
address_1 string N 12345 Simulated St.
address_2 string N For apartment/unit/suite #'s, eg. "Unit 2".
city string N San Diego
state string N The state/province/region of the customer. For the US and Canada, this must be supplied as the two letter abbreviation, eg. "CA"
postal_code string N The zip or postal code of the user, e.g. "A1B2C3", "90210".
country string N The ISO 3166-1 alpha-3 code of the customer's country, e.g. "CAN", "USA".
email string N A valid email address for the customer. Email node can be generated more than once inside the emails wrapper.
phone string N Supported: 1-555-555-0000 | 555-555-5555 | 555.555.5555 | 555 555 5555 | (555) 555-5555
echeck node Y ECheck Node: ECheck information to be processed with this current transaction
echeck_name string Y Full Name or Company Name as printed on the Check.
echeck_account_number string Y Bank account number as printed on the Check.
echeck_routing_number string Y Routing/Transit Number as printed on the Check.
echeck_account_type int Y "0" : Business Bank Account
"1" : Personal Bank Account
echeck_holder_type int Y "0" : Checking Account
"1" : Savings Account
echeck_seccode string Y "WEB" : Internet-Initiated Entry
"TEL" : Telephone-Initiated Entry
"PPD" : Prearranged Payment & Deposit Entry
"CCD" : Cash Concentration or Disbursement
echeck_agree int Y The agreement flag. One numeric digit value, valid values are: 1 for I agree, 0 for I do not Agree.
schedule node Y Schedule Node: Information about the recurring schedule for this transaction
frequency string Y monthly, weekly, quarterly, yearly
payment_day string Y Day of the month going forward to process on ( If weekly, will be day of the week; value: 0=Sun, 1=Mon, 2=Tues, 3=Wed, 4=Thur, 5=Friday,6=Sat )
start_date date Y Date to start the recurring transaction, e.g. "2015-01-01" (YYYY-MM-DD).
num_payments date Y Either a specific number of payments or indefinite (will run forever until cancelled)
enabled boolean Y 1 for enabled, 0 for disabled
description string N Description of the recurring transaction, e.g. "Monthly Payment for Service".
amount int Y e.g. "45.67"

PHP Example Request: (json format)

      $data = array(
          'charge_type' =>  'ccauthcapture',
          'gateway_id'   =>  '[Gateway ID]',
          'customer'    =>  array(
            'internal_id'   =>  '1375894109',
            'first_name'    =>  'John',
            'last_name'     =>  'Doe',
            'company'       =>  'John Doe\'s Bakery',
            'address_1'     =>  '321 Way St.',
            'address_2'     =>  'Suite 400',
            'city'          =>  'San Diego',
            'state'         =>  'CA',
            'postal_code'   =>  '92020',
            'country'       =>  'US',
            'phone'         =>  '619-444-5555',
            'email'         =>  'example@domain.com'
          ),
          'echeck'  =>  array(
            'echeck_name'       =>  'John Doe',
            'echeck_account_number' =>  '0000000016',
            'echeck_routing_number' =>  '122105278',
            'echeck_account_type'  =>  '1',
            'echeck_holder_type'   =>  '0',
            'echeck_seccode'        =>  'CCD',
            'echeck_agree'        =>  '1'
          ),
          'schedule'  =>  array(
              'frequency' => 'monthly',
              'payment_day' => '29',
              'start_date' => '2025-07-29',
              'num_payments' => 'indefinite',
              'enabled' => '1',
              'description' => 'Product Services'
          ),
          'amount'  =>  '1.00'
        );

        $data_string = json_encode($data);

        $ch = curl_init('https://demo.goodfundsgateway.com/api/setuprecurringcharge.json');                                                                      
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
            'Content-Type: application/json',                                                                                
            'Content-Length: ' . strlen($data_string),
            'svs-api-id: {api_id}',
            'svs-api-key: {api_key}')                                                                       
        );                       
                                                                                                                             
        $result = curl_exec($ch);
        $err = curl_error($ch);

        curl_close($ch);

        if ($err) {
          echo "cURL Error #:" . $err;
        } else {
          echo $result;
        }
    

Response data: (json format)

      {
        "status": "success",
        "successMessage": {
          "response_code": 1,
          "message": {
            "recurring": {
              "response_code": 100,
                "response_text": "Recurring Payment created.",
                "success": true,
                "recur_id": {recur_id},
                "raw_data": {
                    {gateway_raw_response_data}
                },
                "amount": "1.00"
            }
          }
        }
      }
    

POST updaterecurringcharge

Update an ach recurring payment.

    Resource Information

  • Method: POST
  • URL: https://demo.goodfundsgateway.com/api/updaterecurringcharge.json
  • Requires authentication? Yes

Method Parameters

N/A

Query Parameters

Parameter Type Required Description
charge_type string Y "ecupdaterecurring" : Update Recurring payment with gateway
gateway_id int N Condition: { If not included, the default ach gateway account will be used if possible }
Unique gateway account id to be used for processing ach.
recur_id int Y Unique recur_id from originating recurring payment setup.
customer node N Customer Node: Customer information node
internal_id string N A username or user ID in your own records, e.g. "Simulatedusername", "98765432".
first_name string Y Joe
last_name string Y Smith
company string N John Smith Plumbing
address_1 string N 12345 Simulated St.
address_2 string N For apartment/unit/suite #'s, eg. "Unit 2".
city string N San Diego
state string N The state/province/region of the customer. For the US and Canada, this must be supplied as the two letter abbreviation, eg. "CA"
postal_code string N The zip or postal code of the user, e.g. "A1B2C3", "90210".
country string N The ISO 3166-1 alpha-3 code of the customer's country, e.g. "CAN", "USA".
email string N A valid email address for the customer. Email node can be generated more than once inside the emails wrapper.
phone string N Supported: 1-555-555-0000 | 555-555-5555 | 555.555.5555 | 555 555 5555 | (555) 555-5555
echeck node Y ECheck Node: ECheck information to be processed with this current transaction
echeck_name string Y Full Name or Company Name as printed on the Check.
echeck_account_number string Y Bank account number as printed on the Check.
echeck_routing_number string Y Routing/Transit Number as printed on the Check.
echeck_account_type int Y "0" : Business Bank Account
"1" : Personal Bank Account
echeck_holder_type int Y "0" : Checking Account
"1" : Savings Account
echeck_seccode string Y "WEB" : Internet-Initiated Entry
"TEL" : Telephone-Initiated Entry
"PPD" : Prearranged Payment & Deposit Entry
"CCD" : Cash Concentration or Disbursement
echeck_agree int Y The agreement flag. One numeric digit value, valid values are: 1 for I agree, 0 for I do not Agree.
schedule node Y Schedule Node: Information about the recurring schedule for this transaction
frequency string Y monthly, weekly, quarterly, yearly
payment_day string Y Day of the month going forward to process on ( If weekly, will be day of the week; value: 0=Sun, 1=Mon, 2=Tues, 3=Wed, 4=Thur, 5=Friday,6=Sat )
start_date date Y Date to start the recurring transaction, e.g. "2015-01-01" (YYYY-MM-DD).
num_payments date Y Either a specific number of payments or indefinite (will run forever until cancelled)
enabled boolean Y 1 for enabled, 0 for disabled
description string N Description of the recurring transaction, e.g. "Monthly Payment for Service".
amount int Y e.g. "45.67"

PHP Example Request: (json format)

      $data = array(
          'charge_type' =>  'ccauthcapture',
          'gateway_id'   =>  '[Gateway ID]',
          'recur_id'    =>  '[recur_id]',
          'customer'    =>  array(
            'internal_id'   =>  '1375894109',
            'first_name'    =>  'John',
            'last_name'     =>  'Doe',
            'company'       =>  'John Doe\'s Bakery',
            'address_1'     =>  '321 Way St.',
            'address_2'     =>  'Suite 400',
            'city'          =>  'San Diego',
            'state'         =>  'CA',
            'postal_code'   =>  '92020',
            'country'       =>  'US',
            'phone'         =>  '619-444-5555',
            'email'         =>  'example@domain.com'
          ),
          'echeck'  =>  array(
            'echeck_name'       =>  'John Doe',
            'echeck_account_number' =>  '0000000016',
            'echeck_routing_number' =>  '122105278',
            'echeck_account_type'  =>  '1',
            'echeck_holder_type'   =>  '0',
            'echeck_seccode'        =>  'CCD',
            'echeck_agree'        =>  '1'
          ),
          'schedule'  =>  array(
              'frequency' => 'monthly',
              'payment_day' => '29',
              'start_date' => '2025-07-29',
              'num_payments' => 'indefinite',
              'enabled' => '1',
              'description' => 'Product Services'
          ),
          'amount'  =>  '1.00'
        );

        $data_string = json_encode($data);

        $ch = curl_init('https://demo.goodfundsgateway.com/api/updaterecurringcharge.json');                                                                      
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
            'Content-Type: application/json',                                                                                
            'Content-Length: ' . strlen($data_string),
            'svs-api-id: {api_id}',
            'svs-api-key: {api_key}')                                                                       
        );                       
                                                                                                                             
        $result = curl_exec($ch);
        $err = curl_error($ch);

        curl_close($ch);

        if ($err) {
          echo "cURL Error #:" . $err;
        } else {
          echo $result;
        }
    

Response data: (json format)

      {
        "status": "success",
        "successMessage": {
          "response_code": 1,
          "message": {
            "recurring": {
              "response_code": 102,
                "response_text": "Recurring Payment updated.",
                "success": true,
                "recur_id": "[recur_id]",
                "raw_data": {
                    {gateway_raw_response_data}
                },
                "amount": "1.00"
            }
          }
        }
      }
    

POST stoprecurringcharge

Stop an ach recurring payment.

    Resource Information

  • Method: POST
  • URL: https://demo.goodfundsgateway.com/api/stoprecurringcharge.json
  • Requires authentication? Yes

Method Parameters

N/A

Query Parameters

Parameter Type Required Description
charge_type string Y "ecstoprecurring" : Stop Recurring payment with gateway
gateway_id int N Condition: { If not included, the default ach gateway account will be used if possible }
Unique gateway account id to be used for processing ach.
recur_id int Y Unique recur_id from originating recurring payment setup.
reason node N Reason for cancelling recurring payment.

PHP Example Request: (json format)

      $data = array(
          'charge_type' =>  'ecstoprecurring',
          'gateway_id'   =>  '[Gateway ID]',
          'recur_id'    =>  '[recur_id]',
          'reason'  =>  'Customer cancelled payment'
        );

        $data_string = json_encode($data);

        $ch = curl_init('https://demo.goodfundsgateway.com/api/stoprecurringcharge.json');                                                                      
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
            'Content-Type: application/json',                                                                                
            'Content-Length: ' . strlen($data_string),
            'svs-api-id: {api_id}',
            'svs-api-key: {api_key}')                                                                       
        );                       
                                                                                                                             
        $result = curl_exec($ch);
        $err = curl_error($ch);

        curl_close($ch);

        if ($err) {
          echo "cURL Error #:" . $err;
        } else {
          echo $result;
        }
    

Response data: (json format)

      {
        "status": "success",
        "successMessage": {
          "response_code": 1,
          "message": {
            "recurring": {
              "response_code": 101,
              "response_text": "Recurring Payment cancelled.",
              "success": true,
              "recur_id": "[recur_id]",
              "raw_data": {
                  {gateway_raw_response}
              }
            }
          }
        }
      }