ตัวอย่างการใช้งาน JavaScript SDK
Authentication API
All URIs are relative to https://openapi.flowaccount.com/v1
| Name | Method | path | Description | 
|---|---|---|---|
tokenPost | POST | /token | generate access token | 
สำหรับลูกค้าที่เชื่อมต่อแบบ client credentials
Parameter
| Name | type | Description | Value | 
|---|---|---|---|
contentType | string | The media type of the resource | application/x-www-form-urlencoded | 
grantType | string | The OAuth 2.0 grant type being used | client_credentials | 
scope | string | The specific API access level | flowaccount-api | 
clientId | string | The application's client ID | request clientId from FlowAccount | 
clientSecret | string | The application's client secret | request clientSecret from FlowAccount | 
Generate Access Token
importopenapi-sdk
    const flowAccountOpenApi = require('@flowaccount/openapi-sdk')
- Setup header parameter
 
    const clientId = 'your-client-id'
    const clientSecret = 'your-client-secret'
    const contentType = 'application/x-www-form-urlencoded'
    const grantType = 'client_credentials'
    const scope = 'flowaccount-api'
- Use method 
tokenPostfor generate access token 
    const api = new flowAccountOpenApi.Authentication()
    api.tokenPost(contentType, grantType, scope, clientId, clientSecret)
        .then(response => console.log( 'response: ', response.body))
        .catch(error => console.log('error: ' , error))
สำหรับลูกค้าที่เชื่อมต่อแบบ OpenID
Parameter
| Name | type | Description | Value | 
|---|---|---|---|
contentType | string | The media type of the resource | application/x-www-form-urlencoded | 
grantType | string | The OAuth 2.0 grant type being used | client_credentials | 
scope | string | The specific API access level | flowaccount-api | 
clientId | string | The application's client ID | request clientId from FlowAccount | 
clientSecret | string | The application's client secret | request clientSecret from FlowAccount | 
guid | string | A unique identifier for a customer | 
Generate Access Token (OpenID)
importopenapi-sdk
    const flowAccountOpenApi = require('@flowaccount/openapi-sdk')
- Setup header parameter
 
    const clientId = 'your-client-id'
    const clientSecret = 'your-client-secret'
    const contentType = 'application/x-www-form-urlencoded'
    const grantType = 'client_credentials'
    const scope = 'flowaccount-api'
- Use method 
tokenPostfor generate access token 
    const api = new flowAccountOpenApi.Authentication()
    api.tokenPost(contentType, grantType, scope, clientId, clientSecret, guid)
        .then(response => console.log('response: ', response.body))
        .catch(error => console.log('error: ' , error))
Cash invoice API
| Name | Method | path | Description | 
|---|---|---|---|
cashInvoicesPost | POST | /cash-invoices | Create cash invoices document | 
Parameters
| Name | type | Description | Notes | 
|---|---|---|---|
authorization | string | verify user | Bearer accessToken from tokenPost | 
simpleDocument | SimpleDocument | Type Document | Ref.SimpleDocument Data Type | 
Create cash invoice document
importopenapi-sdk and document type
    const flowAccountOpenApi = require('@flowaccount/openapi-sdk')
    const { SimpleDocument, SimpleProductItem } = require('@flowaccount/openapi-sdk')
- Set authorized by accessToken
 
    const authorization = `Bearer ${accessToken}`
