> 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

# Manage boarding templates with the API

> Learn how to list, read, update, and archive boarding templates with the Payabli API

> **Note**
>
> Intelligent boarding is in beta. To opt in, reach out to your Payabli contact.

A boarding template shapes the application experience for your customers: the services, fields, documents, and options an applicant sees. Tailor a template to a specific customer or paypoint type — for example, to prefill known details, or to apply a stricter flow for high-risk boarding. You can set a template up for Pay In, Pay Out, or both. Use the boarding templates API to find templates, read their content, and manage them as you board. For how templates fit into the wider model, see the [boarding overview](/guides/pay-ops-boarding-object-model-overview).

## Considerations

* The boarding API uses OAuth2. Send a Bearer token on every request. See [OAuth2 authentication](/developers/oauth-authentication).
* Templates are created and edited in the Payabli Portal. This API reads templates and their versions, and archives templates.
* An organization can use templates it owns and templates inherited from ancestor organizations. Scope a listing with the required `orgId` query parameter.

## List templates

Send a `GET` request to `/v2/templates` with the required `orgId` query parameter. The response includes templates the organization owns plus templates inherited from ancestor organizations. Filter by `status`, `name`, `slug`, `orgName`, and `inherited`, and page with `fromRecord` and `limitRecord`. See the [API reference](/developers/api-reference/boarding-templates/list-templates) for this endpoint for full documentation.

### Request

GET [https://api-sandbox.payabli.com/api/v2/templates](https://api-sandbox.payabli.com/api/v2/templates)

```curl
curl -G https://api-sandbox.payabli.com/api/v2/templates \
     -H "Authorization: Bearer <token>" \
     -d orgId=123
```

```typescript
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.boardingTemplates.listTemplates({
        orgId: 123,
    });
}
main();

```

```python
from payabli import payabli

client = payabli(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
)

client.boarding_templates.list_templates(
    org_id=123,
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.boardingtemplates.requests.ListTemplatesBoardingTemplatesRequest;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient.withCredentials("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
            .build()
        ;

        client.boardingTemplates().listTemplates(
            ListTemplatesBoardingTemplatesRequest
                .builder()
                .orgId(123)
                .build()
        );
    }
}
```

```csharp
using PayabliApi;
using System.Threading.Tasks;

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient(
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET"
        );

        await client.BoardingTemplates.ListTemplatesAsync(
            new ListTemplatesBoardingTemplatesRequest {
                OrgId = 123
            }
        );
    }

}

```

```go
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithClientCredentials(
            "YOUR_CLIENT_ID",
            "YOUR_CLIENT_SECRET",
        ),
    )
    request := &payabli.ListTemplatesBoardingTemplatesRequest{
        OrgId: 123,
    }
    client.BoardingTemplates.ListTemplates(
        context.TODO(),
        request,
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\BoardingTemplates\Requests\ListTemplatesBoardingTemplatesRequest;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->boardingTemplates->listTemplates(
    new ListTemplatesBoardingTemplatesRequest([
        'orgId' => 123,
    ]),
);

```

```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
```

```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()
```

The response returns a page of templates with pagination metadata:

### Response (200)

```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"
    }
  ]
}
```

## Get a template

Send a `GET` request to `/v2/templates/{uuid}`. The response includes the template's current content version. See the [API reference](/developers/api-reference/boarding-templates/get-a-template) for this endpoint for full documentation.

### Request

GET [https://api-sandbox.payabli.com/api/v2/templates/\{uuid}](https://api-sandbox.payabli.com/api/v2/templates/\{uuid})

```curl
curl https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081 \
     -H "Authorization: Bearer <token>"
```

```typescript
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.boardingTemplates.getTemplate("019ff129-d393-7761-9a31-e5afe85b4081");
}
main();

```

```python
from payabli import payabli

client = payabli(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
)

client.boarding_templates.get_template(
    uuid_="019ff129-d393-7761-9a31-e5afe85b4081",
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient.withCredentials("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
            .build()
        ;

        client.boardingTemplates().getTemplate("019ff129-d393-7761-9a31-e5afe85b4081");
    }
}
```

```csharp
using PayabliApi;
using System.Threading.Tasks;

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient(
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET"
        );

        await client.BoardingTemplates.GetTemplateAsync(
            "019ff129-d393-7761-9a31-e5afe85b4081"
        );
    }

}

```

```go
package example

import (
    context "context"

    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithClientCredentials(
            "YOUR_CLIENT_ID",
            "YOUR_CLIENT_SECRET",
        ),
    )
    client.BoardingTemplates.GetTemplate(
        context.TODO(),
        "019ff129-d393-7761-9a31-e5afe85b4081",
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->boardingTemplates->getTemplate(
    '019ff129-d393-7761-9a31-e5afe85b4081',
);

```

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

url = URI("https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081")

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
```

```swift
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081")! 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()
```

The response returns the template and its current version:

### Response (200)

```json
{
  "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"
}
```

The `currentVersionUuid` points at the active version. Each save in the Portal appends a new version, so you can read an earlier one by its own UUID.

## Get a template version

Send a `GET` request to `/v2/templates/{uuid}/versions/{versionUuid}` to read a specific content version. Versions are immutable snapshots. See the [API reference](/developers/api-reference/boarding-templates/get-a-template-version) for this endpoint for full documentation.

### Request

GET [https://api-sandbox.payabli.com/api/v2/templates/\{uuid}/versions/\{versionUuid}](https://api-sandbox.payabli.com/api/v2/templates/\{uuid}/versions/\{versionUuid})

```curl
curl https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081/versions/019ff129-d396-74c4-86da-ae3d082d7ef9 \
     -H "Authorization: Bearer <token>"
```

```typescript
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.boardingTemplates.getTemplateVersion("019ff129-d393-7761-9a31-e5afe85b4081", "019ff129-d396-74c4-86da-ae3d082d7ef9");
}
main();

```

```python
from payabli import payabli

client = payabli(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
)

client.boarding_templates.get_template_version(
    uuid_="019ff129-d393-7761-9a31-e5afe85b4081",
    version_uuid="019ff129-d396-74c4-86da-ae3d082d7ef9",
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient.withCredentials("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
            .build()
        ;

        client.boardingTemplates().getTemplateVersion("019ff129-d393-7761-9a31-e5afe85b4081", "019ff129-d396-74c4-86da-ae3d082d7ef9");
    }
}
```

```csharp
using PayabliApi;
using System.Threading.Tasks;

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient(
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET"
        );

        await client.BoardingTemplates.GetTemplateVersionAsync(
            "019ff129-d393-7761-9a31-e5afe85b4081",
            "019ff129-d396-74c4-86da-ae3d082d7ef9"
        );
    }

}

