> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.recurrente.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.recurrente.com/_mcp/server.

# Crear una cuenta conectada

POST https://app.recurrente.com/api/connected_accounts
Content-Type: multipart/form-data

Crea una cuenta administrada por tu plataforma, la conecta a tu cuenta y
marca el onboarding como completado. Si ya tienes una cuenta conectada
para el mismo `email`, Recurrente la reutiliza y actualiza sus datos
(idempotencia por email del administrador).

Para reenviar documentos, usa este mismo `POST` con la llave de la
plataforma en `X-SECRET-KEY`, el mismo `email` y los archivos que quieres
reemplazar en `verification`. No necesitas `X-ACCOUNT-ID`: este endpoint
administra las cuentas conectadas desde la plataforma. La respuesta es
`200` y conserva el mismo ID de cuenta; crear una cuenta nueva devuelve `201`.
Los documentos omitidos se conservan. Si no envías documentos, reutilizar
la cuenta no vuelve a ejecutar su verificación.

Recurrente extrae automáticamente el `tax_id` (NIT) y el `tax_name`
(razón social) del documento `tax_registration_document` (RTU) que envías
en `verification` — no necesitas enviarlos en el request.

Debes enviar la documentación requerida para el tipo de cuenta en
`verification`. Si faltan documentos requeridos, Recurrente responde `400`
y no completa el onboarding de la cuenta.

Una respuesta `200` o `201` no significa que los documentos estén
aprobados. Si se rechaza un documento durante su procesamiento, se emite
`verification.rejected` con `document_errors`, también para los reenvíos.
Cuando la verificación es aceptada se emite `verification.completed`.
No se emite ese evento por cada carga: tiene que ocurrir un rechazo.
Un reemplazo rechazado conserva el documento previamente aceptado y no
revierte por sí solo una verificación ya completada.

Usa los nombres del esquema: para el DPI del representante legal de una
empresa, `verification[company_representative_id]` y
`verification[company_representative_id_back]`. Los campos
`legal_representative_id` y `legal_representative_selfie` no están admitidos.

Puedes enviar `bank_account` para configurar de una vez la cuenta bancaria
externa que recibirá retiros. Si tu cuenta tiene pricing especial para
referidos, ese pricing se aplica a las cuentas conectadas nuevas.

Al crear o reutilizar la conexión, Recurrente emite el webhook
`account_connection.create` con los campos `parent_account` y
`child_account`.


Reference: https://docs.recurrente.com/referencia-api/api-reference/connected-accounts/create-connected-account

## Authentication

- `X-SECRET-KEY` header (required) — Tu clave secreta de API. Una llave de cuenta (`sk_live_...`, `sk_test_...`) opera sobre su propia cuenta y, con `X-ACCOUNT-ID`, sobre sus cuentas conectadas. La llave también fija el ambiente: una `sk_test_` solo lista y resuelve objetos de prueba (`live_mode: false`) y una `sk_live_` solo objetos reales. Un ID del otro ambiente responde `404` (`401` en `/customers`). Una llave de organización (`sk_org_live_...`, `sk_org_test_...`) alcanza todas las cuentas de una organización y solo sirve para leer: saldos, movimientos y reportes. Para operar sobre una cuenta debe nombrarla con `X-ACCOUNT-ID`; omitirlo en una lectura devuelve todas las cuentas de la organización. Cualquier otro endpoint responde `403` con `code: organization_key_unsupported`.

## Request

### Body (multipart/form-data)

This endpoint expects a multipart form.

- `email` (string, required) — Email del usuario administrador de la cuenta hija. Sirve como llave de idempotencia: si vuelves a llamar este endpoint con el mismo email, Recurrente reutiliza la cuenta conectada existente.
- `full_name` (string, required) — Nombre completo del usuario administrador
- `phone_number` (string, optional) — Número de teléfono del usuario administrador
- `name` (string, required) — Nombre comercial de la cuenta hija
- `account_type` (enum, required) — Tipo de cuenta de negocio
- `withdrawals_schedule` (enum, optional) — Frecuencia para retiros de la cuenta hija
- `verification` (ConnectedAccountVerificationRequest, required)
- `bank_account` (BankAccountCreateRequest, optional)

