Recurrings Endpoint
The recurrings endpoint is used to run a recurring transaction one or more times. There are two different types of recurrings:
- ongoing (recurring_type_id="o") - a recurring that runs until it is deleted or an end date has been set.
- installment (recurring_type_id="i") - a recurring that runs a fixed number of times, regardless of approval or decline.
When setting up a reccuring, it isn't necessarily linked directly to a contact, it is linked to an account vault through the account_vault_id or account_vault_api_id field. The account vault is then in turn linked to a contact. So in order to create a recurring, you must first create a contact, then create an account vault for that contact. Then the id of the account vault can be used for the recurring as account_vault_id.
Endpoint Actions
Create Record
POST /v2/recurrings
{
"recurring": {
"account_vault_id": "111111111111111111111111",
"location_id": "9as8df9asufas9fs9dfjas9fjas",
"product_transaction_id": "02320asd9fjasf983nasd9asdf",
"interval": 1,
"interval_type": "m",
"start_date": "2018-01-01",
"description": "Test Recurring",
"transaction_amount": "1.50",
"notification_days": 2
}
}
{
"recurring": {
"id": "123456789012345678901",
"account_vault_id": "111111111111111111111111",
"location_id": "9as8df9asufas9fs9dfjas9fjas",
"product_transaction_id": "02320asd9fjasf983nasd9asdf",
"description": "Test Recurring",
"transaction_amount": "1.50",
"interval_type": "m",
"interval": 1,
"next_run_date": "2018-01-01",
"payment_method": "cc",
"start_date": "2018-01-01",
"end_date": "0000-00-00",
"notification_days": 2,
"created_ts": 1422282050,
"modified_ts": 1422282050,
"status": "active",
"active": 1,
"recurring_type_id": "o",
"_links": {
"self": {
"href": "{url}/v2/recurrings/123456789012345678901"
}
}
}
}
Update Record
PUT /v2/recurrings/{id}
{
"recurring": {
"next_run_date": "2018-01-01",
... // Other Optional Fields here
}
}
{
"recurring": {
"id": "123456789012345678901",
"account_vault_id": "111111111111111111111111",
"location_id": "9as8df9asufas9fs9dfjas9fjas",
"product_transaction_id": "02320asd9fjasf983nasd9asdf",
"description": "Test Recurring",
"transaction_amount": "1.50",
"interval_type": "m",
"interval": 1,
"next_run_date": "2018-01-01",
"payment_method": "cc",
"start_date": "2018-01-01",
"end_date": "0000-00-00",
"notification_days": 2,
"created_ts": 1422282050,
"modified_ts": 1422282050,
"status": "active",
"active": 1,
"recurring_type_id": "o",
"_links": {
"self": {
"href": "{url}/v2/recurrings/123456789012345678901"
}
}
}
}
View Single Record
GET /v2/recurrings/{id}
{
// Empty Payload - Nothing Needed Here
}
{
"recurring": {
"id": "123456789012345678901",
"account_vault_id": "111111111111111111111111",
"location_id": "9as8df9asufas9fs9dfjas9fjas",
"product_transaction_id": "02320asd9fjasf983nasd9asdf",
"description": "Test Recurring",
"transaction_amount": "1.50",
"interval_type": "m",
"interval": 1,
"next_run_date": "2018-01-01",
"payment_method": "cc",
"start_date": "2018-01-01",
"end_date": "0000-00-00",
"notification_days": 2,
"created_ts": 1422282050,
"modified_ts": 1422282050,
"status": "active",
"active": 1,
"recurring_type_id": "o",
"_links": {
"self": {
"href": "{url}/v2/recurrings/123456789012345678901"
}
}
}
}
View Record List
GET /v2/recurrings
Note: Filters can be used to search for Recurrings by including the columns you want to filter on as URL parameters. i.e. /v2/recurrings?field=value&field2=value2
{
// Empty Payload - Nothing Needed Here
}
{
"recurrings": [
{
"id": "123456789012345678901234",
"account_vault_id": "111111111111111111111111",
"location_id": "9as8df9asufas9fs9dfjas9fjas",
"product_transaction_id": "02320asd9fjasf983nasd9asdf",
"description": "Test Recurring",
"transaction_amount": "1.50",
"interval_type": "m",
"interval": 1,
"next_run_date": "2018-01-01",
"payment_method": "cc",
"start_date": "2018-01-01",
"end_date": "0000-00-00",
"notification_days": 2,
"created_ts": 1422282050,
"modified_ts": 1422282050,
"status": "active",
"active": 1,
"recurring_type_id": "o",
"_links": {
"self": {
"href": "{url}/v2/recurrings/123456789012345678901234"
}
}
},
... // Other Recurrings here
],
"meta": {
"pagination": {
"links": {
"self": {
"href": "{url}/v2/recurrings?page_size=2&page=1"
},
"next": {
"href": "{url}/v2/recurrings?page_size=2&page=2"
},
"last": {
"href": "{url}/v2/recurringspage_size=2&page=2"
}
},
"totalCount": 4,
"pageCount": 2,
"currentPage": 0,
"perPage": 2
},
"sort": {
"attributes": {
"next_run_date": "asc"
}
}
}
}
Delete Record
DELETE /v2/recurrings/{id}
{
// Empty Payload - Nothing Needed Here
}
No JSON Response. Only HTTP Response code. 204 - Success, Recurring was deleted 404 - Fail, Recurring not found.
Skip Payment
This can be used to skip the next {number} of regularly scheduled recurring payment(s). Skipping a payment will not change the recurring end date. For recurrings with an installment count, the number of total installments collected will be reduced with each payment that is skipped.
POST /v2/recurrings/{id}/skipPayment?skip_count={number}
{
// Empty Payload - Nothing Needed Here
}
{
"recurring": {
"id": "11e936cf38dhgc0698fc5e71",
"account_vault_id": "11e89b093jrsef664cbd0b6ebe",
"description": "Test Recurring 022219",
"transaction_amount": "10.00",
"interval_type": "m",
"interval": 1,
"installment_total_count": 20,
"installment_amount_total": "200.00",
"next_run_date": "2019-03-23",
"payment_method": "cc",
"start_date": "2019-02-23",
"end_date": "2020-10-22",
"created_ts": 1550859859,
"notification_days": 2,
"modified_ts": 1550860111,
"status": "active",
"recurring_c1": null,
"recurring_c2": null,
"recurring_c3": null,
"active": "1",
"product_transaction_id": "11e8a09609asdjfasd0bafea6b3",
"recurring_type_id": "i",
"_links": {
"self": {
"href": "https://{domain}/v2/recurrings/11e936cf38dhgc0698fc5e71"
}
}
}
}
Defer Payment
This can be used to skip the next {number} of regularly scheduled recurring payment(s) and add them to the end of the existing recurring cycle. Deferring a payment will ensure that original quantity of installment payments are still collected.
Note: Ongoing Recurrings (recurring_type_id = "o") are NOT applicable for Defer.
POST /v2/recurrings/{id}/deferPayment?defer_count={number}
{
// Empty Payload - Nothing Needed Here
}
{
"recurring": {
"id": "11e936cf38dhgc0698fc5e71",
"account_vault_id": "11e89b093jrsef664cbd0b6ebe",
"description": "Test Recurring 022219",
"transaction_amount": "10.00",
"interval_type": "m",
"interval": 1,
"installment_total_count": 20,
"installment_amount_total": "200.00",
"next_run_date": "2019-04-23",
"payment_method": "cc",
"start_date": "2019-02-23",
"end_date": "2020-11-22",
"created_ts": 1550859859,
"notification_days": 2,
"modified_ts": 1550860718,
"status": "active",
"recurring_c1": null,
"recurring_c2": null,
"recurring_c3": null,
"active": "1",
"product_transaction_id": "11e8a09609asdjfasd0bafea6b3",
"recurring_type_id": "i",
"_links": {
"self": {
"href": "https://{domain}/v2/recurrings/11e936cf38dhgc0698fc5e71"
}
}
}
}
Put On Hold
This can be used to move a recurring to a status of "on hold" from "active".
POST /v2/recurrings/{id}/placeOnHold
{
// Empty Payload - Nothing Needed Here
}
{
"recurring": {
"id": "11e939e551e3b57e8893cc51",
"account_vault_id": "11e89b1acdf08g44a5ee5802",
"description": "test ach recurring 3",
"transaction_amount": "3.00",
"interval_type": "m",
"interval": 1,
"installment_total_count": null,
"installment_amount_total": null,
"next_run_date": "0000-00-00",
"payment_method": "ach",
"start_date": "2019-02-27",
"end_date": "0000-00-00",
"created_ts": 1551199269,
"notification_days": 0,
"modified_ts": 1551199294,
"status": "on hold",
"recurring_c1": null,
"recurring_c2": null,
"recurring_c3": null,
"active": "1",
"product_transaction_id": "11e7a845d9f85568e1dea7d",
"recurring_type_id": "o",
"_links": {
"self": {
"href": "https://{domain}/v2/recurrings/11e939e551e3b57e8893cc51"
}
}
}
}
Activate
This can be used to move a recurring to a status of "active" from "on hold".
POST /v2/recurrings/{id}/activate
{
// Empty Payload - Nothing Needed Here
}
{
"recurring": {
"id": "11e939e551e3b57e8893cc51",
"account_vault_id": "11e89b1acdf08g44a5ee5802",
"description": "test ach recurring 3",
"transaction_amount": "3.00",
"interval_type": "m",
"interval": 1,
"installment_total_count": null,
"installment_amount_total": null,
"next_run_date": "0000-00-00",
"payment_method": "ach",
"start_date": "2019-02-27",
"end_date": "0000-00-00",
"created_ts": 1551199269,
"notification_days": 0,
"modified_ts": 1551199294,
"status": "active",
"recurring_c1": null,
"recurring_c2": null,
"recurring_c3": null,
"active": "1",
"product_transaction_id": "11e7a845d9f85568e1dea7d",
"recurring_type_id": "o",
"_links": {
"self": {
"href": "https://{domain}/v2/recurrings/11e939e551e3b57e8893cc51"
}
}
}
}
Fields
| Name | Min | Max | Format | POST Required | POST Allowed | PUT Allowed | Comments |
|---|---|---|---|---|---|---|---|
| id | 24 | 36 | string | System generated id | |||
| account_vault_id | 24 | 36 | string | ✔ | ✔ | ✔ | The account_vault_id of the account vault to use when runnint the recurring transaction. |
| active | 1 | 1 | string | ✔ | ✔ | Current status (1 or 0) Note: Only "ongoing" recurrings (recurring_type_id="o") can be made inactive by PUT request. Otherwise this field is ignored on PUT. |
|
| created_ts | 10 | 10 | integer | System created timestamp | |||
| description | 0 | 36 | string | ✔ | ✔ | Description of Recurring Payment | |
| end_date | 10 | 10 | yyyy-mm-dd | ✔ | ✔ | End date of recurring | |
| installment_total_count | 0 | 2 | integer | ✔ | Number of times to process the payment (optional) | ||
| interval | 1 | 3 | string | ✔ | ✔ | Interval of recurring | |
| interval_type | 1 | 1 | string | ✔ | ✔ | Type of interval (enum of d, w, or m) | |
| location_id | 24 | 36 | string | ✔ | ✔ | The ID for the Location where the Recurring is configured. | |
| next_run_date | 10 | 10 | yyyy-m-dd | ✔ | Next run date of recurring | ||
| notification_days | 1 | 2 | string | ✔ | ✔ | Days to notify contact before next recurring processes | |
| payment_method | 2 | 3 | string | ✔ | Payment Method of recurring (enum of cc or ach) | ||
| product_transaction_id | 24 | 36 | string | ✔ | ✔ | The ID for the Product Transaction to use when running the Recurring. | |
| recurring_type_id | 1 | 1 | string | ✔ | ✔ | System Generated Flag based on configuration. Returned in GET/PUT/POST responses for each record. | |
| start_date | 10 | 10 | yyyy-mm-dd | ✔ | ✔ | Start Date of recurring | |
| status | 5 | 7 | string | Current status of recurring Possible values include: "active", "on hold", and "ended" |
|||
| transaction_amount | 1 | 12 | string | ✔ | ✔ | ✔ | Amount of recurring |
Expands (Related Records)
For detail on how to use Expands on an Endpoint, please visit the Expands (Related Records) page.
| Related Record | Filter Name |
|---|---|
| Created User | created_user |
| Account Vault | account_vault |
| Transactions | transactions |
| Signature | signature |
| Location | location |
| Contact | contact |
| Tags | tags |
| Product Transaction | product_transaction |
An example of “expanding” this endpoint to one of the above related records would look like this:
GET /v2/recurrings/xxxxxxxxxxxxxxxxxxxxxxxx?expand=location
To use multiple expands on this endpoint, simply include them both separated by a comma like so:
GET /v2/recurrings/xxxxxxxxxxxxxxxxxxxxxxxx?expand=location,created_user