> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fintoc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Prepárate para empezar a usar la API de Transfers

Para empezar a usar la API de Transfer de Fintoc, solo necesitas tener una cuenta en nuestro [Dashboard](https://dashboard.fintoc.com/) y seguir estos pasos:

1. Obtener tus API Keys de prueba
2. Generar tus llaves JWS y subirlas a nuestro Dashboard.
3. Obtener tus cuentas
4. Enviar tu primera transferencia

# Paso 1: Obtén tus API Keys de prueba

Toda interacción con la API de Fintoc debe autenticarse con tus [API Keys](/es/v2023-11-15/docs/home/api-keys) de Fintoc. Si alguna interacción con la API no incluye tu API Key o usa una incorrecta, Fintoc devolverá un error.

Cada cuenta de Fintoc tiene dos pares de llaves: uno se usa para el [modo de prueba](/es/v2023-11-15/docs/resources/test-mode), mientras que el otro se usa para el entorno de producción. Cada recurso se almacena en [modo de prueba o modo live](/es/v2023-11-15/docs/resources/test-mode), y los recursos de un entorno no pueden ser manipulados por recursos del otro.

Tus API Keys estarán disponibles en el [Dashboard](https://dashboard.fintoc.com/), donde tendrás que registrarte. Una vez creada tu cuenta de Fintoc, podrás obtener tus API Keys. En este caso, debes usar la **Secret Key** para el modo de prueba. Agregamos el prefijo `sk_test_` para que la identifiques fácilmente.

# Paso 2: Registra tus llaves JWS

Para hacer solicitudes a los **endpoints de Transfers que mueven dinero**, necesitas incluir una JSON Web Signature (JWS). JWS es un estándar para firmar digitalmente datos y garantizar su integridad y autenticidad.

Para registrar tus llaves JWS, sigue [esta guía](/es/v2023-11-15/docs/transfers/setting-up-jws-keys#generate-jws-keys).

# Paso 3: Obtén tus cuentas

Usando tu **Secret Key** de prueba, obtén tus Accounts vía API así:

```Text cURL theme={null}
curl --request GET \
     --url https://api.fintoc.com/v2/accounts \
     --header 'Authorization: sk_test_9c8d8CeyBTx1VcJzuDgpm4H' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
```

La respuesta debería verse así:

```coffeescript JSON theme={null}
[
  {
    "id": "acc_23JlasHas241",
    "object": "account",
    "mode": "test",
    "description": "My root account",
    "root_account_number": "738969123456789120",
    "root_account_number_id": "acno_Kasf91034gj1AD",
    "available_balance": 0
    "currency": "MXN",
    "entity": {
          "id": "ent_4324qwkalsds",
          "holder_name": "ACME Inc.",
          "holder_id": "ND"
      }
	}
]
```

## Usando nuestro SDK

Si estás usando Python o Node, puedes instalar nuestro [SDK de Python](https://github.com/fintoc-com/fintoc-python) o [SDK de Node](https://github.com/fintoc-com/fintoc-node) para que sea más fácil interactuar con nuestra API. El SDK [genera automáticamente la firma JWS](/es/v2023-11-15/docs/transfers/setting-up-jws-keys), maneja la paginación y ofrece muchas otras funciones útiles.

Primero instala nuestro SDK:

```shell Install Python SDK theme={null}
pip install fintoc
```

```shell Install Node SDK theme={null}
npm install fintoc
```

Ahora lista tus cuentas:

```python theme={null}
from fintoc import Fintoc

# You can provide a path to your PEM file or pass the PEM key directly as a string.
# jws_private_key = os.environ.get('JWS_PRIVATE_KEY')
jws_private_key = "./private_key.pem"

client = Fintoc("your_api_key", jws_private_key=jws_private_key)

for account in client.v2.accounts.list():
  print(account.id, account.description, account.root_account_number, account.available_balance)

```

```node Node theme={null}
const { Fintoc } = require('fintoc');

// You can provide a path to your PEM file or pass the PEM key directly as a string.
// const privateKey = process.env.JWS_PRIVATE_KEY;
const privateKey = './private_key.pem';

const fintoc = new Fintoc('your_api_key', privateKey);

const accounts = await fintoc.v2.accounts.list();
for await (const account of accounts) {
  console.log(account.id, account.description, account.root_account_number);
}
```

# Paso 4: Realiza tu primera transferencia

Ahora vamos a crear una transferencia. En **modo live**, esto efectivamente moverá dinero a las cuentas de tus clientes. Como estamos en **modo de prueba**, no se moverá dinero, pero usarás exactamente la misma API que usarás en tu entorno de producción.

## Financia tu cuenta de prueba

Tu cuenta de prueba comenzará sin fondos (igual que tu cuenta live). Para agregar fondos, simula una transferencia usando la API o el dashboard.

## Realiza una transferencia saliente

Primero necesitarás una firma JWS para firmar tus solicitudes de forma segura. Para aprender a generar una JWS Signature, sigue [esta guía](/es/v2023-11-15/docs/transfers/setting-up-jws-keys#generate-jws-signature).

Una vez que hayas generado tu JWS Signature, usa el `account_id` que obtuviste en el Paso 3 para crear una transferencia de \$590.13 MXN:

```curl theme={null}
curl --request POST \
     --url https://api.fintoc.com/v2/transfers \
     --header 'Authorization: YOUR_API_KEY' \
     --header 'Fintoc-JWS-Signature: YOUR_JWS_SIGNATURE' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "amount": 59013,
  "currency": "mxn",
  "account_id": "acc_M8sKf230BgHjD4",
  "comment": "Pago de credito 10451",
  "reference_id": "150195",
  "counterparty": {
    "account_number": "012969123456789120"
  },
}
```

<Warning>
  **Las monedas se representan como enteros**

  La API de Fintoc representa las monedas en su unidad mínima posible sin decimales (como entero). Eso significa que un **monto de MXN \$590.13 se representa en Fintoc como 59013.**

  Si estás realizando una transferencia en pesos chilenos, como no hay decimales, si quieres transferir \$59013 simplemente representas ese monto como `59013`.

  Puedes [leer más sobre monedas aquí.](/es/v2023-11-15/docs/home/currencies).
</Warning>

## Usando nuestro SDK

Si estás usando uno de nuestros SDKs, puedes crear la transferencia así:

```python theme={null}
transfer = client.v2.transfers.create(
    amount=59013,
    currency="mxn",
    account_id="acc_M8sKf230BgHjD4",
    comment="Pago de credito 10451",
    reference_id="150195",
    counterparty={"account_number": "014180655091438298"},
)
```

```node Node theme={null}
const transfer = await fintoc.v2.transfers.create({
  amount: 59013,
  currency: 'mxn',
  account_id: 'acc_M8sKf230BgHjD4',
  comment: 'Pago de credito 10451',
  reference_id: '1234124',
  counterparty: {
      account_number: '014180655091438298',
  },
});
```

**✅ ¡Felicitaciones!** ¡Acabas de hacer tu primera transferencia! Para aplicaciones del mundo real, hay varias otras funcionalidades que deberías considerar usar, por ejemplo:

* Idempotency Keys para repetir solicitudes de forma segura sin riesgo de crear dos objetos
* [Account Numbers](/es/v2023-11-15/docs/transfers/transfers-overview/v2-transfers-account-number-data-model) para conciliar fácilmente las transferencias entrantes
* Metadata para adjuntar datos personalizados a tus objetos de Fintoc

Aprenderás todo sobre estas funcionalidades en nuestras guías de [recibir transferencias](/es/v2023-11-15/docs/transfers/inbound-transfers) y [enviar transferencias](/es/v2023-11-15/docs/transfers/outbound-transfers). Si quieres entender mejor cómo funcionan las transferencias y los conceptos de alto nivel, revisa nuestra [guía de visión general](/es/v2023-11-15/docs/transfers/transfers-overview).