## Response

### 200

Cuenta conectada existente reutilizada; los documentos enviados se procesan de nuevo

- `id` (string, optional) — ID único de la cuenta conectada
- `status` (string, optional) — Estado de la cuenta
- `name` (string, optional) — Nombre comercial de la cuenta
- `account_type` (enum, optional) — Tipo de cuenta de negocio
  - Allowed values: `business`, `individual`, `non_profit`
- `created_at` (datetime, optional) — Fecha de creación
- `creator_name` (string, optional) — Nombre del usuario creador
- `creator_email` (string, optional) — Email del usuario creador
- `tax_id` (string, optional, nullable) — NIT extraído del RTU; si no está disponible, se conserva el ID fiscal previamente guardado en la cuenta.
- `tax_name` (string, optional, nullable) — Razón social extraída del RTU; si no está disponible, se conserva el nombre fiscal previamente guardado en la cuenta.
- `withdrawals_schedule` (enum, optional, nullable) — Frecuencia configurada para retiros
  - Allowed values: `daily`, `manual`, `instant`
- `onboarding_completed` (boolean, optional) — Indica si la cuenta completó onboarding

### 201

Cuenta conectada creada

- `id` (string, optional) — ID único de la cuenta conectada
- `status` (string, optional) — Estado de la cuenta
- `name` (string, optional) — Nombre comercial de la cuenta
- `account_type` (enum, optional) — Tipo de cuenta de negocio
  - Allowed values: `business`, `individual`, `non_profit`
- `created_at` (datetime, optional) — Fecha de creación
- `creator_name` (string, optional) — Nombre del usuario creador
- `creator_email` (string, optional) — Email del usuario creador
- `tax_id` (string, optional, nullable) — NIT extraído del RTU; si no está disponible, se conserva el ID fiscal previamente guardado en la cuenta.
- `tax_name` (string, optional, nullable) — Razón social extraída del RTU; si no está disponible, se conserva el nombre fiscal previamente guardado en la cuenta.
- `withdrawals_schedule` (enum, optional, nullable) — Frecuencia configurada para retiros
  - Allowed values: `daily`, `manual`, `instant`
- `onboarding_completed` (boolean, optional) — Indica si la cuenta completó onboarding

## Errors

### 400 Bad Request Error

Cuenta inválida

- `message` (string, optional) — Mensaje de error
- `code` (string, optional) — Código estable legible por máquinas, cuando aplica
- `refund_id` (string, optional) — ID del reembolso relacionado cuando aplica
- `endpoint` (string, optional) — Acción de API rechazada, cuando aplica
- `errors` (ErrorErrors, optional) — Detalles de errores por campo

## Types

### ErrorErrors

Detalles de errores por campo

## Examples

### Cuenta conectada de persona individual

**Request**

```json
{
  "email": "juan@example.com",
  "full_name": "Juan Pérez",
  "phone_number": "+50255555555",
  "name": "Juan Pérez",
  "account_type": "individual",
  "withdrawals_schedule": "daily",
  "verification": {
    "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
    "id_card_image": "(frente del DPI)",
    "id_card_image_back": "(reverso del DPI)"
  }
}
```

**Response**

```json
{
  "id": "ac_lmgbvesmihkqzma3",
  "status": "active",
  "name": "Acme Restaurant",
  "account_type": "business",
  "created_at": "2024-01-15T09:30:00Z",
  "creator_name": "Ana Perez",
  "creator_email": "owner@restaurant.example",
  "tax_id": "1234567",
  "tax_name": "Acme Restaurant, S.A.",
  "withdrawals_schedule": "daily",
  "onboarding_completed": true
}
```

**SDK Code**

```python Cuenta conectada de persona individual
import requests

url = "https://app.recurrente.com/api/connected_accounts"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njuan@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nindividual\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"id_card_image\": \"(frente del DPI)\",\n  \"id_card_image_back\": \"(reverso del DPI)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n\r\n-----011000010111000001101001--\r\n"
headers = {
    "X-SECRET-KEY": "<apiKey>",
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
}

response = requests.post(url, data=payload, headers=headers)

print(response.json())
```

