---
# System prepended metadata

title: BillLoader API for PayZave

---

# BillLoader API for PayZave  

## Environment

> Testing : ***https://bill-loader-api-test.builk.com/swagger/index.html***
> UAT : ***https://bill-loader-api-uat.builk.com/swagger/index.html***
> Production :  
>> ตัวอย่าง Request โดย Postman ***https://www.getpostman.com/collections/5feca9a72736a7b534cd***


## Authorization Method

> การยืนยันตัวตนสำหรับการเรียกใช้งานในทุกๆ API ต้องแนบ Header Request ดังต่อไปนี้

**Header Request**
| Parameter                  | Description                                | Schema  |
| -------------------------- | ------------------------------------------ | ------- |
| authorization (*required*) | JWT Token start with "Bearer "             |string   |

> โดยสามารถได้รับจากการเรียกใช้งาน API `/api/v1/Authentication/OpenApiAuthentication`

### Authentication data 

| Environment   | Endpoint                                | Username   | Password   | Initial authString |
| ------------- | --------------------------------------- | ---------- | ---------- | ------------------ |
| Testing | https://bill-loader-api-test.builk.com  | payzave-demo     | 7kp2Mm7tb6 | PycqNcXk305I4g7hCZRPla7+1oRbMmH6jSIYSZWij4/ia8SAx4kCX9Y1xRrmyRHEcXv2kT8/HG/MDLeIjnWhaW4JcCmJetqIuEVyQHZxNc4qJg83mydNZzDqrBwsTAEolFs9rbNgBGilqPTEIh8fh1/uyc31V+0c74gJRhg7UpuILEp//fzQ9nq0dlVSK2t1Ch51YOulRG7465WRkj6+6CcZlBojdrKfrul5gZpDRPMDZ0hw8o2lARVr4PyIukTNCXfX5IOCZtkK7WVo/8k3ooO/WlX9UdRAxXbGkwlNx+ZufrQUFrIWJ+KkuNRPfq3dztfJ7ffLkuVa1kYFAaV5Mg== |
| User acceptance test   | https://bill-loader-api-uat.builk.com  | payzave-uat     | vU1GcqSRrF | LXER2n8x6zhO4fGDFDA0ZhuCx2N8V/F2LIEyuIadcHk7GdhPxM7W8vLx/w8ySIjCHjC0ck1/9a9fhkITm3vyJZqWu12kYd/A/mcO6ZpClWN/lDkUe9Duvnr+nZ58Hl9u+uqVyFk4DzH7300rum160pKruIbTSVyWhLtBGJrZ+WjZwZevvLOEw2k5YQcp6olAzlgG4v2cjEuoi4KbwqZXQDkMYbsVo09+8xChl7xZpa6tvo86PQWJaABcMS0LvvjssRbjDxSMvLZvpDS8DKsf6LLnCLTrEI+2nydc//XEJIEv1+FGyEBpsrgf5wbFCS933cANplxI/V3SxLG0K7f4og== |


### `POST /api/v1/Authentication/OpenApiAuthentication`

**Body Request**

| Parameter         | Description          | Schema |
| ----------------- | ------------------   | ------ |
| authString        | encyp string         | string |

**Response**

| Parameter   | Description        | Schema |
| ----------- | -----------------  | ------ |
| data        | object return      | object |
| status      |                    | number |
| message     | detail of error    | string |

**Object**

| Parameter    | Description                                      | Schema |
| -----------  | -----------------------------------------------  | ------ |
| accessToken  | jwt token for attachment in header every request | object |
| expiredToken | expired of token in format unix time             | number |

#### Example Request
```    
"PycqNcXk305I4g7hCZRPla7+1oRbMmH6jSIYSZWij4/ia8SAx4kCX9Y1xRrmyRHEcXv2kT8/HG/MDLeIjnWhaW4JcCmJetqIuEVyQHZxNc4qJg83mydNZzDqrBwsTAEolFs9rbNgBGilqPTEIh8fh1/uyc31V+0c74gJRhg7UpuILEp//fzQ9nq0dlVSK2t1Ch51YOulRG7465WRkj6+6CcZlBojdrKfrul5gZpDRPMDZ0hw8o2lARVr4PyIukTNCXfX5IOCZtkK7WVo/8k3ooO/WlX9UdRAxXbGkwlNx+ZufrQUFrIWJ+KkuNRPfq3dztfJ7ffLkuVa1kYFAaV5Mg=="

```