- Set 
productItemanddocument 
    const simpleItem = new SimpleProductItem()
    simpleItem.sku = 'customer-product-sku'
    simpleItem.name = 'customer-product-name'
    simpleItem.type = 5
    simpleItem.total = 1000
    simpleItem.pricePerUnit = 200
    simpleItem.quantity = 5
    simpleItem.unitName = 'unit'
    simpleItem.buyChartOfAccountCode = ''
    simpleItem.sellChartOfAccountCode ='41110'
    simpleItem.description = 'product-description'
    const items = []
    items.push(simpleItem)
    const document = new SimpleDocument()
    document.recordId = 0
    document.contactCode = 'contact-code'
    document.contactName = 'name-customer'
    document.contactAddress = 'customer-contact-address'
    document.contactTaxId = '1234567890123'
    document.contactBranch = 'main-branch'
    document.contactPerson = 'contact-person'
    document.contactEmail = 'contact-email'
    document.contactNumber = '099-999-9999'
    document.contactZipCode = '11000'
    document.contactGroup  = 1
    document.publishedOn = '2025-07-21'
    document.creditType = 3
    document.creditDays = 0
    document.dueDate = '2025-07-21'
    document.salesName = 'Sale man 001'
    document.projectName = 'project SDK'
    document.reference = 'INV2025'
    document.isVatInclusive = false
    document.isVat = false
    document.useReceiptDeduction = false
    document.subTotal = 1000
    document.discountPercentage = 5
    document.discountAmount = 50
    document.totalAfterDiscount = 50
    document.items = items
    document.documentShowWithholdingTax = false
    document.documentStructureType = 'Simple document'
    document.grandTotal = 950
- Use method 
cashInvoicesPostfor create document 
    const api = new flowAccountOpenApi.CashInvoiceApi()
    api.cashInvoicesPost(authorization, document)
        .then(response => {console.log('response create cash invoice: ', response.body)})
        .catch(error => {console.log('error: ', error)})
Tax invoices API
| Name | Method | path | Description | 
|---|---|---|---|
taxInvoicesPost | POST | /tax-invoices | Create tax-invoices document | 
Parameters
| Name | type | Description | Notes | 
|---|---|---|---|
authorization | string | verify user | Bearer accessToken from tokenPost | 
simpleDocument | SimpleDocument | Type Document | Ref.SimpleDocument Data Type | 
Create tax invoice
importopenapi-sdk and document type
    const flowAccountOpenApi = require('@flowaccount/openapi-sdk')
    const { SimpleDocument, SimpleProductItem } = require('@flowaccount/openapi-sdk')
- Set authorized by accessToken
 
    const authorization = `Bearer ${accessToken}`
- Set 
productItemanddocument 
    const simpleItem = new SimpleProductItem()
    simpleItem.sku = 'customer-product-sku'
    simpleItem.name = 'customer-product-name'
    simpleItem.type = 5
    simpleItem.total = 1000
    simpleItem.pricePerUnit = 200
    simpleItem.quantity = 5
    simpleItem.unitName = 'unit'
    simpleItem.buyChartOfAccountCode = ''
    simpleItem.sellChartOfAccountCode ='41110'
    simpleItem.description = 'product-description'
    const items = []
    items.push(simpleItem)
    const document = new SimpleDocument()
    document.recordId = 0
    document.contactCode = 'contact-code'
    document.contactName = 'name-customer'
    document.contactAddress = 'customer-contact-address'
    document.contactTaxId = '1234567890123'
    document.contactBranch = 'main-branch'
    document.contactPerson = 'contact-person'
    document.contactEmail = 'contact-email'
    document.contactNumber = '099-999-9999'
    document.contactZipCode = '11000'
    document.contactGroup  = 1
    document.publishedOn = '2025-07-21'
    document.creditType = 3
    document.creditDays = 0
    document.dueDate = '2025-07-21'
    document.salesName = 'Sale man 001'
    document.projectName = 'project SDK'
    document.reference = 'INV2025'
    document.isVatInclusive = false
    document.isVat = false
    document.useReceiptDeduction = false
    document.subTotal = 1000
    document.discountPercentage = 5
    document.discountAmount = 50
    document.totalAfterDiscount = 50
    document.items = items
    document.documentShowWithholdingTax = false
    document.documentStructureType = 'Simple document'
    document.grandTotal = 950
- Use method 
taxInvoicesPostfor create tax invoice document 
    const api = new flowAccountOpenApi.CashInvoiceApi()
    api.cashInvoicesPost(authorization, document)
        .then(response => {console.log( 'response create tax invoice: ', response.body)})
        .catch(error => {console.log('error: ', error)})