```javascript Cuenta conectada de persona individual
const url = 'https://app.recurrente.com/api/connected_accounts';
const form = new FormData();
form.append('email', 'juan@example.com');
form.append('full_name', 'Juan Pérez');
form.append('phone_number', '+50255555555');
form.append('name', 'Juan Pérez');
form.append('account_type', 'individual');
form.append('withdrawals_schedule', 'daily');
form.append('verification', '{
  "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
  "id_card_image": "(frente del DPI)",
  "id_card_image_back": "(reverso del DPI)"
}');
form.append('bank_account', '');

const options = {method: 'POST', headers: {'X-SECRET-KEY': '<apiKey>'}};

options.body = form;

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

```go Cuenta conectada de persona individual
package main

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

func main() {

	url := "https://app.recurrente.com/api/connected_accounts"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njuan@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nindividual\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"id_card_image\": \"(frente del DPI)\",\n  \"id_card_image_back\": \"(reverso del DPI)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-SECRET-KEY", "<apiKey>")

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

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

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

}
```

```ruby Cuenta conectada de persona individual
require 'uri'
require 'net/http'

url = URI("https://app.recurrente.com/api/connected_accounts")

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

request = Net::HTTP::Post.new(url)
request["X-SECRET-KEY"] = '<apiKey>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njuan@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nindividual\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"id_card_image\": \"(frente del DPI)\",\n  \"id_card_image_back\": \"(reverso del DPI)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n\r\n-----011000010111000001101001--\r\n"

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

```java Cuenta conectada de persona individual
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://app.recurrente.com/api/connected_accounts")
  .header("X-SECRET-KEY", "<apiKey>")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njuan@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nindividual\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"id_card_image\": \"(frente del DPI)\",\n  \"id_card_image_back\": \"(reverso del DPI)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php Cuenta conectada de persona individual
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://app.recurrente.com/api/connected_accounts', [
  'multipart' => [
    [
        'name' => 'email',
        'contents' => 'juan@example.com'
    ],
    [
        'name' => 'full_name',
        'contents' => 'Juan Pérez'
    ],
    [
        'name' => 'phone_number',
        'contents' => '+50255555555'
    ],
    [
        'name' => 'name',
        'contents' => 'Juan Pérez'
    ],
    [
        'name' => 'account_type',
        'contents' => 'individual'
    ],
    [
        'name' => 'withdrawals_schedule',
        'contents' => 'daily'
    ],
    [
        'name' => 'verification',
        'contents' => '{
  "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
  "id_card_image": "(frente del DPI)",
  "id_card_image_back": "(reverso del DPI)"
}'
    ]
  ]
  'headers' => [
    'X-SECRET-KEY' => '<apiKey>',
  ],
]);

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

```csharp Cuenta conectada de persona individual
using RestSharp;

var client = new RestClient("https://app.recurrente.com/api/connected_accounts");
var request = new RestRequest(Method.POST);
request.AddHeader("X-SECRET-KEY", "<apiKey>");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njuan@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nJuan Pérez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nindividual\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"id_card_image\": \"(frente del DPI)\",\n  \"id_card_image_back\": \"(reverso del DPI)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Cuenta conectada de persona individual
import Foundation