#### Example Response 
```json
{
  "code": 200,
  "message": "Success",
  "timestamp": "2021-02-22T06:21:48.5741764Z",
  "data": {
    "accessToken": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJGYWN0b3JpbmdHdWlkIjoiZDgyZjdjN2MtYTljOS00NmNjLTk0YzItYzI3ODk5NDJkOGQ4IiwibmJmIjoxNjEzOTc0OTA4LCJleHAiOjE2MTM5Nzg1MDgsImlhdCI6MTYxMzk3NDkwOCwiaXNzIjoiYmlsbC1sb2FkZXIuYnVpbGsuY29tIiwiYXVkIjoiZXh0ZXJuYWwtYXV0aC1zZXJ2aWNlIn0.aJ_OdlWP9rJGq_96casoGM5DHv10cyshVDykGbMeMy0",
    "expiredToken": 1613978508
  }
}
```

---

> โดย authString ได้จากการนำ Json body มาเข้ารหัสชนิด RSA ขนาด 2048
> โดยมีเราทำการ generate authString เบื้องต้นไว้ให้ โดยมีเงื่อนไขเวลาหมดอายุของ token ที่ 15 นาที (900 วินาที) 
> > PycqNcXk305I4g7hCZRPla7+1oRbMmH6jSIYSZWij4/ia8SAx4kCX9Y1xRrmyRHEcXv2kT8/HG/MDLeIjnWhaW4JcCmJetqIuEVyQHZxNc4qJg83mydNZzDqrBwsTAEolFs9rbNgBGilqPTEIh8fh1/uyc31V+0c74gJRhg7UpuILEp//fzQ9nq0dlVSK2t1Ch51YOulRG7465WRkj6+6CcZlBojdrKfrul5gZpDRPMDZ0hw8o2lARVr4PyIukTNCXfX5IOCZtkK7WVo/8k3ooO/WlX9UdRAxXbGkwlNx+ZufrQUFrIWJ+KkuNRPfq3dztfJ7ffLkuVa1kYFAaV5Mg== 
>
> ซึ่งถ้าต้องการ custom token expired ให้ทำการสร้าง Json Body ดังนี้

**Json Body**

| Parameter         | Description          | Schema |
| ----------------- | ------------------   | ------ |
| userName          |         | string |
| password          |          | string |
| expiredRequest    | age of token unit is second | number |

```json
    {
      "userName": "payzave-demo",
      "password": "7kp2Mm7tb6",
      "expiredRequest": 3600
    } 
```
> และทำการเข้ารหัสด้วย RSA 2048 Public key
```xml 
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgHD0cv4PdB3yTNL3eJZC
72VZ6AWRjxg/tv4p1s53/2uzcN1HJjKkcnklO6h7w6AZB9WXnXaiwemJux7oDGsq
Ett1Ejx9ayGUI30iKy7WE40Aw5fHKDNWNP2LXTDJ6P6JQhY4kp4T3od3R2ESHCau
VHWelX6+OE8XoPoa5f48/yfQoPcVl/Y/Ig9gNEovT57B6fhp7wM2YKgronaQS1+X
6jqLIryRDkNW6nhJDuTNGx2kCckq/AWzHlSb7Iooi6Iqhy4ZmF+sJhQzhvesaz//
VgnPN06UIbfbo0yVfKhx2JwGYuVJSXzpv0Z5MiD685Jp5LRpaYuxVRRCwqfaVO8s
6wIDAQAB
-----END PUBLIC KEY-----
```


## Data Api
### `POST /api/v1/External/PayZave/IssuePayment`


