Use this file to discover all available pages before exploring further.
Español
English
Guía paso a paso para que los administradores de cuenta NetSuite configuren y obtengan todas las credenciales y permisos necesarios para la integración con Payana.
Centre Type:Classic Centre (es crítico; ver nota abajo).
En la subpestaña Authentication:
Marca Web Services Only Role.
Haz clic en Save (agregarás permisos en los siguientes pasos).
¿Por qué Classic Centre?
Los roles de NetSuite usan el Centre Type para determinar qué módulos y tipos de registro puede ver un usuario. Centros funcionales como Accounting Centre o Employee Centre restringen el acceso a ciertos registros y endpoints REST aunque el permiso figure como “Full”. Classic Centre es el único Centre Type que da acceso sin restricciones a todos los módulos vía REST/SOAP, necesario para una integración servidor a servidor. Usar otro centro es una causa frecuente de 401 Invalid login o respuestas API vacías difíciles de diagnosticar.
La integración usa SuiteQL para leer datos. Cada tabla requiere el permiso indicado en NetSuite. La siguiente lista coincide con las entidades a las que accede el procesador (equivalente funcional a la integración con Odoo).
Tabla SuiteQL
Uso en la integración Payana
Permiso NetSuite que la habilita
Vendor
Proveedores (sincronización de suppliers, datos de beneficiarios en payables y pagos).
Lists – Vendors
Item
Productos e ítems (inventario y no inventario).
Lists – Items
Account
Cuentas contables (libros, métodos de pago, cuentas de gasto en líneas de PO y bills).
Lists – Accounts
Department
Centros de costo (cost centers).
Lists – Departments
Location
Bodegas/almacenes (warehouses).
Lists – Locations
Transaction
Facturas de proveedor (VendBill), órdenes de compra (PurchOrd), pagos (VendPymt, VendCred).
Nombre del método de pago en pagos (opcional; si falta, se usa valor por defecto).
Setup – Accounting Lists
Subsidiary
Multi-entidad (OneWorld).
Lists – Subsidiaries
Perform Search (Lists) debe estar en Full para que las consultas SuiteQL funcionen. Find Transaction (Transactions) permite consultar la tabla Transaction y TransactionLine para los tipos de transacción permitidos (Bills, Purchase Orders, etc.).
Ve a Setup > Users/Roles > Manage Users y selecciona el usuario que tendrá el token (puede ser un usuario dedicado a la integración).
En la subpestaña Access > Roles, agrega el rol Conexión Payana.
Haz clic en Save.
Es buena práctica usar un usuario dedicado (ej. [email protected]) en lugar de una cuenta personal, para evitar invalidar el token si alguien deja la empresa.
Token-Based Authentication está habilitado en SuiteCloud.
Existe un Integration Record con TBA habilitado.
El rol “Conexión Payana” usa Classic Centre como Centre Type.
El rol tiene Web Services Only marcado en la subpestaña Authentication.
Permisos de Setup: Log in using Access Tokens, REST Web Services, User Access Tokens, SuiteAnalytics Workbook, y Accounting Lists en Full.
Permisos de transacciones (Nivel 1): Bills, Purchase Orders y Find Transaction en Full.
Permisos de transacciones (Nivel 2): Bill Purchase Orders, Enter Vendor Credits y Pay Bills en Full.
Permisos de listas (Nivel 1): Vendors, Subsidiaries, Accounts y Perform Search en Full.
Permisos de listas (Nivel 2): Items, Companies, Currency, Departments y Locations en Full.
Permisos por tabla SuiteQL (sección 4.5): acceso a Vendor, Item, Account, Department, Location, Transaction, TransactionLine y, si aplica, PaymentMethod.
El rol tiene configurado el acceso a subsidiarias (All o lista específica).
Un usuario de integración dedicado tiene asignado el rol.
Se ha creado el Access Token y se han copiado Token ID y Token Secret.
Las seis credenciales se han compartido con Payana de forma segura.
Se verificó el acceso con una solicitud de prueba (sección 9).
Verifica que Consumer Key, Consumer Secret, Token ID y Token Secret sean correctos y no estén expirados.
403
Permisos insuficientes
El rol no tiene los permisos necesarios. Revisa las secciones 4.2 a 4.5.
404
Account ID o URL incorrectos
Confirma el Account ID y que el formato de URL corresponda al entorno.
Alternativa: probar con cURL
Copia el siguiente script, reemplaza los valores de credenciales al inicio, y pégalo directamente en una terminal (macOS, Linux o Windows con WSL/Git Bash).Requiere curl, openssl, python3 y base64.
Una vez que la consulta básica funcione, verifica acceso a los tipos de registro específicos que usa la integración:
-- Facturas de proveedorSELECT id, tranId, entity FROM transaction WHERE type = 'VendBill' AND ROWNUM <= 1-- Órdenes de compraSELECT id, tranId, entity FROM transaction WHERE type = 'PurchOrd' AND ROWNUM <= 1-- ProveedoresSELECT id, companyName FROM vendor WHERE ROWNUM <= 1-- Subsidiarias (solo OneWorld)SELECT id, name FROM subsidiary WHERE ROWNUM <= 1-- Centros de costo (Departments)SELECT id, fullname FROM department WHERE ROWNUM <= 1-- Bodegas (Locations)SELECT id, fullname FROM location WHERE ROWNUM <= 1
Si todas las consultas retornan resultados (o un array items vacío con status 200), las credenciales y permisos están correctamente configurados.
Step-by-step guide for NetSuite account administrators to configure and obtain all the credentials and permissions required by the Payana integration.
Navigate to Setup > Company > Company Information.
Locate the Account ID field (e.g., 1234567 or 1234567_SB1 for sandboxes).
Copy and save this value.
If the Account ID contains an underscore (e.g., _SB1, _RP), it indicates a Sandbox or Release Preview environment. Confirm the environment type when sharing.
Centre Type:Classic Centre — this is critical (see note below).
Under the Authentication subtab:
Check Web Services Only Role.
Click Save (you will add permissions in the next steps).
Why Classic Centre?
NetSuite roles use a Centre Type to determine which UI modules and record types a user can access. Functional centres like Accounting Centre or Employee Centre silently restrict access to certain record types and REST endpoints — even if the permission appears as “Full” in the permissions list. Classic Centre is the only Centre Type that gives unrestricted access to all modules via REST/SOAP, which is required for a server-to-server integration. Using any other centre type is a common cause of 401 Invalid login or empty API responses that are hard to diagnose.
The integration uses SuiteQL to read data. Each table requires the corresponding NetSuite permission. The list below matches the entities the processor accesses (same functional scope as the Odoo integration).
SuiteQL Table
Use in Payana integration
NetSuite permission that enables it
Vendor
Vendors (supplier sync, beneficiary data on payables and payments).
Lists – Vendors
Item
Products and items (inventory and non-inventory).
Lists – Items
Account
GL accounts (books, payment methods, expense accounts on PO and bill lines).
Payment method name on payments (optional; default value used if missing).
Setup – Accounting Lists
Subsidiary
Multi-entity (OneWorld).
Lists – Subsidiaries
Perform Search (Lists) must be Full for SuiteQL queries to work. Find Transaction (Transactions) allows querying the Transaction and TransactionLine tables for the transaction types you have permission for (Bills, Purchase Orders, etc.).
Verify Consumer Key, Consumer Secret, Token ID, and Token Secret are correct and not expired.
403
Insufficient permissions
The role is missing required permissions. Review Sections 4.2–4.5.
404
Wrong Account ID or URL
Confirm the Account ID and that the URL format matches the environment.
Alternative: test with cURL
Copy the following script, replace the credential values at the top, and paste it directly into a terminal (macOS, Linux, or Windows with WSL/Git Bash).Requires curl, openssl, python3, and base64.
Once the basic query works, verify access to the specific record types the integration needs:
-- Vendor billsSELECT id, tranId, entity FROM transaction WHERE type = 'VendBill' AND ROWNUM <= 1-- Purchase ordersSELECT id, tranId, entity FROM transaction WHERE type = 'PurchOrd' AND ROWNUM <= 1-- VendorsSELECT id, companyName FROM vendor WHERE ROWNUM <= 1-- Subsidiaries (OneWorld only)SELECT id, name FROM subsidiary WHERE ROWNUM <= 1-- Cost centers (Departments)SELECT id, fullname FROM department WHERE ROWNUM <= 1-- Warehouses (Locations)SELECT id, fullname FROM location WHERE ROWNUM <= 1
If all queries return results (or an empty items array with a 200 status), the credentials and permissions are correctly configured.
⌘I
Assistant
Responses are generated using AI and may contain mistakes.