let headers = ["X-SECRET-KEY": "<apiKey>"]
let parameters = [
  [
    "name": "email",
    "value": "juan@example.com"
  ],
  [
    "name": "full_name",
    "value": "Juan Pérez"
  ],
  [
    "name": "phone_number",
    "value": "+50255555555"
  ],
  [
    "name": "name",
    "value": "Juan Pérez"
  ],
  [
    "name": "account_type",
    "value": "individual"
  ],
  [
    "name": "withdrawals_schedule",
    "value": "daily"
  ],
  [
    "name": "verification",
    "value": "{
  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",
  \"id_card_image\": \"(frente del DPI)\",
  \"id_card_image_back\": \"(reverso del DPI)\"
}"
  ],
  [
    "name": "bank_account",
    "value": 
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://app.recurrente.com/api/connected_accounts")! 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()
```

### Example 2

**Request**

```json
{
  "email": "owner@restaurant.example",
  "full_name": "Ana Perez",
  "phone_number": "+50255555555",
  "name": "Acme Restaurant",
  "account_type": "business",
  "withdrawals_schedule": "daily",
  "verification": {
    "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
    "commercial_patent": "(archivo PDF o imagen)",
    "company_patent": "(archivo PDF o imagen)",
    "company_representative_document": "(archivo PDF o imagen)",
    "company_representative_id": "(archivo PDF o imagen)",
    "company_representative_id_back": "(archivo PDF o imagen)"
  },
  "bank_account": {
    "holder_name": "Acme Restaurant, S.A.",
    "number": "1234567890",
    "bank_name": "Banco Industrial",
    "currency": "GTQ",
    "account_type": "checking"
  }
}
```

**Response**

```json
{
  "id": "ac_lmgbvesmihkqzma3",
  "status": "active",
  "name": "Acme Restaurant",
  "account_type": "business",
  "created_at": "2024-01-15T09:30:00Z",
  "creator_name": "Ana Perez",
  "creator_email": "owner@restaurant.example",
  "tax_id": "1234567",
  "tax_name": "Acme Restaurant, S.A.",
  "withdrawals_schedule": "daily",
  "onboarding_completed": true
}
```

**SDK Code**

```python
import requests

url = "https://app.recurrente.com/api/connected_accounts"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n"
headers = {
    "X-SECRET-KEY": "<apiKey>",
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
}

response = requests.post(url, data=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.recurrente.com/api/connected_accounts';
const form = new FormData();
form.append('email', 'owner@restaurant.example');
form.append('full_name', 'Ana Perez');
form.append('phone_number', '+50255555555');
form.append('name', 'Acme Restaurant');
form.append('account_type', 'business');
form.append('withdrawals_schedule', 'daily');
form.append('verification', '{
  "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
  "commercial_patent": "(archivo PDF o imagen)",
  "company_patent": "(archivo PDF o imagen)",
  "company_representative_document": "(archivo PDF o imagen)",
  "company_representative_id": "(archivo PDF o imagen)",
  "company_representative_id_back": "(archivo PDF o imagen)"
}');
form.append('bank_account', '{
  "holder_name": "Acme Restaurant, S.A.",
  "number": "1234567890",
  "bank_name": "Banco Industrial",
  "currency": "GTQ",
  "account_type": "checking"
}');

const options = {method: 'POST', headers: {'X-SECRET-KEY': '<apiKey>'}};

options.body = form;

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"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://app.recurrente.com/api/connected_accounts"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-SECRET-KEY", "<apiKey>")

	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://app.recurrente.com/api/connected_accounts")

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

request = Net::HTTP::Post.new(url)
request["X-SECRET-KEY"] = '<apiKey>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n"

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.post("https://app.recurrente.com/api/connected_accounts")
  .header("X-SECRET-KEY", "<apiKey>")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://app.recurrente.com/api/connected_accounts', [
  'multipart' => [
    [
        'name' => 'email',
        'contents' => 'owner@restaurant.example'
    ],
    [
        'name' => 'full_name',
        'contents' => 'Ana Perez'
    ],
    [
        'name' => 'phone_number',
        'contents' => '+50255555555'
    ],
    [
        'name' => 'name',
        'contents' => 'Acme Restaurant'
    ],
    [
        'name' => 'account_type',
        'contents' => 'business'
    ],
    [
        'name' => 'withdrawals_schedule',
        'contents' => 'daily'
    ],
    [
        'name' => 'verification',
        'contents' => '{
  "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
  "commercial_patent": "(archivo PDF o imagen)",
  "company_patent": "(archivo PDF o imagen)",
  "company_representative_document": "(archivo PDF o imagen)",
  "company_representative_id": "(archivo PDF o imagen)",
  "company_representative_id_back": "(archivo PDF o imagen)"
}'
    ],
    [
        'name' => 'bank_account',
        'contents' => '{
  "holder_name": "Acme Restaurant, S.A.",
  "number": "1234567890",
  "bank_name": "Banco Industrial",
  "currency": "GTQ",
  "account_type": "checking"
}'
    ]
  ]
  'headers' => [
    'X-SECRET-KEY' => '<apiKey>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://app.recurrente.com/api/connected_accounts");
var request = new RestRequest(Method.POST);
request.AddHeader("X-SECRET-KEY", "<apiKey>");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["X-SECRET-KEY": "<apiKey>"]
let parameters = [
  [
    "name": "email",
    "value": "owner@restaurant.example"
  ],
  [
    "name": "full_name",
    "value": "Ana Perez"
  ],
  [
    "name": "phone_number",
    "value": "+50255555555"
  ],
  [
    "name": "name",
    "value": "Acme Restaurant"
  ],
  [
    "name": "account_type",
    "value": "business"
  ],
  [
    "name": "withdrawals_schedule",
    "value": "daily"
  ],
  [
    "name": "verification",
    "value": "{
  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",
  \"commercial_patent\": \"(archivo PDF o imagen)\",
  \"company_patent\": \"(archivo PDF o imagen)\",
  \"company_representative_document\": \"(archivo PDF o imagen)\",
  \"company_representative_id\": \"(archivo PDF o imagen)\",
  \"company_representative_id_back\": \"(archivo PDF o imagen)\"
}"
  ],
  [
    "name": "bank_account",
    "value": "{
  \"holder_name\": \"Acme Restaurant, S.A.\",
  \"number\": \"1234567890\",
  \"bank_name\": \"Banco Industrial\",
  \"currency\": \"GTQ\",
  \"account_type\": \"checking\"
}"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://app.recurrente.com/api/connected_accounts")! 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()
```

### Example 3

**Request**

```json
{
  "email": "owner@restaurant.example",
  "full_name": "Ana Perez",
  "phone_number": "+50255555555",
  "name": "Acme Restaurant",
  "account_type": "business",
  "withdrawals_schedule": "daily",
  "verification": {
    "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
    "commercial_patent": "(archivo PDF o imagen)",
    "company_patent": "(archivo PDF o imagen)",
    "company_representative_document": "(archivo PDF o imagen)",
    "company_representative_id": "(archivo PDF o imagen)",
    "company_representative_id_back": "(archivo PDF o imagen)"
  },
  "bank_account": {
    "holder_name": "Acme Restaurant, S.A.",
    "number": "1234567890",
    "bank_name": "Banco Industrial",
    "currency": "GTQ",
    "account_type": "checking"
  }
}
```

**Response**

```json
{
  "id": "ac_lmgbvesmihkqzma3",
  "status": "active",
  "name": "Acme Restaurant",
  "account_type": "business",
  "created_at": "2024-01-15T09:30:00Z",
  "creator_name": "Ana Perez",
  "creator_email": "owner@restaurant.example",
  "tax_id": "1234567",
  "tax_name": "Acme Restaurant, S.A.",
  "withdrawals_schedule": "daily",
  "onboarding_completed": true
}
```

**SDK Code**

```python
import requests

