View as Markdown

llms.txt

The API reference isn't available right now

This instance couldn't load its API specification. The reference returns as soon as the specification is readable again.

Back to the API reference

No such operation

This instance documents no operation under that identifier. It may have been renamed, or it may belong to a feature this installation hasn't enabled.

Back to the API reference

This reference may be out of date

This instance couldn't reach its API specification on the last attempt, so this page shows the copy fetched before that. Anything added or changed since then is missing here, and the reference updates itself as soon as the specification is readable again. Last fetched 2026-10-01 06:25 UTC.

API reference Invoicing

Recurring schedules: Creates a new recurring invoice schedule.

POST /api/invoicing/recurring-schedules deprecated

Requires: Invoicing.RecurringSchedules, Invoicing.RecurringSchedules.Create, merchant scope.

**Required permissions**: `Invoicing.RecurringSchedules`, `Invoicing.RecurringSchedules.Create` **Scope**: merchant

Example request

Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.

The request body is a RecurringInvoiceScheduleCreateDto. See the Request body section below for its fields.

Code sample language

cURL
curl -X POST "{{BASE_URL}}/api/invoicing/recurring-schedules" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "",
  "schedule": {},
  "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "currency": "",
  "lineItems": [
    {
      "description": ""
    }
  ],
  "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}'

PowerShell
$headers = @{
    'api-key' = '{{API_KEY}}'
}

$body = @'
{
  "name": "",
  "schedule": {},
  "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "currency": "",
  "lineItems": [
    {
      "description": ""
    }
  ],
  "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/invoicing/recurring-schedules' `
    -Headers $headers -ContentType 'application/json' -Body $body

npm install @winkpg/winkpg-api

TypeScript (SDK)
import { Configuration, InvoicingApi } from '@winkpg/winkpg-api';

const api = new InvoicingApi(new Configuration({
  basePath: '{{BASE_URL}}',
  apiKey: '{{API_KEY}}',
}));

const { data } = await api.recurringInvoiceScheduleCreate({
  "name": "",
  "schedule": {},
  "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "currency": "",
  "lineItems": [
    {
      "description": ""
    }
  ],
  "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
});

TypeScript (raw HTTP)
const response = await fetch('{{BASE_URL}}/api/invoicing/recurring-schedules', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "name": "",
    "schedule": {},
    "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "currency": "",
    "lineItems": [
      {
        "description": ""
      }
    ],
    "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  }),
});

const data = await response.json();

dotnet add package WinkPg.Api.Client

C# (SDK)
using WinkPg.Api.Client.Api;
using WinkPg.Api.Client.Client;
using System.Text.Json;

var config = new Configuration { BasePath = "{{BASE_URL}}" };
config.AddApiKey("api-key", "{{API_KEY}}");

var api = new InvoicingApi(config);
var body = JsonSerializer.Deserialize<RecurringInvoiceScheduleCreateDto>("""
    {
      "name": "",
      "schedule": {},
      "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "currency": "",
      "lineItems": [
        {
          "description": ""
        }
      ],
      "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
    """);

var result = await api.RecurringInvoiceScheduleCreateAsync(body);

C# (raw HTTP)
using System.Text;

using var http = new HttpClient { BaseAddress = new Uri("{{BASE_URL}}") };