```

```go
package example

import (
    context "context"

    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithClientCredentials(
            "YOUR_CLIENT_ID",
            "YOUR_CLIENT_SECRET",
        ),
    )
    client.BoardingTemplates.GetTemplateVersion(
        context.TODO(),
        "019ff129-d393-7761-9a31-e5afe85b4081",
        "019ff129-d396-74c4-86da-ae3d082d7ef9",
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->boardingTemplates->getTemplateVersion(
    '019ff129-d393-7761-9a31-e5afe85b4081',
    '019ff129-d396-74c4-86da-ae3d082d7ef9',
);

```

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

url = URI("https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081/versions/019ff129-d396-74c4-86da-ae3d082d7ef9")

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
```

```swift
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081/versions/019ff129-d396-74c4-86da-ae3d082d7ef9")! 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()
```

The response returns the version snapshot:

### Response (200)

```json
{
  "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"
}
```

## Archive a template

Send a `DELETE` request to `/v2/templates/{uuid}`. This is a soft delete: the template moves to `archived` and stays readable. A successful archive returns `204 No Content`. Archiving a template that's already archived returns `409`. See the [API reference](/developers/api-reference/boarding-templates/archive-a-template) for this endpoint for full documentation.

### Request

DELETE [https://api-sandbox.payabli.com/api/v2/templates/\{uuid}](https://api-sandbox.payabli.com/api/v2/templates/\{uuid})

```curl
curl -X DELETE https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081 \
     -H "Authorization: Bearer <token>"
```

```typescript
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.boardingTemplates.archiveTemplate("019ff129-d393-7761-9a31-e5afe85b4081");
}
main();

```

```python
from payabli import payabli

client = payabli(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
)

client.boarding_templates.archive_template(
    uuid_="019ff129-d393-7761-9a31-e5afe85b4081",
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient.withCredentials("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
            .build()
        ;

        client.boardingTemplates().archiveTemplate("019ff129-d393-7761-9a31-e5afe85b4081");
    }
}
```

```csharp
using PayabliApi;
using System.Threading.Tasks;

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient(
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET"
        );

        await client.BoardingTemplates.ArchiveTemplateAsync(
            "019ff129-d393-7761-9a31-e5afe85b4081"
        );
    }

}

```

```go
package example

import (
    context "context"

    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithClientCredentials(
            "YOUR_CLIENT_ID",
            "YOUR_CLIENT_SECRET",
        ),
    )
    client.BoardingTemplates.ArchiveTemplate(
        context.TODO(),
        "019ff129-d393-7761-9a31-e5afe85b4081",
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->boardingTemplates->archiveTemplate(
    '019ff129-d393-7761-9a31-e5afe85b4081',
);

```

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

url = URI("https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081")

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

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

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

```swift
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/templates/019ff129-d393-7761-9a31-e5afe85b4081")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "DELETE"
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()
```

## Related resources

See these related resources to help you get the most out of Payabli.

#### Related topics

* **[Intelligent boarding overview](/guides/pay-ops-boarding-object-model-overview)** - Understand the objects and application lifecycle behind intelligent boarding paypoints on Payabli
* **[Decision guide: Merchant boarding](/guides/pay-ops-boarding-decision)** - Choose how your platform boards merchants with intelligent boarding