> 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

# Add a location for a business with the API

> Learn how to board a new location for a business that's already on Payabli, reusing the business's details, people, and bank accounts

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

When a business that's already on Payabli opens a new location, board the location as a new paypoint for the same business. The new paypoint uses the business's existing details, people, and bank accounts, so you don't enter them again. You create the paypoint, then open an application for it that lists the services the location needs, validate it, and submit it for review. For how businesses and paypoints fit together, see [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).
* You need the `businessReference` of the business that's opening the location.
* A business can have more than one application open at a time, one for each paypoint. Send the new paypoint's `paypointReference` when you create the application. If you leave it out, Payabli picks one of the business's paypoints for you.

## Create the location's paypoint

Send a `POST` request to `/v2/paypoints` with the `businessReference` and the location's `doingBusinessAs`. Payabli creates the paypoint under the existing business, and the paypoint starts in `pending`. See the [API reference](/developers/api-reference/paypoints/create-a-paypoint) for this endpoint for full documentation.

### Request

POST [https://api-sandbox.payabli.com/api/v2/paypoints](https://api-sandbox.payabli.com/api/v2/paypoints)

**`CreatePaypointNewLocation`**

```curl CreatePaypointNewLocation
curl -X POST https://api-sandbox.payabli.com/api/v2/paypoints \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
  "doingBusinessAs": "Rose Gardens Downtown",
  "paypointType": "merchant",
  "timezone": "America/New_York"
}'
```

**`CreatePaypointNewLocation`**

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

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.paypoints.createPaypoint({
        paypointType: "merchant",
        doingBusinessAs: "Rose Gardens Downtown",
        timezone: "America/New_York",
        businessReference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
    });
}
main();

```

**`CreatePaypointNewLocation`**

```python CreatePaypointNewLocation
from payabli import payabli, CreatePaypointWithBusinessReference

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

client.paypoints.create_paypoint(
    request=CreatePaypointWithBusinessReference(
        paypoint_type="merchant",
        doing_business_as="Rose Gardens Downtown",
        timezone="America/New_York",
        business_reference="019fed1a-3d6e-75d3-a81e-cba3874b0a55",
    ),
)

```

**`CreatePaypointNewLocation`**

```java CreatePaypointNewLocation
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.paypoints.types.CreatePaypointPaypointsRequest;
import io.github.payabli.api.types.CreatePaypointWithBusinessReference;
import java.util.Optional;

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

        client.paypoints().createPaypoint(
            CreatePaypointPaypointsRequest.of(
                CreatePaypointWithBusinessReference
                    .builder()
                    .doingBusinessAs("Rose Gardens Downtown")
                    .businessReference("019fed1a-3d6e-75d3-a81e-cba3874b0a55")
                    .paypointType(Optional.of("merchant"))
                    .timezone(Optional.of("America/New_York"))
                    .build()
            )
        );
    }
}
```

**`CreatePaypointNewLocation`**

```csharp CreatePaypointNewLocation
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.Paypoints.CreatePaypointAsync(
            new CreatePaypointWithBusinessReference {
                PaypointType = "merchant",
                DoingBusinessAs = "Rose Gardens Downtown",
                Timezone = "America/New_York",
                BusinessReference = "019fed1a-3d6e-75d3-a81e-cba3874b0a55"
            }
        );
    }

}

```

**`CreatePaypointNewLocation`**

```go CreatePaypointNewLocation
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.CreatePaypointPaypointsRequest{
        CreatePaypointWithBusinessReference: &payabli.CreatePaypointWithBusinessReference{
            BusinessReference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
            DoingBusinessAs: "Rose Gardens Downtown",
            PaypointType: payabli.String(
                "merchant",
            ),
            Timezone: payabli.String(
                "America/New_York",
            ),
        },
    }
    client.Paypoints.CreatePaypoint(
        context.TODO(),
        request,
    )
}

```

**`CreatePaypointNewLocation`**

```php CreatePaypointNewLocation
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Types\CreatePaypointWithBusinessReference;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->paypoints->createPaypoint(
    new CreatePaypointWithBusinessReference([
        'paypointType' => 'merchant',
        'doingBusinessAs' => 'Rose Gardens Downtown',
        'timezone' => 'America/New_York',
        'businessReference' => '019fed1a-3d6e-75d3-a81e-cba3874b0a55',
    ]),
);