**Body Request**
| Parameter                              | Description                                                                            | Schema |
| -------------------------------------- | -------------------------------------------------------------------------------------  | ------ |
| requestId (*required*)                 | SpanID from PayZave (max lenght 255)                                                   | string |
| paymentNumber (*required*)             | Format: "PAY-" + running number Payment Number generated from PayZave (max lenght 255) | string |
| paymentDate (*required*)               | Payment date (format YYYY-MM-DD or ISO format)                                         | date   |
| buyerCode  (*optional*)                  | Buyer company code     (max lenght 35)                                                 | string |
| buyerTaxId  (*required*)               | Buyer company tax ID   (max lenght 35)                                                 | string |
| sellerCode  (*optional*)                 | Seller company code    (max lenght 35)                                                 | string |
| sellerTaxId  (*required*)              | Seller company tax ID  (max lenght 35)                                                 | string |
| paymentToSellerNetAmount  (*required*) | Actual payment to seller (bank out) from buyer (max range 9999999999999999.99)         | number |
| buyerBankAccountNumber  (*required*)   | Buyer bank account number (max lenght 35)                                              | string |
| buyerBankAccountName  (*required*)     | Buyer bank account name (max lenght 255)                                               | string |
| buyerBankCode  (*required*)            | Buyer bank code (max lenght 3)                                                         | string |
| buyerBankBranchCode  (*required*)      | Buyer bank branch code (max lenght 35)                                                 | string |
| documentList  (*required*)             |  array of object Document list                                                         | object |

**Document list object**
| Parameter                              | Description                                                                            | Schema |
| -------------------------------------- | -------------------------------------------------------------------------------------  | ------ |
| documentType (*required*)              | Type of document 'BL, INV, CN, DN' (max lenght 35) (now accept only BL type )          | string |
| documentNumber (*required*)            | Seller Document number (Billing, Invoice, CN or DN number) (max lenght 35)             | string |
| documentDate (*required*)              | Seller Document date (format YYYY-MM-DD or ISO format)                                 | string |
| currency (*required*)                  | Money currency (supported only THB) (max lenght 3)                                     | string |
| originalAmount (*required*)  | Original amount of Document (original invoice net amount included VAT, WHT deducted and other deduction) (max range 9999999999999999.99)  | string |
| discountAmount (*required*)  | Discount amount included platform fee (discount amount from request) (max range 9999999999999999.99)| string |
| buyerDocRef1 (*optional*)               | Buyer Document Ref Number 1                                                            | string |
| buyerDocRef2 (*optional*)               | Buyer Document Ref Number 2                                                            | string |

**Response**

| Parameter   | Description                                                                    | Schema |
| ----------- | -----------------------------------------------------------------------------  | ------ |
| data        | data object                                                                    | object |
| status      | status of request (http status in header request will only return 200 )        | number |
| message     | detail of error or 'success'                                                   | string |

**Data object**

| Parameter                | Description                                         | Schema |
| ------------------------ | --------------------------------------------------- | ------ |
| paymentNumber            | PayZave payment number                              | string |
| buyerPaymentDocNumber    | Buyer Payment Document number (have data when 200)  | string |
| buyerPaymentDocRef1 | Buyer Payment Document Ref Number 1                 | string |
| buyerPaymentDocRef2 | Buyer Payment Document Ref Number 2                 | string |