url = "https://app.recurrente.com/api/connected_accounts"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n"
headers = {
    "X-SECRET-KEY": "<apiKey>",
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
}

response = requests.post(url, data=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.recurrente.com/api/connected_accounts';
const form = new FormData();
form.append('email', 'owner@restaurant.example');
form.append('full_name', 'Ana Perez');
form.append('phone_number', '+50255555555');
form.append('name', 'Acme Restaurant');
form.append('account_type', 'business');
form.append('withdrawals_schedule', 'daily');
form.append('verification', '{
  "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
  "commercial_patent": "(archivo PDF o imagen)",
  "company_patent": "(archivo PDF o imagen)",
  "company_representative_document": "(archivo PDF o imagen)",
  "company_representative_id": "(archivo PDF o imagen)",
  "company_representative_id_back": "(archivo PDF o imagen)"
}');
form.append('bank_account', '{
  "holder_name": "Acme Restaurant, S.A.",
  "number": "1234567890",
  "bank_name": "Banco Industrial",
  "currency": "GTQ",
  "account_type": "checking"
}');

const options = {method: 'POST', headers: {'X-SECRET-KEY': '<apiKey>'}};

options.body = form;

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"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://app.recurrente.com/api/connected_accounts"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-SECRET-KEY", "<apiKey>")

	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://app.recurrente.com/api/connected_accounts")

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

request = Net::HTTP::Post.new(url)
request["X-SECRET-KEY"] = '<apiKey>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n"

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.post("https://app.recurrente.com/api/connected_accounts")
  .header("X-SECRET-KEY", "<apiKey>")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://app.recurrente.com/api/connected_accounts', [
  'multipart' => [
    [
        'name' => 'email',
        'contents' => 'owner@restaurant.example'
    ],
    [
        'name' => 'full_name',
        'contents' => 'Ana Perez'
    ],
    [
        'name' => 'phone_number',
        'contents' => '+50255555555'
    ],
    [
        'name' => 'name',
        'contents' => 'Acme Restaurant'
    ],
    [
        'name' => 'account_type',
        'contents' => 'business'
    ],
    [
        'name' => 'withdrawals_schedule',
        'contents' => 'daily'
    ],
    [
        'name' => 'verification',
        'contents' => '{
  "tax_registration_document": "(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)",
  "commercial_patent": "(archivo PDF o imagen)",
  "company_patent": "(archivo PDF o imagen)",
  "company_representative_document": "(archivo PDF o imagen)",
  "company_representative_id": "(archivo PDF o imagen)",
  "company_representative_id_back": "(archivo PDF o imagen)"
}'
    ],
    [
        'name' => 'bank_account',
        'contents' => '{
  "holder_name": "Acme Restaurant, S.A.",
  "number": "1234567890",
  "bank_name": "Banco Industrial",
  "currency": "GTQ",
  "account_type": "checking"
}'
    ]
  ]
  'headers' => [
    'X-SECRET-KEY' => '<apiKey>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://app.recurrente.com/api/connected_accounts");
var request = new RestRequest(Method.POST);
request.AddHeader("X-SECRET-KEY", "<apiKey>");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nowner@restaurant.example\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"full_name\"\r\n\r\nAna Perez\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_number\"\r\n\r\n+50255555555\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nAcme Restaurant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_type\"\r\n\r\nbusiness\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"withdrawals_schedule\"\r\n\r\ndaily\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verification\"\r\n\r\n{\n  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",\n  \"commercial_patent\": \"(archivo PDF o imagen)\",\n  \"company_patent\": \"(archivo PDF o imagen)\",\n  \"company_representative_document\": \"(archivo PDF o imagen)\",\n  \"company_representative_id\": \"(archivo PDF o imagen)\",\n  \"company_representative_id_back\": \"(archivo PDF o imagen)\"\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bank_account\"\r\n\r\n{\n  \"holder_name\": \"Acme Restaurant, S.A.\",\n  \"number\": \"1234567890\",\n  \"bank_name\": \"Banco Industrial\",\n  \"currency\": \"GTQ\",\n  \"account_type\": \"checking\"\n}\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["X-SECRET-KEY": "<apiKey>"]
let parameters = [
  [
    "name": "email",
    "value": "owner@restaurant.example"
  ],
  [
    "name": "full_name",
    "value": "Ana Perez"
  ],
  [
    "name": "phone_number",
    "value": "+50255555555"
  ],
  [
    "name": "name",
    "value": "Acme Restaurant"
  ],
  [
    "name": "account_type",
    "value": "business"
  ],
  [
    "name": "withdrawals_schedule",
    "value": "daily"
  ],
  [
    "name": "verification",
    "value": "{
  \"tax_registration_document\": \"(archivo PDF — Recurrente extrae tax_id y tax_name de aquí)\",
  \"commercial_patent\": \"(archivo PDF o imagen)\",
  \"company_patent\": \"(archivo PDF o imagen)\",
  \"company_representative_document\": \"(archivo PDF o imagen)\",
  \"company_representative_id\": \"(archivo PDF o imagen)\",
  \"company_representative_id_back\": \"(archivo PDF o imagen)\"
}"
  ],
  [
    "name": "bank_account",
    "value": "{
  \"holder_name\": \"Acme Restaurant, S.A.\",
  \"number\": \"1234567890\",
  \"bank_name\": \"Banco Industrial\",
  \"currency\": \"GTQ\",
  \"account_type\": \"checking\"
}"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://app.recurrente.com/api/connected_accounts")! 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()
```