```

**`CreatePaypointNewLocation`**

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

url = URI("https://api-sandbox.payabli.com/api/v2/paypoints")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"businessReference\": \"019fed1a-3d6e-75d3-a81e-cba3874b0a55\",\n  \"doingBusinessAs\": \"Rose Gardens Downtown\",\n  \"paypointType\": \"merchant\",\n  \"timezone\": \"America/New_York\"\n}"

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

**`CreatePaypointNewLocation`**

```swift CreatePaypointNewLocation
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
  "doingBusinessAs": "Rose Gardens Downtown",
  "paypointType": "merchant",
  "timezone": "America/New_York"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/paypoints")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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 new paypoint. Note its `paypointReference` for the next step:

### Response (201)

```json
{
  "success": true,
  "message": "Paypoint created successfully",
  "traceId": "0HNP8M3LB1GJU:0000008B",
  "data": {
    "paypointReference": "019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
    "paypointStatus": "pending",
    "createdAt": "2026-10-13T14:38:25.9924683Z",
    "_links": {
      "self": "/v2/paypoints/019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
      "business": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55"
    },
    "businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
    "doingBusinessAs": "Rose Gardens Downtown",
    "timezone": "America/New_York"
  }
}
```

## Create the application

Send a `POST` request to `/v2/requests` with the `businessReference`, the new paypoint's `paypointReference`, and a `services` object that lists the services the location needs. List Pay In services under `moneyIn` and Pay Out services under `moneyOut`. Include `requestTemplate` with the reference of your organization's boarding template, because Payabli reviews the application with the template's underwriting settings. See the [API reference](/developers/api-reference/applications/create-an-application) for this endpoint for full documentation.

### Request

POST [https://api-sandbox.payabli.com/api/v2/requests](https://api-sandbox.payabli.com/api/v2/requests)

**`CreateApplicationForNewLocation`**

```curl CreateApplicationForNewLocation
curl -X POST https://api-sandbox.payabli.com/api/v2/requests \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
  "paypointReference": "019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
  "externalId": "APP-2026-1013",
  "requestTemplate": "019ff129-d393-7761-9a31-e5afe85b4081",
  "services": {
    "moneyIn": [
      "Card"
    ]
  }
}'
```

**`CreateApplicationForNewLocation`**

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

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.applications.createApplication({
        businessReference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
        paypointReference: "019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
        externalId: "APP-2026-1013",
        requestTemplate: "019ff129-d393-7761-9a31-e5afe85b4081",
        services: {
            moneyIn: [
                "Card",
            ],
        },
    });
}
main();

```

**`CreateApplicationForNewLocation`**

```python CreateApplicationForNewLocation
from payabli import payabli, RequestedServices

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

client.applications.create_application(
    business_reference="019fed1a-3d6e-75d3-a81e-cba3874b0a55",
    paypoint_reference="019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
    external_id="APP-2026-1013",
    request_template="019ff129-d393-7761-9a31-e5afe85b4081",
    services=RequestedServices(
        money_in=[
            "Card"
        ],
    ),
)

```

**`CreateApplicationForNewLocation`**

```java CreateApplicationForNewLocation
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.applications.requests.CreateApplicationRequest;
import io.github.payabli.api.types.MoneyInService;
import io.github.payabli.api.types.RequestedServices;
import java.util.Arrays;
import java.util.Optional;

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

        client.applications().createApplication(
            CreateApplicationRequest
                .builder()
                .businessReference("019fed1a-3d6e-75d3-a81e-cba3874b0a55")
                .paypointReference("019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3")
                .externalId("APP-2026-1013")
                .requestTemplate("019ff129-d393-7761-9a31-e5afe85b4081")
                .services(
                    RequestedServices
                        .builder()
                        .moneyIn(
                            Optional.of(
                                Arrays.asList(MoneyInService.CARD)
                            )
                        )
                        .build()
                )
                .build()
        );
    }
}
```

**`CreateApplicationForNewLocation`**

```csharp CreateApplicationForNewLocation
using PayabliApi;
using System.Threading.Tasks;
using System.Collections.Generic;

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

        await client.Applications.CreateApplicationAsync(
            new CreateApplicationRequest {
                BusinessReference = "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
                PaypointReference = "019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
                ExternalId = "APP-2026-1013",
                RequestTemplate = "019ff129-d393-7761-9a31-e5afe85b4081",
                Services = new RequestedServices {
                    MoneyIn = new List<MoneyInService>(){
                        MoneyInService.Card,
                    }

                }
            }
        );
    }

}

