ตัวอย่างการใช้งาน TypeScript 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 | Notes | 
|---|---|---|---|
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 and document type
import { AuthenResponse, AuthenticationApi } from '@flowaccount/openApi-sdk'
- Setup type Config header Authenticate api
 
type ConfigAuthenticateApi = {
    contentType: string
    grantType: string
    scope: string
    clientId: string
    clientSecret: string
    guid?: string
}
- Create class 
AuthenticateService 
export class AuthenticateService {
    private readonly configAuthenticateApi: ConfigAuthenticateApi
    private authenticateApi: AuthenticationApi
    constructor() {
        this.configAuthenticateApi = <ConfigAuthenticateApi>{
            contentType: 'application/x-www-form-urlencoded',
            grantType: 'client_credentials',
            scope: 'flowaccount-api',
            clientId: 'your-client-id',
            clientSecret: 'your-client-secret',
        }
        this.authenticateApi = new AuthenticationApi()
    }
     public async getAccessToken(): Promise<AuthenResponse> {
        const { contentType, grantType, scope, clientId, clientSecret } = this.configAuthenticateApi
        const res = await this.authenticateApi.tokenPost(contentType, grantType, scope, clientId, clientSecret)
        return res.body
     }
}
- Use method 
getAccessTokenfor generate access token 
    const authenticateService = new AuthenticateService()
    const res = await authenticateService.getAccessToken()
สำหรับลูกค้าที่เชื่อมต่อแบบ OpenID
Parameter
| Name | type | Description | Notes | 
|---|---|---|---|
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 and document type
import { AuthenResponse, AuthenticationApi } from '@flowaccount/openApi-sdk'
- Setup type Config header Authenticate api
 
type ConfigAuthenticateApi = {
    contentType: string
    grantType: string
    scope: string
    clientId: string
    clientSecret: string
    guid?: string
}
- Setup class 
AuthenticateService 
export class AuthenticateService {
    private readonly configAuthenticateApi: ConfigAuthenticateApi
    private authenticateApi: AuthenticationApi
    constructor() {
        this.configAuthenticateApi = <ConfigAuthenticateApi>{
            contentType: 'application/x-www-form-urlencoded',
            grantType: 'client_credentials',
            scope: 'flowaccount-api',
            clientId: 'your-client-id',
            clientSecret: 'your-client-secret',
        }
        this.authenticateApi = new AuthenticationApi()
    }
     public async getAccessToken(guid: string): Promise<AuthenResponse> {
        const { contentType, grantType, scope, clientId, clientSecret} = this.configAuthenticateApi
        const res = await this.authenticateApi.tokenPost(contentType, grantType, scope, clientId, clientSecret, guid)
        return res.body
     }
}
- Use method 
getAccessTokenfor generate access token 
    const guid = 'guid-customer'
    const authenticateService = new AuthenticateService()
    const res = await authenticateService.getAccessToken(guid)
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
importmethodCashInvoiceApiand typeSimpleDocument,SimpleDocumentResponse
import { CashInvoiceApi, SimpleDocument, SimpleDocumentResponse } from "@flowaccount/openapi-sdk"
- Create class 
CashInvoicesService 
export class CashInvoicesService {
    private cashInvoicesApi:  CashInvoiceApi
    constructor() {
        this.cashInvoicesApi = new CashInvoiceApi()
    }
    public async createCashInvoice(accessToken: string, document: SimpleDocument): Promise<SimpleDocumentResponse> {
        const result = await this.cashInvoicesApi.cashInvoicesPost(accessToken, document)
        return result.body
    }
}
importClassSimpleProductItemand typeSimpleDocument
import { SimpleDocument, SimpleProductItem } from "@flowaccount/openapi-sdk"
- 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 
createTaxInvoicefor create tax invoice document 
    const token = `Bearer ${ accessToken }`
    const cashInvoicesService = new CashInvoicesService()
    const res = await cashInvoicesService.createCashInvoice(token, document)
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
importmethodTaxInvoiceApiand typeSimpleDocument,SimpleDocumentResponse
import { SimpleDocument, SimpleDocumentResponse, TaxInvoiceApi } from "@flowaccount/openapi-sdk"
- Create class 
TaxInvoiceService 
export class TaxInvoiceService {
    private taxInvoiceApi: TaxInvoiceApi
    constructor() {
        this.taxInvoiceApi = new TaxInvoiceApi()
    }
    public async createTaxInvoice(accessToken: string, document: SimpleDocument): Promise<SimpleDocumentResponse> {
       const result = await this.taxInvoiceApi.taxInvoicesPost(accessToken, document)
       return result.body
    }
}
importClassSimpleProductItemand typeSimpleDocument
import { SimpleDocument, SimpleProductItem } from "@flowaccount/openapi-sdk"
- 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 
createTaxInvoicefor create tax invoice document 
    const token = `Bearer ${ accessToken }`
    const taxInvoiceService = new TaxInvoiceService()
    const res = await taxInvoiceService.createTaxInvoice(token, document)