var request = new HttpRequestMessage(new HttpMethod("POST"), "/api/invoicing/recurring-schedules");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "name": "",
      "schedule": {},
      "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "currency": "",
      "lineItems": [
        {
          "description": ""
        }
      ],
      "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
    """, Encoding.UTF8, "application/json");

var response = await http.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();

pip install winkpg-api

Python (SDK)
import winkpg_api

configuration = winkpg_api.Configuration(host="{{BASE_URL}}")
configuration.api_key["ApiKey"] = "{{API_KEY}}"

with winkpg_api.ApiClient(configuration) as client:
    api = winkpg_api.InvoicingApi(client)
    body = winkpg_api.RecurringInvoiceScheduleCreateDto.from_dict({
      "name": "",
      "schedule": {},
      "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "currency": "",
      "lineItems": [
        {
          "description": ""
        }
      ],
      "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    })
    result = api.recurring_invoice_schedule_create(body)

pip install requests

Python (raw HTTP)
import requests

headers = {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
}

body = {
  "name": "",
  "schedule": {},
  "recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "currency": "",
  "lineItems": [
    {
      "description": ""
    }
  ],
  "billerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/invoicing/recurring-schedules",
    headers=headers,
    json=body,
)
response.raise_for_status()
data = response.json()

Parameters

Name In Type Description
suppressNulls required query boolean If true, omit properties with null values.

Request body

application/json , required

Field Type Description
name required string Operator-facing name for the series. nullablemax length 200
description required string Optional operator-facing description. Conditional: When Description is not null. Max length: 1000. nullable
schedule required all of ContractSchedule The recurrence rule (frequency, interval, start date, optional end date).
endAfterOccurrences required integer (int32) Optional cap on the total number of invoices the series will generate. Conditional: When EndAfterOccurrences is not null. Must be > 0. nullable
autoSend required boolean When true, each generated invoice is auto-sent via the standard send workflow.
paymentLinkExpiryHours required integer (int32) Optional payment-link expiry (hours) applied when auto-sending. nullable
viewTokenExpiryDays required integer (int32) Optional view-token expiry (days) applied when auto-sending. nullable
customMessage required string Optional custom recipient message applied when auto-sending. Conditional: When CustomMessage is not null. Max length: 2000. nullable
recipientId required string (uuid) Who the generated invoices are billed to.
recipientType required all of InvoicePartyType The type of recipient entity.
currency required string ISO 4217 currency code for generated invoices. nullablemin length 3max length 3pattern ^[A-Za-z]{3}$
paymentTermsValue required all of PaymentTerms Payment terms applied to generated invoices. nullable
customPaymentDays required integer (int32) Custom number of days when PaymentTerms is Custom. nullable
allowPartialPayment required boolean Whether partial payments are allowed on generated invoices. nullable
minimumPaymentAmount required number (double) Minimum payment amount when partial payments are enabled. nullable
partialPaymentTolerance required number (double) Auto-mark-paid tolerance for generated invoices. nullable
allowedPaymentMethods required array of string Subset of supported payment methods allowed on generated invoices. nullable
vaultRestriction required all of VaultRestriction Vault restriction applied to generated invoices. nullable
hppPageId required string (uuid) Linked HPP configuration id. nullable
templateId required string (uuid) Invoice style/template reference (styling only). nullable
invoiceLevelDiscount required all of InvoiceDiscountDto Optional invoice-level discount applied to generated invoices.
reminderConfig required all of InvoiceReminderConfigDto Reminder configuration applied to generated invoices.
billerSnapshot required all of InvoicePartySnapshotDto Biller snapshot frozen onto each generated invoice at issue time.
recipientSnapshot required all of InvoicePartySnapshotDto Recipient snapshot frozen onto each generated invoice at issue time.
lineItems required array of InvoiceLineItemInputDto Line items copied onto each generated invoice. nullable
customFields required array of CustomFieldValueDto Custom field values copied onto each generated invoice. nullable
notes required array of EntityNote Internal notes copied onto each generated invoice. nullable
recipientNote required string Recipient-facing note copied onto each generated invoice. nullable
footerText required string Footer / terms text copied onto each generated invoice. nullable
billerId required string (uuid) The billing entity id. Cannot be changed after creation.
billerType required all of InvoicePartyType The type of billing entity.

This request body has no documented fields.

Responses

200 OK

Body: RecurringInvoiceScheduleDto Each item has these fields.

Field Type Description
id required string (uuid)
creationTime required string (date-time) The date and time when this entity was created.
creatorId required string (uuid) The ID of the user who created this entity. nullable
lastModificationTime required string (date-time) The date and time when this entity was last modified. nullable
lastModifierId required string (uuid) The ID of the user who last modified this entity. nullable
isDeleted required boolean Indicates whether this entity has been deleted.
deleterId required string (uuid) The ID of the user who deleted this entity, if it is deleted. nullable
deletionTime required string (date-time) The date and time when this entity was deleted, if it is deleted. nullable
billerId required string (uuid)
billerType required InvoicePartyType Identifies the type of entity acting as the biller or recipient on an invoice. one of: GatewayOwner, Reseller, Merchant, Customer
name required string nullable
description required string nullable
status required RecurringInvoiceScheduleStatus Lifecycle status of a recurring invoice schedule (series). one of: Active, Paused, Cancelled, Completed
schedule required ContractSchedule
nextRunUtc required string (date-time) nullable
lastRunUtc required string (date-time) nullable
occurrenceCount required integer (int32)
endAfterOccurrences required integer (int32) nullable
autoSend required boolean
paymentLinkExpiryHours required integer (int32) nullable
viewTokenExpiryDays required integer (int32) nullable
customMessage required string nullable
recipientId required string (uuid)
recipientType required InvoicePartyType Identifies the type of entity acting as the biller or recipient on an invoice. one of: GatewayOwner, Reseller, Merchant, Customer
currency required string nullable
paymentTermsValue required all of PaymentTerms nullable
customPaymentDays required integer (int32) nullable
allowPartialPayment required boolean nullable
minimumPaymentAmount required number (double) nullable
partialPaymentTolerance required number (double) nullable
allowedPaymentMethods required array of string nullable
vaultRestriction required all of VaultRestriction nullable
hppPageId required string (uuid) nullable
templateId required string (uuid) nullable
invoiceLevelDiscount required InvoiceDiscountDto DTO for an invoice-level discount.
reminderConfig required InvoiceReminderConfigDto DTO for invoice reminder configuration. Each member overrides the tenant's reminder default on its own; a member that is null or omitted inherits that default.
billerSnapshot required InvoicePartySnapshotDto Read DTO for denormalized biller/recipient info frozen at invoice issuance.
recipientSnapshot required InvoicePartySnapshotDto Read DTO for denormalized biller/recipient info frozen at invoice issuance.
lineItems required array of InvoiceLineItemDto nullable
customFields required array of CustomFieldValueDto nullable
notes required array of EntityNote nullable
recipientNote required string nullable
footerText required string nullable
concurrencyStamp required string nullable

This response has no documented body fields.

403 Forbidden

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

401 Unauthorized

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

400 Bad Request

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

404 Not Found

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

501 Not Implemented

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

500 Internal Server Error

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.

Body: RateLimitProblemDetails Each item has these fields.

Field Type Description
type required string The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable
title required string A short, human-readable summary of the problem type. nullable
status required integer (int32) The HTTP status code, repeated in the body as the problem-details format defines.
detail required string A human-readable explanation of this occurrence of the problem. nullable
retryAfterSeconds required integer (int32) How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again.

This response has no documented body fields.

Errors

A failed request returns the platform error envelope. The error reference lists every value error.code can carry and shows the four response shapes.

Codes declared by Invoicing

Authentication

    Reconnecting to the server

    Could not reconnect

    This session has ended

    Attempt 1

    Your work on this page is still here. Retrying keeps it; reloading starts the page again.

    The server no longer holds this page's state, so it has to be loaded again.