```

**`CreateApplicationForNewLocation`**

```go CreateApplicationForNewLocation
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.CreateApplicationRequest{
        BusinessReference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
        PaypointReference: payabli.String(
            "019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
        ),
        ExternalId: payabli.String(
            "APP-2026-1013",
        ),
        RequestTemplate: payabli.String(
            "019ff129-d393-7761-9a31-e5afe85b4081",
        ),
        Services: &payabli.RequestedServices{
            MoneyIn: []payabli.MoneyInService{
                payabli.MoneyInServiceCard,
            },
        },
    }
    client.Applications.CreateApplication(
        context.TODO(),
        request,
    )
}

```

**`CreateApplicationForNewLocation`**

```php CreateApplicationForNewLocation
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Applications\Requests\CreateApplicationRequest;
use Payabli\Types\RequestedServices;
use Payabli\Types\MoneyInService;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->applications->createApplication(
    new CreateApplicationRequest([
        'businessReference' => '019fed1a-3d6e-75d3-a81e-cba3874b0a55',
        'paypointReference' => '019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3',
        'externalId' => 'APP-2026-1013',
        'requestTemplate' => '019ff129-d393-7761-9a31-e5afe85b4081',
        'services' => new RequestedServices([
            'moneyIn' => [
                MoneyInService::Card->value,
            ],
        ]),
    ]),
);

```

**`CreateApplicationForNewLocation`**

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

url = URI("https://api-sandbox.payabli.com/api/v2/requests")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"businessReference\": \"019fed1a-3d6e-75d3-a81e-cba3874b0a55\",\n  \"paypointReference\": \"019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3\",\n  \"externalId\": \"APP-2026-1013\",\n  \"requestTemplate\": \"019ff129-d393-7761-9a31-e5afe85b4081\",\n  \"services\": {\n    \"moneyIn\": [\n      \"Card\"\n    ]\n  }\n}"

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

**`CreateApplicationForNewLocation`**

```swift CreateApplicationForNewLocation
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
  "paypointReference": "019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
  "externalId": "APP-2026-1013",
  "requestTemplate": "019ff129-d393-7761-9a31-e5afe85b4081",
  "services": ["moneyIn": ["Card"]]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/requests")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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 new application in `draft`, linked to the new paypoint. The `requestsReference` identifies the application in the next steps:

### Response (201)

```json
{
  "success": true,
  "message": "Application created successfully",
  "traceId": "0HNP8M4GTH3JG:00000003",
  "data": {
    "requestsReference": "b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
    "businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
    "applicationStatus": "draft",
    "applicationStatusCode": 1,
    "allowedActions": [
      "submit",
      "withdraw",
      "abandon"
    ],
    "createdAt": "2026-10-13T14:42:31.0326419Z",
    "_links": {
      "self": "/v2/requests/b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
      "business": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55"
    },
    "paypointReference": "019ff3a8-2c41-7b0e-9d52-6e1f0c84a7b3",
    "paypointStatus": "pending",
    "externalId": "APP-2026-1013",
    "parent": "a8806f02-23b3-4f6d-bba3-42e1b94326ea",
    "parentOrgName": "PropertyManager Pro",
    "requestTemplate": "019ff129-d393-7761-9a31-e5afe85b4081",
    "services": {
      "moneyIn": [
        "Card"
      ]
    }
  }
}
```

## Validate the application

Check that the business, its people, and its payment methods have everything the requested services need. Send a `POST` request to `/v2/requests/{requestsReference}/validate`. Validation doesn't change the application. See the [API reference](/developers/api-reference/applications/validate-an-application) for this endpoint for full documentation.

### Request

POST [https://api-sandbox.payabli.com/api/v2/requests/\{requestsReference}/validate](https://api-sandbox.payabli.com/api/v2/requests/\{requestsReference}/validate)

**`ValidateNewLocationApplication`**

```curl ValidateNewLocationApplication
curl -X POST https://api-sandbox.payabli.com/api/v2/requests/b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406/validate \
     -H "Authorization: Bearer <token>"
```

**`ValidateNewLocationApplication`**

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

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.applications.validateApplication("b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406");
}
main();

```

**`ValidateNewLocationApplication`**

```python ValidateNewLocationApplication
from payabli import payabli

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

client.applications.validate_application(
    requests_reference="b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
)

```

**`ValidateNewLocationApplication`**

```java ValidateNewLocationApplication
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.applications().validateApplication("b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406");
    }
}
```

**`ValidateNewLocationApplication`**

```csharp ValidateNewLocationApplication
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.Applications.ValidateApplicationAsync(
            "b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406"
        );
    }

}

