# Ver un movimiento

`GET https://api.fiscalisto.com/v1/stock_movements/{id}`

Una entrada o salida de existencias, con lo que la causó (source).

## Parámetros

| Nombre | Dónde | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `id` | ruta | sí | El id del objeto. |

## Con el SDK de TypeScript

```ts
import { Fiscalisto } from "fiscalisto";

// La llave viene de FISCALISTO_API_KEY.
const fiscalisto = new Fiscalisto();

const stockMovement = await fiscalisto.stockMovements.get("stm_OufpKqnrvx9p7");
```

## Con el SDK de Python

```python
from fiscalisto import Fiscalisto

# La llave viene de FISCALISTO_API_KEY.
fiscalisto = Fiscalisto()

stock_movement = fiscalisto.stock_movements.get("stm_OufpKqnrvx9p7")
```

## Con el SDK de PHP

```php
<?php

use Fiscalisto\Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
$fiscalisto = new Fiscalisto();

$stockMovement = $fiscalisto->stockMovements->get('stm_OufpKqnrvx9p7');
```

## Con el SDK de .NET

```csharp
using Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var stockMovement = await fiscalisto.StockMovements.GetAsync("stm_OufpKqnrvx9p7");
```

## Con el SDK de Go

```go
package main

import (
	"context"
	"fmt"
	"log"

	fiscalisto "fiscalisto.com/go"
)

func main() {
	// La llave viene de FISCALISTO_API_KEY.
	client, err := fiscalisto.NewClient("")
	if err != nil {
		log.Fatal(err)
	}
	ctx := context.Background()

	stockMovement, err := client.StockMovements.Get(ctx, "stm_OufpKqnrvx9p7")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(stockMovement.ID)
}
```

## Con el SDK de Java

```java
import com.fiscalisto.FiscalistoClient;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var stockMovement = fiscalisto.stockMovements().get("stm_OufpKqnrvx9p7");
System.out.println(stockMovement.getId());
```

## Respuesta 200

Correcto.

Un objeto `StockMovement`:

| Campo | Tipo | Siempre viene | Descripción |
| --- | --- | --- | --- |
| `id` | string | sí | Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_). |
| `livemode` | boolean | sí | true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT. |
| `object` | `"stock_movement"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `issuer` | string | sí | El emisor. |
| `product` | string | sí | El producto (prd_…). |
| `warehouse` | string | sí | El almacén (whs_…). |
| `type` | `sale`, `purchase`, `customer_return`, `supplier_return`, `adjustment`, `count`, `transfer_out`, `transfer_in`, `initial`, `cost`, `reversal` | sí | sale (una factura), purchase (una compra), customer_return, supplier_return, adjustment, count (conteo físico), transfer_out, transfer_in, initial, cost (un ajuste de costo) o reversal (deshace otro, como una factura cancelada). |
| `quantity` | number | sí | Cuánto entró (positivo) o salió (negativo). |
| `unit_cost` | number | sí | El costo por unidad con que entró o salió, en pesos sin IVA. |
| `value` | number | sí | quantity × unit_cost: lo que cambió el valor del inventario. |
| `lot` | string o null | sí | El lote o número de serie, o null. |
| `source` | objeto | sí | Lo que lo causó: type invoice (id es el UUID del CFDI), adjustment (adj_…), receipt, transfer, count o ticket. |
| `source.type` | string | sí | Tipo de comprobante (TipoDeComprobante): I ingreso, E egreso, P pago, T traslado, N nómina. |
| `source.id` | string | sí | Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_). |
| `reason` | string o null | sí | El motivo de un ajuste, o null. |
| `date` | string o null | sí | Cuándo pasó, hora de la Ciudad de México (la Fecha del CFDI en una venta). |
| `reversed` | boolean | sí | true si un movimiento posterior lo deshizo. |
| `created_at` | string (date-time) o null | sí | Cuándo se registró. |

```json
{
  "id": "stm_OufpKqnrvx9p7",
  "object": "stock_movement",
  "livemode": false,
  "issuer": "iss_OufpKqnrvx9p",
  "product": "prd_OufpKqnrvx9p2",
  "warehouse": "whs_OufpKqnrvx9p1",
  "type": "sale",
  "quantity": -2,
  "unit_cost": 90,
  "value": -180,
  "lot": null,
  "source": {
    "type": "invoice",
    "id": "5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718"
  },
  "reason": null,
  "date": "2026-10-27T10:15:42",
  "reversed": false,
  "created_at": "2026-10-27T10:15:43-06:00"
}
```

## Errores

Puede responder 400, 401, 403, 404, 429, 500 con el cuerpo de error de siempre; cada código está en https://fiscalisto.com/docs/api/errores.md.
