> 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 Ingenico Link and Lane devices

> Learn how to register, list, and unregister Ingenico Link and Lane devices with the Payabli API

Use Payabli's device management functions to register, unregister, and list Ingenico Link and Lane devices. For PAX devices, see [Manage PAX devices](/guides/pay-in-developer-devices-pax-manage). For AXIUM devices, see [Manage AXIUM devices](/guides/pay-in-developer-devices-axium-manage).

Supported models: Ingenico Link/2500 LE Cloud EMV and Ingenico Lane/7000 Cloud Deluxe.

## Register a device

Send a POST request to `/api/Cloud/register/{entry}` to register a new device. See the [API reference](/developers/api-reference/cloud/register-cloud-device) for this endpoint for full documentation.

#### Connect the device

Turn on the device and connect it to the internet.

#### Find the registration code

After you configure WiFi, an activation code appears on the screen. This is the `registrationCode` value you need for the next step. If you can't find the activation code, consult the device's documentation.

#### Register the device

Call the API with the activation code as `registrationCode`.

This example registers the device with the registration code `YS7DS5` to the `8cfec329267` paypoint, and gives it the description of "Front Desk POS".

### Request

POST [https://api-sandbox.payabli.com/api/Cloud/register/\{entry}](https://api-sandbox.payabli.com/api/Cloud/register/\{entry})

```curl
curl -X POST https://api-sandbox.payabli.com/api/Cloud/register/8cfec329267 \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "description": "Front Desk POS",
  "registrationCode": "YS7DS5"
}'
```

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

async function main() {
    const client = new PayabliClient();
    await client.cloud.addDevice("8cfec329267", {
        description: "Front Desk POS",
        registrationCode: "YS7DS5",
    });
}
main();

```

```python
from payabli import payabli

client = payabli()

client.cloud.add_device(
    entry="8cfec329267",
    description="Front Desk POS",
    registration_code="YS7DS5",
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.cloud.requests.DeviceEntry;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient
            .builder()
            .build();

        client.cloud().addDevice(
            "8cfec329267",
            DeviceEntry
                .builder()
                .description("Front Desk POS")
                .registrationCode("YS7DS5")
                .build()
        );
    }
}
```

```ruby
require "payabli"

client = Payabli::Client.new

client.cloud.add_device(
  entry: "8cfec329267",
  description: "Front Desk POS",
  registration_code: "YS7DS5"
)

```

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

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient();

        await client.Cloud.AddDeviceAsync(
            entry: "8cfec329267",
            request: new DeviceEntry {
                Description = "Front Desk POS",
                RegistrationCode = "YS7DS5"
            }
        );
    }

}

```

```go
package example

import (
    context "context"

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

func do() {
    client := client.NewClient()
    request := &payabli.DeviceEntry{
        Description: payabli.String(
            "Front Desk POS",
        ),
        RegistrationCode: payabli.String(
            "YS7DS5",
        ),
    }
    client.Cloud.AddDevice(
        context.TODO(),
        "8cfec329267",
        request,
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Cloud\Requests\DeviceEntry;

$client = new PayabliClient();
$client->cloud->addDevice(
    '8cfec329267',
    new DeviceEntry([
        'description' => 'Front Desk POS',
        'registrationCode' => 'YS7DS5',
    ]),
);

```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "description": "Front Desk POS",
  "registrationCode": "YS7DS5"
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Cloud/register/8cfec329267")! 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()
```

A successful registration returns a response with the device ID in the body.

### Response (200)

```json
{
  "responseText": "Success",
  "isSuccess": true,
  "responseData": "6c361c7d-674c-44cc-b790-382b75d1xxx"
}
```

## List devices

Send a GET request to `/api/Query/devices/{entry}` to retrieve the devices registered to a paypoint. For organization-wide results, use `/api/Query/devices/org/{orgId}`. The response includes every device model registered to the paypoint or organization; see [Devices overview](/guides/pay-in-devices-overview) for how to tell them apart.

This example lists devices for the `8cfec329267` paypoint.

### Request

GET [https://api-sandbox.payabli.com/api/Query/devices/\{entry}](https://api-sandbox.payabli.com/api/Query/devices/\{entry})

```curl
curl -G https://api-sandbox.payabli.com/api/Query/devices/8cfec329267 \
     -H "Authorization: Bearer <token>" \
     -d fromRecord=0 \
     -d limitRecord=20 \
     -d sortBy=desc(createdAt)