```

**`ValidateNewLocationApplication`**

```go ValidateNewLocationApplication
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.Applications.ValidateApplication(
        context.TODO(),
        "b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
    )
}

```

**`ValidateNewLocationApplication`**

```php ValidateNewLocationApplication
<?php

namespace Example;

use Payabli\PayabliClient;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->applications->validateApplication(
    'b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406',
);

```

**`ValidateNewLocationApplication`**

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

url = URI("https://api-sandbox.payabli.com/api/v2/requests/b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406/validate")

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

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

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

**`ValidateNewLocationApplication`**

```swift ValidateNewLocationApplication
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/requests/b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
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()
```

When the location requests the same services as the business's other paypoints, the business already has everything validation checks, so the application can be valid right away:

### Response (200)

```json
{
  "success": true,
  "message": "Validation completed",
  "traceId": "0HNP8M4GTH3J0:00000015",
  "data": {
    "valid": true,
    "servicesEvaluated": [
      "payInCard"
    ],
    "sections": {
      "business": {
        "complete": true,
        "missingFields": []
      },
      "salesAndPayments": {
        "complete": true,
        "missingFields": []
      },
      "banking": {
        "complete": true,
        "missingFields": []
      },
      "people": {
        "complete": true,
        "missingFields": []
      }
    }
  }
}
```

When the location requests services the business's other paypoints don't have, those services can require fields that aren't on file yet. In that case, `valid` is `false` and each section lists its `missingFields`. The `field` value is the path on the record to fix, such as `business.taxReference`. Update that record, then validate again. A new location's application can also require documents, even for services the business already has, because document requirements belong to each application. If a `field` starts with `documents.`, it's a required document, not a record field: upload the file to the application instead. See [Upload documents](/guides/pay-ops-developer-applications-manage#upload-documents).

## Submit the application

Send a `POST` request to `/v2/requests/{requestsReference}/submit` with a `signer` object that holds the signature details. The signer must be an owner of the business. For how to choose the signer, see [Submit an application](/guides/pay-ops-developer-applications-manage#submit-an-application). See the [API reference](/developers/api-reference/applications/submit-an-application) for this endpoint for full documentation.

### Request

POST [https://api-sandbox.payabli.com/api/v2/requests/\{requestsReference}/submit](https://api-sandbox.payabli.com/api/v2/requests/\{requestsReference}/submit)

**`SubmitNewLocationApplication`**

```curl SubmitNewLocationApplication
curl -X POST https://api-sandbox.payabli.com/api/v2/requests/b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406/submit \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "signer": {
    "personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
    "signature": "Marcus J Delgado",
    "signatureType": "type",
    "acceptance": true,
    "pciAttestation": true,
    "reportedSignerIp": "203.0.113.7"
  }
}'
```

**`SubmitNewLocationApplication`**

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

async function main() {
    const client = new PayabliClient({
        bearerAuth: {
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET",
        },
    });
    await client.applications.submitApplication("b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406", {
        signer: {
            personReference: "01a0014d-ce1a-7110-9bac-c4c59647a88d",
            signature: "Marcus J Delgado",
            signatureType: "type",
            acceptance: true,
            pciAttestation: true,
            reportedSignerIp: "203.0.113.7",
        },
    });
}
main();

```

**`SubmitNewLocationApplication`**

```python SubmitNewLocationApplication
from payabli import payabli, SubmitSigner

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

client.applications.submit_application(
    requests_reference="b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
    signer=SubmitSigner(
        person_reference="01a0014d-ce1a-7110-9bac-c4c59647a88d",
        signature="Marcus J Delgado",
        signature_type="type",
        acceptance=True,
        pci_attestation=True,
        reported_signer_ip="203.0.113.7",
    ),
)

```

**`SubmitNewLocationApplication`**

```java SubmitNewLocationApplication
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.applications.requests.SubmitApplicationRequest;
import io.github.payabli.api.types.SignatureType;
import io.github.payabli.api.types.SubmitSigner;

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

        client.applications().submitApplication(
            "b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
            SubmitApplicationRequest
                .builder()
                .signer(
                    SubmitSigner
                        .builder()
                        .personReference("01a0014d-ce1a-7110-9bac-c4c59647a88d")
                        .signature("Marcus J Delgado")
                        .signatureType(SignatureType.TYPE)
                        .acceptance(true)
                        .pciAttestation(true)
                        .reportedSignerIp("203.0.113.7")
                        .build()
                )
                .build()
        );
    }
}
```

