collapse logo
expand logo
Developer Portal
Get Started Card Payments Check Payments Recurring Payments Gift & Loyalty Payments Fraud Plugins & Integrations Reporting Demo Semi Integrated Fully Integrated Terminals POS Middleware Connectors Portico Gateway Documentation API Overview Gift & Loyalty Bill Pay Payroll Introduction Developer Support Authentication Credit Card Gift Card eCheck & ACH Recurring Reporting Error Handling Semi-Integrated Devices Global Payments eCommerce Tokenization Demo Testing Knowledge Center GitHub Partnerships
Sign-In Get sandbox account
Sign-In Get sandbox account

Recurring Payments

Heartland’s recurring product, PayPlan, allows you to easily setup reccuring payments on a tokenized credit card.

Create a Customer

using GlobalPayments.Api.Entities;

var customer = new Customer {
    Id = GenerateCustomerId(),
    Status = "Active",
    FirstName = "Bill",
    LastName = "Johnson",
    Company = "Heartland Payment Systems",
    Address = new Address {
        StreetAddress1 = "987 Elm St",
        City = "Princeton",
        Province = "NJ",
        PostalCode = "12345",
        Country = "USA"
    },
    HomePhone = "9876543210",
    WorkPhone = "9876543210",
    Fax = "9876543210",
    MobilePhone = "9876543210",
    Email = "text@example.com"
}.Create();
import com.global.api.entities.Address;
import com.global.api.entities.Customer;

Address address = new Address();
address.setStreetAddress1("987 Elm St");
address.setCity("Princeton");
address.setProvince("NJ");
address.setPostalCode("12345");
address.setCountry("USA");

Customer customer = new Customer();
customer.setId(generateCustomerId());
customer.setStatus("Active");
customer.setFirstName("Bill");
customer.setLastName("Johnson");
customer.setCompany("Heartland Payment Systems");
customer.setAddress(address);
customer.setHomePhone("9876543210");
customer.setWorkPhone("9876543210");
customer.setFax("9876543210");
customer.setMobilePhone("9876543210");
customer.setEmail("text@example.com");
customer = customer.create();
<?php
use GlobalPayments\Api\Entities\Address;
use GlobalPayments\Api\Entities\Customer;

$customer = new Customer();
$customer->id = generateCustomerId();
$customer->firstName = 'John';
$customer->lastName = 'Doe';
$customer->status = 'Active';
$customer->email = 'john.doe@example.com';
$customer->address = new Address();
$customer->address->streetAddress1 = '123 Main St.';
$customer->address->city = 'Dallas';
$customer->address->province = 'TX';
$customer->address->postalCode = '75024';
$customer->address->country = 'USA';
$customer->workPhone = '5551112222';
$customer = $customer->create();
# coming soon
# coming soon
import { Address, Customer } from "globalpayments-api";

let customer = new Customer();
customer.id = generateCustomerId();
customer.firstName = "John";
customer.lastName = "Doe";
customer.status = "Active";
customer.email = "john.doe@email.com";
customer.address = new Address();
customer.address.streetAddress1 = "123 Main St.";
customer.address.city = "Dallas";
customer.address.state = "TX";
customer.address.postalCode = "98765";
customer.address.country = "USA";
customer.workPhone = "5551112222";
customer = await customer.create();

Create a Payment Method

using GlobalPayments.Api.PaymentMethods;

var paymentMethod = customer.AddPaymentMethod(
    GeneratePaymentMethodId(),
    new CreditCardData {
        Number = "4111111111111111",
        ExpMonth = 12,
        ExpYear = 2025
    }
).Create();
import com.global.api.paymentMethods.CreditCardData;
import com.global.api.paymentMethods.RecurringPaymentMethod;

CreditCardData card = new CreditCardData();
card.setNumber("4111111111111111");
card.setExpMonth(12);
card.setExpYear(2025);

RecurringPaymentMethod paymentMethod = customer.addPaymentMethod(
    generatePaymentMethodId(),
    card
).create();
<?php
use GlobalPayments\Api\PaymentMethods\CreditCardData;
use GlobalPayments\Api\PaymentMethods\RecurringPaymentMethod;

$card = new CreditCardData();
$card->number = '4111111111111111';
$card->expMonth = '12';
$card->expYear = '2025';

$paymentMethod = $customer->addPaymentMethod(
    generatePaymentMethodId(),
    $card
)->create();
# coming soon
# coming soon
import { CreditCardData } from "globalpayments-api";

const card = new CreditCardData();
card.number = "4111111111111111";
card.expMonth = "12";
card.expYear = "2025";

const paymentMethod = await customerPerson
  .addPaymentMethod(generatePaymentMethodId(), card)
  .create();

Create a Schedule

using GlobalPayments.Api.Entities;

var schedule = paymentMethod.AddSchedule(GenerateScheduleId())
    .WithAmount(30.02m)
    .WithCurrency("USD")
    .WithStartDate(DateTime.Parse("02/01/2027"))
    .WithFrequency(ScheduleFrequency.WEEKLY)
    .WithStatus("Active")
    .WithReprocessingCount(2)
    .WithEndDate(DateTime.Parse("04/01/2027"))
    .Create();
import com.global.api.entities.Schedule;
import com.global.api.entities.enums.ScheduleFrequency;
import java.math.BigDecimal;

Schedule schedule = paymentMethod.addSchedule(generateScheduleId())
    .withAmount(new BigDecimal("30.02"))
    .withCurrency("USD")
    .withStartDate(DateUtils.parse("02/01/2027"))
    .withFrequency(ScheduleFrequency.Weekly)
    .withStatus("Active")
    .withReprocessingCount(2)
    .withEndDate(DateUtils.parse("04/01/2027"))
    .create();
<?php
use GlobalPayments\Api\Entities\Enums\ScheduleFrequency;

$schedule = $paymentMethod->addSchedule(
    generateScheduleId()
)
    ->withStatus('Active')
    ->withAmount(30.02)
    ->withCurrency('USD')
    ->withStartDate(\DateTime::createFromFormat('Y-m-d', '2027-02-01'))
    ->withFrequency(ScheduleFrequency::WEEKLY)
    ->withEndDate(\DateTime::createFromFormat('Y-m-d', '2027-04-01'))
    ->withReprocessingCount(2)
    ->create();
# coming soon
# coming soon
import {
  EmailReceipt,
  ScheduleFrequency
} from "globalpayments-api";

const schedule = await paymentMethodVisa
  .addSchedule(generateScheduleId())
  .withStartDate(new Date(2027, 1, 1))
  .withAmount(30.01)
  .withFrequency(ScheduleFrequency.Weekly)
  .withReprocessingCount(1)
  .withStatus("Active")
  .withEmailReceipt(EmailReceipt.Never)
  .create();

Next Steps

Learn more about Heartland Ecommerce recurring payments with: