> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# List templates

GET https://api-sandbox.payabli.com/api/v2/templates

Lists the boarding templates an organization owns, plus templates
inherited from ancestor organizations. Scope the listing with the
required `orgId` query parameter. You can filter by `status`, `name`,
`slug`, `orgName`, and `inherited`, and page through results.


Reference: https://docs.payabli.com/developers/api-reference/boarding-templates/list-templates

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api-sandbox.payabli.com/api` (Sandbox, default)
- `https://api.payabli.com/api` (Production)

## Request

### Query parameters

- `orgId` (integer, required) — The numeric identifier of the organization to list templates for.
- `status` (enum, optional) — Filter by template status.
  - Allowed values: `active`, `archived`
- `name` (string, optional) — Filter by exact template name.
- `slug` (string, optional) — Filter by exact template slug.
- `orgName` (string, optional) — Filter by exact owning organization name.
- `inherited` (boolean, optional) — Filter by whether the template is inherited from an ancestor organization.
- `fromRecord` (integer, optional, default: 0) — The number of records to skip before collecting the result set.
- `limitRecord` (integer, optional, default: 20) — The maximum number of records to return. Use `0` or a negative value to return all records.

## Response

### 200

A page of boarding templates.

- `Summary` (TemplatesSummary, required) — Pagination metadata for the result set.
- `Records` (list of Template, required) — The templates on this page.

## Errors

### 401 Unauthorized Error

Unauthorized request.

- `isSuccess` (boolean, required) — Always `false` for error responses.
- `responseText` (string, required) — Error text describing what went wrong.
- `responseCode` (integer, optional) — Code for the response. Learn more in [API Response Codes](/developers/api-reference/api-responses).
- `responseData` (PayabliErrorBodyResponseData, optional) — Object with detailed error context.

### 500 Internal Server Error

Internal server error.

- `isSuccess` (boolean, required) — Always `false` for error responses.
- `responseText` (string, required) — Error text describing what went wrong.
- `responseCode` (integer, optional) — Code for the response. Learn more in [API Response Codes](/developers/api-reference/api-responses).
- `responseData` (PayabliErrorBodyResponseData, optional) — Object with detailed error context.

## Types

### TemplatesSummary

Pagination metadata for a template list response.

- `totalPages` (integer, required) — The total number of pages available.
- `totalRecords` (integer, required) — The total number of templates across all pages.
- `pageSize` (integer, required) — The number of templates per page.

### Template

A boarding template, including its current content version.

- `uuid` (string, required) — The template's unique identifier, used to read and manage the template.
- `orgId` (integer, required) — The numeric identifier of the organization that owns the template.
- `orgName` (string, required, nullable) — The name of the organization that owns the template.
- `name` (string, required) — The template's display name.
- `description` (string, required, nullable) — An optional description of the template.
- `slug` (string, required, nullable) — An optional URL-friendly identifier for the template.
- `status` (enum, required) — The template's lifecycle status.
  - Allowed values: `active`, `archived`
- `currentVersionUuid` (string, required) — The UUID of the template's active content version.
- `currentVersion` (TemplateVersion, required) — The template's active content version.
- `isInherited` (boolean, required) — Whether the template is inherited from an ancestor organization rather than owned directly.
- `readOnly` (boolean, required) — Whether the template is read-only for the calling organization.
- `createdBy` (string, required) — The identifier of the user who created the template.
- `updatedBy` (string, required) — The identifier of the user who last updated the template.
- `createdAt` (string, required) — When the template was created.
- `updatedAt` (string, required) — When the template was last updated.

### PayabliErrorBodyResponseData

Object with detailed error context.

- `explanation` (string, optional) — Human-readable explanation of what happened.
- `todoAction` (string, optional) — Suggested resolution.

### TemplateVersion

An immutable snapshot of a template's content. Each save in the Payabli Portal appends a new version; the template's `currentVersionUuid` points at the active one. The configuration objects (services, documents, devices, and so on) are authored in the Portal.

- `uuid` (string, required) — The version's unique identifier.
- `version` (integer, required) — The version number, starting at 1 and incrementing on each save.
- `services` (TemplateVersionServices, required, nullable) — The processing services offered on the boarding form. Configured in the Payabli Portal.
- `fieldConfigurations` (list of any, required, nullable) — Per-field configuration for the boarding form. Configured in the Payabli Portal.
- `conditionalRules` (list of any, required, nullable) — Rules that show, hide, or require fields based on other answers. Configured in the Payabli Portal.
- `documents` (list of any, required, nullable) — Document upload requirements for the boarding form. Configured in the Payabli Portal.
- `devices` (list of any, required, nullable) — The devices offered during boarding. Configured in the Payabli Portal.
- `hiddenSections` (list of any, required, nullable) — Sections hidden from the boarding form. Configured in the Payabli Portal.
- `allowedMccs` (list of integer, required, nullable) — The merchant category codes (MCCs) allowed for applications from this template. Configured in the Payabli Portal.
- `underwriting` (enum, required) — How applications from this template are underwritten.
  - Allowed values: `automatic`, `manual`, `bypass`
- `mpaContent` (string, required, nullable) — The merchant processing agreement content shown during boarding.
- `payinPricingId` (integer, required, nullable) — The Pay In pricing configuration applied to applications from this template.
- `payoutPricingId` (integer, required, nullable) — The Pay Out pricing configuration applied to applications from this template.
- `allowGuidedTour` (boolean, required) — Whether the boarding form shows a guided tour.
- `allowBusinessPrefill` (boolean, required) — Whether business fields can be prefilled.
- `allowSaveForLater` (boolean, required) — Whether applicants can save progress and resume later.
- `allowMultipleBanks` (boolean, required) — Whether applicants can add more than one bank account.
- `allowServiceSelection` (boolean, required) — Whether applicants can choose their processing services.
- `allowDeviceSelection` (boolean, required) — Whether applicants can select devices.
- `allowAmigoChat` (boolean, required) — Whether the Amigo assistant is available during boarding.
- `allowUserCreation` (boolean, required) — Whether applicants can create a user account during boarding.
- `allowPeoplePrefill` (boolean, required) — Whether people fields can be prefilled.
- `verticalProgress` (boolean, required) — Whether the progress indicator is shown vertically.
- `useFloatingInputs` (boolean, required) — Whether form inputs use floating labels.
- `centerContent` (boolean, required) — Whether the boarding form content is centered.
- `allowRealTimeBankVerification` (boolean, required) — Whether bank accounts are verified in real time.
- `allowCheckboxSigning` (boolean, required) — Whether applicants can sign with a checkbox.
- `allowTypedSignature` (boolean, required) — Whether applicants can sign by typing their name.
- `allowWrittenSignature` (boolean, required) — Whether applicants can sign by drawing a signature.
- `allowMultiOwnerEsign` (boolean, required) — Whether multiple owners can e-sign the application.
- `allowConfirmationAndAttestation` (boolean, required) — Whether the confirmation and attestation step is shown.
- `allowPCIAttestation` (boolean, required) — Whether the PCI attestation step is shown.
- `createdAt` (string, required) — When the version was created.
- `createdBy` (string, required) — The identifier of the user who created the version.

### TemplateVersionServices

The processing services offered on the boarding form. Configured in the Payabli Portal.

## Examples

**Response**