#### Example Request 
```json
{
  "requestId": "2485ec27856c56f4",
  "paymentNumber": "PAY-1",
  "paymentDate": "2021-02-22T08:54:03.705Z",
  "buyerCode": "0010",
  "buyerTaxId": "01234567890123",
  "sellerCode": "0002",
  "sellerTaxId": "01234567890134",
  "paymentToSellerNetAmount": 800,
  "buyerBankAccountNumber": "1234567890",
  "buyerBankAccountName": "บริษัท รับส่วนลด จำกัด",
  "buyerBankCode": "014",
  "buyerBankBranchCode": "0001",
  "documentList": [
    {
      "documentType": "BL"",
      "documentNumber": "INV010101",
      "documentDate": "2021-02-22T08:54:03.705Z",
      "currency": "THB",
      "originalAmount": 15000,
      "paymentAmount": 1000.00,
      "discountAmount": 200,
      "buyerDocNumber": "333f6354-79a6-4895-8941-98208f821f59",
      "buyerDocRef1": "test1",
      "buyerDocRef2": "test2"
    },{
      "documentType": "BL"",
      "documentNumber": "INV010102",
      "documentDate": "2021-02-22T08:54:03.705Z",
      "currency": "THB",
      "originalAmount": 15000,
      "paymentAmount": 1000.00,
      "discountAmount": 200,
      "buyerDocNumber": "333f6354-79a6-4895-8941-98208f821f59",
      "buyerDocRef1": "test1",
      "buyerDocRef2": "test2"
    }
  ]
}
```

#### Example Response 
```json
{
  "code": 200,
  "message": "success",
  "timestamp": "2021-02-22T08:54:03.705Z",
  "data": {
    "paymentNumber": "PAY-1",
    "buyerPaymentDocNumber": "3b345478-1b72-4928-84d6-6abda48b3f3f",
    "buyerPaymentDocRef1": "2020",
    "buyerPaymentDocRef2": "ref2"
  }
}
```

### `POST /api/v1/External/PayZave/ReversePayments`

**Body Request**
| Parameter                              | Description                                                                                  | Schema |
| -------------------------------------- | -------------------------------------------------------------------------------------------  | ------ |
| requestId (*required*)                 | SpanID from PayZave (max lenght 255)                                                         | string |
| buyerPaymentDocNumber (*required*)     | Buyer Payment issue document number (original payment document number) (max lenght 50)       | string |
| buyerPaymentDocRef1 (*required*)       | Buyer Payment Document Ref Number 1 (e.g. Fiscal Year of Payment Document ) (max lenght 255) | date   |
| buyerPaymentDocRef2  (*optional*)      | Buyer Payment Document Ref Number 2 (e.g. Fiscal Year of Payment Document ) (max lenght 255) | string |
| buyerCode  (*required*)                | Buyer company code  (max lenght 35)                                                          | string |
| buyerTaxId  (*required*)               | Buyer company tax ID  (max lenght 35)                                                        | string |
| reverseMessage  (*required*)           | Bank (SCB) error message information (max lenght 255)                                        | string |

**Response**

| Parameter   | Description                                                                    | Schema |
| ----------- | -----------------------------------------------------------------------------  | ------ |
| data        | data object                                                                    | object |
| status      | status of request (http status in header request will only return 200 )        | number |
| message     | detail of error or 'success'                                                   | string |

**Data object**

| Parameter                     | Description                                                                         | Schema |
| ----------------------------- | ----------------------------------------------------------------------------------- | ------ |
| buyerReversalPaymentDocNumber | Buyer Payment reverse document number                                               | string |
| buyerReversalPaymentDocRef1   | Buyer Payment reverse document Ref Number 1 (e.g. Fiscal Year of Payment Document ) | string |
| buyerReversalPaymentDocRef2   | Buyer Payment reverse document Ref Number 1 (e.g. Fiscal Year of Payment Document ) | string |

#### Example Request 
```json
{
  "requestId": "2485ec27856c5694",
  "buyerPaymentDocNumber": "0d4aca83-af21-4d70-bdb9-82b05454d95f",
  "buyerPaymentDocRef1": "Test1",
  "buyerPaymentDocRef2": "Test2",
  "buyerCode": "บริษัท ครี-ฟูล จำกัด",
  "buyerTaxId": "0105541022877",
  "reverseMessage": "Testing reverse"
}
```
#### Example Response 
```json
{
  "code": 200,
  "message": "success",
  "timestamp": "2021-03-04T09:46:04.426Z",
  "data": {
    "buyerReversalPaymentDocNumber": "0d4aca83-af21-4d70-bdb9-82b05454d95f,
    "buyerReversalPaymentDocRef1": "Test1",
    "buyerReversalPaymentDocRef2": "Test2"
  }
}
```