```

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

async function main() {
    const client = new PayabliClient();
    await client.query.listDevices("8cfec329267", {
        fromRecord: 0,
        limitRecord: 20,
        sortBy: "desc(createdAt)",
    });
}
main();

```

```python
from payabli import payabli

client = payabli()

client.query.list_devices(
    entry="8cfec329267",
    from_record=0,
    limit_record=20,
    sort_by="desc(createdAt)",
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.query.requests.ListDevicesRequest;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient
            .builder()
            .build();

        client.query().listDevices(
            "8cfec329267",
            ListDevicesRequest
                .builder()
                .fromRecord(0)
                .limitRecord(20)
                .sortBy("desc(createdAt)")
                .build()
        );
    }
}
```

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

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient();

        await client.Query.ListDevicesAsync(
            entry: "8cfec329267",
            request: new ListDevicesRequest {
                FromRecord = 0,
                LimitRecord = 20,
                SortBy = "desc(createdAt)"
            }
        );
    }

}

```

```go
package example

import (
    context "context"

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

func do() {
    client := client.NewClient()
    request := &payabli.ListDevicesRequest{
        FromRecord: payabli.Int(
            0,
        ),
        LimitRecord: payabli.Int(
            20,
        ),
        SortBy: payabli.String(
            "desc(createdAt)",
        ),
    }
    client.Query.ListDevices(
        context.TODO(),
        "8cfec329267",
        request,
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Query\Requests\ListDevicesRequest;

$client = new PayabliClient();
$client->query->listDevices(
    '8cfec329267',
    new ListDevicesRequest([
        'fromRecord' => 0,
        'limitRecord' => 20,
        'sortBy' => 'desc(createdAt)',
    ]),
);

```

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

url = URI("https://api-sandbox.payabli.com/api/Query/devices/8cfec329267?fromRecord=0&limitRecord=20&sortBy=desc%28createdAt%29")

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/Query/devices/8cfec329267?fromRecord=0&limitRecord=20&sortBy=desc%28createdAt%29")! 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 matching devices in `Records` and aggregate totals in `Summary`. Use `Summary.totalRecords` and `Summary.totalPages` with the `fromRecord` and `limitRecord` query parameters to page through results.

### Response (200)

```json
{
  "Summary": {
    "pageIdentifier": null,
    "pageSize": 20,
    "totalAmount": 0,
    "totalNetAmount": 0,
    "totalPages": 2,
    "totalRecords": 28
  },
  "Records": [
    {
      "deviceId": "499585-389fj484-3jcj8hj3",
      "idCloud": 142,
      "description": "Front Counter Terminal",
      "serialNumber": "SN-90210-XR",
      "friendlyName": "Front Counter",
      "make": null,
      "model": null,
      "deviceType": 1,
      "deviceStatus": 1,
      "deviceOs": null,
      "macAddress": "1A2B3C4D5E6F",
      "lastHealthCheck": "2026-04-09T14:49:42Z",
      "registrationCode": "REG-A1B2C3D4",
      "activationAttempts": 0,
      "activationCodeExpiry": "2026-04-09T14:49:42Z",
      "createdAt": "2026-04-09T01:14:37Z",
      "updatedAt": "2026-04-09T14:49:42Z",
      "paypointId": 3040,
      "paypointDba": "Gruzya Adventure Outfitters",
      "paypointLegal": "Gruzya Adventure Outfitters, LLC",
      "paypointEntry": "8cfec329267",
      "paypointLogo": "https://payabli-public-objects.s3.amazonaws.com/pe3040.png",
      "externalPaypointId": "GRUZYA-01",
      "parentOrgId": 100,
      "parentOrgName": "Mountain View Services",
      "transactionCount": 342,
      "volumeProcessed": 28650.75
    }
  ]
}
```

Filter and sort results with query parameters — for example, `status(eq)=1` for active devices only. The full list of filterable fields is on the [List devices by paypoint](/developers/api-reference/get-list-of-devices-for-a-paypoint) API reference; for operator syntax and pagination, see the [Filters and conditions reference](/guides/pay-ops-reporting-overview#filters-and-conditions-reference).

## Unregister a device

Send a DELETE request to `/api/Cloud/register/{entry}/{deviceId}` to remove a device registration. See the [API reference](/developers/api-reference/cloud/unregister-cloud-device) for this endpoint for full documentation.

This example unregisters the device with the deviceId `6c361c7d-674c-44cc-b790-382b75d1xxx` from the `8cfec329267` paypoint.

### Request

DELETE [https://api-sandbox.payabli.com/api/Cloud/register/\{entry}/\{deviceId}](https://api-sandbox.payabli.com/api/Cloud/register/\{entry}/\{deviceId})

```curl
curl -X DELETE https://api-sandbox.payabli.com/api/Cloud/register/8cfec329267/499585-389fj484-3jcj8hj3 \
     -H "Authorization: Bearer <token>"
```

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

async function main() {
    const client = new PayabliClient();
    await client.cloud.removeDevice("8cfec329267", "499585-389fj484-3jcj8hj3");
}
main();

```

```python
from payabli import payabli

client = payabli()

client.cloud.remove_device(
    entry="8cfec329267",
    device_id="499585-389fj484-3jcj8hj3",
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient
            .builder()
            .build();

        client.cloud().removeDevice("8cfec329267", "499585-389fj484-3jcj8hj3");
    }
}
```

```ruby
require "payabli"

client = Payabli::Client.new

client.cloud.remove_device(
  entry: "8cfec329267",
  device_id: "499585-389fj484-3jcj8hj3"
)

```

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

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient();

        await client.Cloud.RemoveDeviceAsync(
            "8cfec329267",
            "499585-389fj484-3jcj8hj3"
        );
    }

}

```

```go
package example

import (
    context "context"

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

func do() {
    client := client.NewClient()
    client.Cloud.RemoveDevice(
        context.TODO(),
        "8cfec329267",
        "499585-389fj484-3jcj8hj3",
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;

$client = new PayabliClient();
$client->cloud->removeDevice(
    '8cfec329267',
    '499585-389fj484-3jcj8hj3',
);

```

```swift
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Cloud/register/8cfec329267/499585-389fj484-3jcj8hj3")! 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()
```

A successful operation returns a 200 response with the device ID in the body.

### Response (200)

```json
{
  "responseText": "Success",
  "isSuccess": true,
  "responseData": "6c361c7d-674c-44cc-b790-382b75d1xxx"
}
```

## Get signature data from a transaction

You can pull signature data from a transaction made with one of these devices. Wait 10 seconds, then send a request with the transaction ID to the [MoneyIn/details](/developers/api-reference/moneyin/get-details-for-a-processed-transaction) endpoint. The signature data is returned in the response.

## Related resources

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

#### Related topics

* **[Devices overview](/guides/pay-in-devices-overview)** - Learn how to accept card-present payments with Payabli's cloud and AXIUM devices
* **[Manage PAX devices](/guides/pay-in-developer-devices-pax-manage)** - Learn how to set up, register, list, and unregister PAX devices with the Payabli API

#### Often confused with

**Manage AXIUM devices** - Covers AXIUM semi-integrated terminals, not Link and Lane cloud terminals. See [Manage AXIUM devices](/guides/pay-in-developer-devices-axium-manage)