```json
{
  "Summary": {
    "totalPages": 1,
    "totalRecords": 1,
    "pageSize": 20
  },
  "Records": [
    {
      "uuid": "019ff129-d393-7761-9a31-e5afe85b4081",
      "orgId": 123,
      "orgName": "PropertyManager Pro",
      "name": "Standard boarding template",
      "description": null,
      "slug": null,
      "status": "active",
      "currentVersionUuid": "019ff129-d396-74c4-86da-ae3d082d7ef9",
      "currentVersion": {
        "uuid": "019ff129-d396-74c4-86da-ae3d082d7ef9",
        "version": 1,
        "services": {
          "ach": "merchantDecision",
          "card": "preSelected",
          "checkRdc": "merchantDecision"
        },
        "fieldConfigurations": [
          {
            "attributes": [
              "required",
              "visible"
            ],
            "defaultValue": null,
            "fieldPath": "business.website",
            "hint": null,
            "label": "Website"
          },
          {
            "attributes": [
              "required",
              "visible"
            ],
            "custom": true,
            "defaultValue": null,
            "fieldPath": "business.salesChannel",
            "hint": null,
            "label": "Sales Channel",
            "options": [
              "In-Store",
              "Online",
              "Both"
            ],
            "questionType": "multipleChoiceSingle"
          },
          {
            "attributes": [
              "required",
              "visible"
            ],
            "custom": true,
            "defaultValue": null,
            "fieldPath": "business.customerType",
            "hint": null,
            "label": "Primary Customer Type",
            "options": [
              "B2B",
              "B2C",
              "Both"
            ],
            "questionType": "multipleChoiceSingle"
          },
          {
            "attributes": [
              "required",
              "visible"
            ],
            "custom": true,
            "defaultValue": null,
            "fieldPath": "business.yearsInBusiness",
            "hint": null,
            "label": "Years in Business",
            "options": [
              "Less than 1",
              "1-3",
              "3-5",
              "5-10",
              "10+"
            ],
            "questionType": "dropdown"
          },
          {
            "attributes": [
              "visible"
            ],
            "custom": true,
            "defaultValue": null,
            "fieldPath": "business.refundPolicy",
            "hint": null,
            "label": "Describe your refund policy",
            "options": null,
            "questionType": "textarea"
          }
        ],
        "conditionalRules": [
          {
            "actions": [
              {
                "actionType": "setFieldAttributes",
                "fieldPath": "business.website",
                "readOnly": null,
                "required": true,
                "visible": null
              }
            ],
            "conditions": [
              {
                "fieldPath": "business.salesChannel",
                "operator": "equals",
                "value": "Online"
              }
            ],
            "description": "Require the website field when sales happen online.",
            "enabled": true,
            "matchMode": "all",
            "ruleName": "require-website-online"
          },
          {
            "actions": [
              {
                "actionType": "setFieldAttributes",
                "fieldPath": "business.refundPolicy",
                "readOnly": null,
                "required": true,
                "visible": true
              }
            ],
            "conditions": [
              {
                "fieldPath": "business.merchantCatCode",
                "operator": "equals",
                "value": "3000"
              }
            ],
            "description": "Require the refund policy field when the merchant category code (MCC) is 3000 (airlines).",
            "enabled": true,
            "matchMode": "all",
            "ruleName": "require-refund-policy-airlines"
          }
        ],
        "documents": [
          {
            "allowedFormats": [
              "pdf",
              "jpg",
              "png"
            ],
            "attributes": [
              "required",
              "visible"
            ],
            "fieldPath": "documents.bankStatement",
            "hint": "3 most recent months",
            "label": "Bank Statement",
            "maxUploads": 3,
            "preset": true
          }
        ],
        "devices": [
          {
            "deviceId": "ingenico_axium_dx8",
            "preSelected": false
          },
          {
            "deviceId": "ingenico_axium_rx9000",
            "preSelected": false
          }
        ],
        "hiddenSections": [
          "welcome"
        ],
        "allowedMccs": [
          5200,
          8998
        ],
        "underwriting": "automatic",
        "mpaContent": "<p>Merchant Processing Agreement</p>",
        "payinPricingId": 1289,
        "payoutPricingId": null,
        "allowGuidedTour": false,
        "allowBusinessPrefill": true,
        "allowSaveForLater": true,
        "allowMultipleBanks": true,
        "allowServiceSelection": true,
        "allowDeviceSelection": true,
        "allowAmigoChat": true,
        "allowUserCreation": true,
        "allowPeoplePrefill": false,
        "verticalProgress": true,
        "useFloatingInputs": false,
        "centerContent": true,
        "allowRealTimeBankVerification": true,
        "allowCheckboxSigning": true,
        "allowTypedSignature": true,
        "allowWrittenSignature": true,
        "allowMultiOwnerEsign": false,
        "allowConfirmationAndAttestation": true,
        "allowPCIAttestation": false,
        "createdAt": "2026-07-01T15:00:01.038310",
        "createdBy": "0"
      },
      "isInherited": false,
      "readOnly": false,
      "createdBy": "0",
      "updatedBy": "0",
      "createdAt": "2026-07-01T15:00:01.035727",
      "updatedAt": "2026-07-01T15:00:01.040548"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api-sandbox.payabli.com/api/v2/templates"

querystring = {"orgId":"123"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api-sandbox.payabli.com/api/v2/templates?orgId=123';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.payabli.com/api/v2/templates?orgId=123"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.payabli.com/api/v2/templates?orgId=123")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-sandbox.payabli.com/api/v2/templates?orgId=123")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-sandbox.payabli.com/api/v2/templates?orgId=123', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api-sandbox.payabli.com/api/v2/templates?orgId=123");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/templates?orgId=123")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```