Skip to main content

ตัวอย่างการใช้งาน TypeScript SDK

Authentication API

All URIs are relative to https://openapi.flowaccount.com/v1

NameMethodpathDescription
tokenPostPOST/tokengenerate access token

สำหรับลูกค้าที่เชื่อมต่อแบบ client credentials

Parameter

NametypeDescriptionNotes
contentTypestringThe media type of the resourceapplication/x-www-form-urlencoded
grantTypestringThe OAuth 2.0 grant type being usedclient_credentials
scopestringThe specific API access levelflowaccount-api
clientIdstringThe application's client IDrequest clientId from FlowAccount
clientSecretstringThe application's client secretrequest clientSecret from FlowAccount

Generate Access Token

  1. import openapi-sdk and document type
import { AuthenResponse, AuthenticationApi } from '@flowaccount/openApi-sdk'
  1. Setup type Config header Authenticate api
type ConfigAuthenticateApi = {
contentType: string
grantType: string
scope: string
clientId: string
clientSecret: string
guid?: string
}
  1. 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
}
}
  1. Use method getAccessToken for generate access token
    const authenticateService = new AuthenticateService()

const res = await authenticateService.getAccessToken()

สำหรับลูกค้าที่เชื่อมต่อแบบ OpenID

Parameter

NametypeDescriptionNotes
contentTypestringThe media type of the resourceapplication/x-www-form-urlencoded
grantTypestringThe OAuth 2.0 grant type being usedclient_credentials
scopestringThe specific API access levelflowaccount-api
clientIdstringThe application's client IDrequest clientId from FlowAccount
clientSecretstringThe application's client secretrequest clientSecret from FlowAccount
guidstringA unique identifier for a customer

Generate Access Token (OpenID)

  1. import openapi-sdk and document type
import { AuthenResponse, AuthenticationApi } from '@flowaccount/openApi-sdk'
  1. Setup type Config header Authenticate api
type ConfigAuthenticateApi = {
contentType: string
grantType: string
scope: string
clientId: string
clientSecret: string
guid?: string
}
  1. 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
}
}
  1. Use method getAccessToken for generate access token
    const guid = 'guid-customer'
const authenticateService = new AuthenticateService()

const res = await authenticateService.getAccessToken(guid)

Cash invoice API

NameMethodpathDescription
cashInvoicesPostPOST/cash-invoicesCreate cash invoices document

Parameters

NametypeDescriptionNotes
authorizationstringverify userBearer accessToken from tokenPost
simpleDocumentSimpleDocumentType DocumentRef.SimpleDocument Data Type

Create cash invoice

  1. import method CashInvoiceApi and type SimpleDocument, SimpleDocumentResponse
import { CashInvoiceApi, SimpleDocument, SimpleDocumentResponse } from "@flowaccount/openapi-sdk"
  1. 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
}
}
  1. import Class SimpleProductItem and type SimpleDocument
import { SimpleDocument, SimpleProductItem } from "@flowaccount/openapi-sdk"
  1. Set productItem and document
    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
  1. Use method createTaxInvoice for create tax invoice document
    const token = `Bearer ${ accessToken }`
const cashInvoicesService = new CashInvoicesService()

const res = await cashInvoicesService.createCashInvoice(token, document)

Tax invoices API

NameMethodpathDescription
taxInvoicesPostPOST/tax-invoicesCreate tax-invoices document

Parameters

NametypeDescriptionNotes
authorizationstringverify userBearer accessToken from tokenPost
simpleDocumentSimpleDocumentType DocumentRef.SimpleDocument Data Type

Create tax invoice

  1. import method TaxInvoiceApi and type SimpleDocument, SimpleDocumentResponse
import { SimpleDocument, SimpleDocumentResponse, TaxInvoiceApi } from "@flowaccount/openapi-sdk"
  1. 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
}
}
  1. import Class SimpleProductItem and type SimpleDocument
import { SimpleDocument, SimpleProductItem } from "@flowaccount/openapi-sdk"
  1. Set productItem and document
    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
  1. Use method createTaxInvoice for create tax invoice document
    const token = `Bearer ${ accessToken }`
const taxInvoiceService = new TaxInvoiceService()

const res = await taxInvoiceService.createTaxInvoice(token, document)