**`SubmitNewLocationApplication`**

```csharp SubmitNewLocationApplication
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.Applications.SubmitApplicationAsync(
            requestsReference: "b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
            request: new SubmitApplicationRequest {
                Signer = new SubmitSigner {
                    PersonReference = "01a0014d-ce1a-7110-9bac-c4c59647a88d",
                    Signature = "Marcus J Delgado",
                    SignatureType = SignatureType.Type,
                    Acceptance = true,
                    PciAttestation = true,
                    ReportedSignerIp = "203.0.113.7"
                }
            }
        );
    }

}

```

**`SubmitNewLocationApplication`**

```go SubmitNewLocationApplication
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.SubmitApplicationRequest{
        Signer: &payabli.SubmitSigner{
            PersonReference: payabli.String(
                "01a0014d-ce1a-7110-9bac-c4c59647a88d",
            ),
            Signature: payabli.String(
                "Marcus J Delgado",
            ),
            SignatureType: payabli.SignatureTypeType.Ptr(),
            Acceptance: payabli.Bool(
                true,
            ),
            PciAttestation: payabli.Bool(
                true,
            ),
            ReportedSignerIp: payabli.String(
                "203.0.113.7",
            ),
        },
    }
    client.Applications.SubmitApplication(
        context.TODO(),
        "b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
        request,
    )
}

```

**`SubmitNewLocationApplication`**

```php SubmitNewLocationApplication
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Applications\Requests\SubmitApplicationRequest;
use Payabli\Types\SubmitSigner;
use Payabli\Types\SignatureType;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->applications->submitApplication(
    'b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406',
    new SubmitApplicationRequest([
        'signer' => new SubmitSigner([
            'personReference' => '01a0014d-ce1a-7110-9bac-c4c59647a88d',
            'signature' => 'Marcus J Delgado',
            'signatureType' => SignatureType::Type->value,
            'acceptance' => true,
            'pciAttestation' => true,
            'reportedSignerIp' => '203.0.113.7',
        ]),
    ]),
);

```

**`SubmitNewLocationApplication`**

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

url = URI("https://api-sandbox.payabli.com/api/v2/requests/b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406/submit")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"signer\": {\n    \"personReference\": \"01a0014d-ce1a-7110-9bac-c4c59647a88d\",\n    \"signature\": \"Marcus J Delgado\",\n    \"signatureType\": \"type\",\n    \"acceptance\": true,\n    \"pciAttestation\": true,\n    \"reportedSignerIp\": \"203.0.113.7\"\n  }\n}"

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

**`SubmitNewLocationApplication`**

```swift SubmitNewLocationApplication
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["signer": [
    "personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
    "signature": "Marcus J Delgado",
    "signatureType": "type",
    "acceptance": true,
    "pciAttestation": true,
    "reportedSignerIp": "203.0.113.7"
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/requests/b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406/submit")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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 application's new status:

### Response (200)

```json
{
  "success": true,
  "message": "Application submitted",
  "traceId": "0HNP8M4GTH3IP:0000001B",
  "data": {
    "requestsReference": "b7e2c915-4f0a-4d6b-a3c8-91e5d2f7c406",
    "applicationStatus": "submitted",
    "allowedActions": [
      "startVerification",
      "withdraw",
      "abandon",
      "markError"
    ]
  }
}
```

After you submit the application, it moves through review. To answer underwriting, see [Respond to underwriting requests](/guides/pay-ops-developer-applications-manage#respond-to-underwriting-requests). To follow the application's progress, see [Track status changes](/guides/pay-ops-developer-applications-manage#track-status-changes).

## Related resources

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

#### References

* **[Boarding application statuses](/guides/pay-ops-boarding-application-status-reference)** - Learn about the statuses a boarding application moves through and what moves it from one status to the next

#### Related topics

* **[Board a new business with the API](/guides/pay-ops-developer-boarding-new-entity-paypoint)** - Learn how to board a new business from scratch, starting with its paypoint
* **[Manage paypoints with the API](/guides/pay-ops-developer-boarding-paypoints-manage)** - Learn how to create, read, update, and list boarding paypoints with the Payabli API
* **[Manage applications with the API](/guides/pay-ops-developer-applications-manage)** - Learn how to create, submit, and track boarding applications with the Payabli API
* **[Intelligent boarding overview](/guides/pay-ops-boarding-object-model-overview)** - Understand the objects and application lifecycle behind intelligent boarding paypoints on Payabli