Transferencias Bancarias
SDK TypeScript

SDK TypeScript

Usa el SDK oficial si tu backend está escrito en TypeScript o JavaScript. El paquete expone un cliente tipado para crear pagos, consultar pagos, procesar devoluciones, usar flujos de partners y manejar webhooks.

El SDK usa la misma API REST documentada en esta sección. Si necesitás integrar desde otro lenguaje, usa directamente la Payments API, Customers API y Webhooks.

Instalación

npm install talo-pay

Credenciales

Configurá estas variables de entorno en tu backend:

TALO_CLIENT_ID="..."
TALO_CLIENT_SECRET="..."
TALO_USER_ID="..."
⚠️

No uses clientSecret en código frontend. El SDK debe ejecutarse en tu servidor, API route, worker o función serverless.

Crear cliente

import { TaloClient } from "talo-pay"
 
const talo = new TaloClient({
	clientId: process.env.TALO_CLIENT_ID!,
	clientSecret: process.env.TALO_CLIENT_SECRET!,
	userId: process.env.TALO_USER_ID!,
	environment: "sandbox", // "sandbox" | "production"
})

El SDK obtiene tokens automáticamente con tus credenciales, los cachea en memoria, los renueva antes del vencimiento y reintenta una vez si la API responde 401.

AmbienteURL base
sandboxhttps://sandbox-api.talo.com.ar
productionhttps://api.talo.com.ar

Si pasás baseUrl, ese valor reemplaza el ambiente configurado.

Crear un pago

const payment = await talo.payments.create({
	user_id: process.env.TALO_USER_ID!,
	price: { amount: 30000, currency: "ARS" },
	payment_options: ["transfer"],
	external_id: "ORDER_123",
	webhook_url: "https://tu-sitio.com/webhooks/talo",
	motive: "Orden #123",
	client_data: {
		first_name: "Juan",
		last_name: "Perez",
		email: "juan@example.com",
		dni: "12345678",
	},
})
 
console.log(payment.id, payment.payment_status, payment.payment_url)

Después de crear el pago, mostrale al comprador el payment_url o los datos de transferencia incluidos en la respuesta. Para detalles de campos, estados y respuestas, revisá Payments API.

Webhooks en Next.js App Router

import { createWebhookHandler } from "talo-pay"
 
const handler = createWebhookHandler(
	{
		clientId: process.env.TALO_CLIENT_ID!,
		clientSecret: process.env.TALO_CLIENT_SECRET!,
		userId: process.env.TALO_USER_ID!,
		environment: "sandbox",
	},
	{
		onPaymentUpdated: async ({ event, payment }) => {
			console.log(event.paymentId, event.externalId, payment.payment_status)
			// Actualizá tu orden usando payment.payment_status como fuente de verdad.
		},
	}
)
 
export async function POST(request: Request): Promise<Response> {
	return handler(request)
}

El handler valida el evento recibido y consulta el pago actual en Talo. Persistí el estado obtenido desde Talo en tu base de datos.

Devoluciones

const refund = await talo.refunds.create("VAR-123", {
	refund_type: "PARTIAL", // "PARTIAL" | "FULL"
	amount: "500.00",
	currency: "ARS",
	blame: {
		team_id: "soporte",
		mail: "soporte@tu-sitio.com",
	},
	user_id: process.env.TALO_USER_ID!,
})
 
console.log(refund.refund_id, refund.status)

Para devoluciones completas, usá refund_type: "FULL" y omití amount y currency. Ver más en Devoluciones.

Flujos de partners

const authorizationUrl = talo.partners.getAuthorizationUrl("partner_id", {
	referredUserId: "external_user_123",
})
 
const exchange = await talo.partners.exchangeToken({
	code: "code_from_redirect",
	client_id: process.env.TALO_PARTNER_ID!,
	client_secret: process.env.TALO_PARTNER_SECRET!,
})
 
const account = await talo.partners.getAccount(exchange.user_id)
 
await talo.partners.updateAccount(exchange.user_id, {
	transfer_tolerance: 15,
})

Usá este flujo si integrás Talo en nombre de comercios conectados. Ver más en Para Partners.

Recursos disponibles

  • talo.payments.create(...)
  • talo.payments.get(...)
  • talo.payments.updateMetadata(...)
  • talo.customers.create(...)
  • talo.customers.get(...)
  • talo.customers.getTransaction(...)
  • talo.partners.getAuthorizationUrl(...)
  • talo.partners.exchangeToken(...)
  • talo.partners.getAccount(...)
  • talo.partners.updateAccount(...)
  • talo.refunds.create(...)
  • talo.sandbox.simulateCvuTransfer(...)
  • createWebhookHandler(...)

Flujo recomendado

Instalá

Agregá talo-pay en tu backend TypeScript.

Probá en sandbox

Creá el cliente con environment: "sandbox" y generá pagos de prueba.

Recibí webhooks

Implementá el handler, consultá el estado actual y actualizá tu orden.

Pasá a producción

Cambiá a environment: "production" y usá credenciales productivas.