Get an upload URL for a Supplier-held Document
curl --request POST \
--url https://sandbox-api.terabusinessfinance.com/v1/supplier-submissions/documents/upload-url \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"external_reference": "<string>",
"filename": "<string>",
"content_type": "<string>",
"byte_size": 123
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
external_reference: '<string>',
filename: '<string>',
content_type: '<string>',
byte_size: 123
})
};
fetch('https://sandbox-api.terabusinessfinance.com/v1/supplier-submissions/documents/upload-url', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox-api.terabusinessfinance.com/v1/supplier-submissions/documents/upload-url"
payload = {
"external_reference": "<string>",
"filename": "<string>",
"content_type": "<string>",
"byte_size": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"document_id": "11111111-1111-4111-8111-111111111111",
"upload_url": "https://upload.example.test/quarantine/supplier-held/example"
}{
"error": {
"code": "bad_request",
"message": "Malformed JSON"
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication failed"
}
}{
"error": {
"code": "forbidden",
"message": "Credential is not authorised for this operation"
}
}{
"error": {
"code": "payload_too_large",
"message": "Request body exceeds 64 KiB"
}
}{
"error": {
"code": "validation_error",
"message": "Request does not match the submission contract",
"details": [
{
"path": "funding_amount",
"message": "Minimum amount is £1,000"
}
]
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after the Retry-After header."
}
}{
"error": {
"code": "service_unavailable",
"message": "Operation could not be completed"
}
}Documents
Get an upload URL for a Supplier-held Document
POST
/
v1
/
supplier-submissions
/
documents
/
upload-url
Get an upload URL for a Supplier-held Document
curl --request POST \
--url https://sandbox-api.terabusinessfinance.com/v1/supplier-submissions/documents/upload-url \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"external_reference": "<string>",
"filename": "<string>",
"content_type": "<string>",
"byte_size": 123
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
external_reference: '<string>',
filename: '<string>',
content_type: '<string>',
byte_size: 123
})
};
fetch('https://sandbox-api.terabusinessfinance.com/v1/supplier-submissions/documents/upload-url', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox-api.terabusinessfinance.com/v1/supplier-submissions/documents/upload-url"
payload = {
"external_reference": "<string>",
"filename": "<string>",
"content_type": "<string>",
"byte_size": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"document_id": "11111111-1111-4111-8111-111111111111",
"upload_url": "https://upload.example.test/quarantine/supplier-held/example"
}{
"error": {
"code": "bad_request",
"message": "Malformed JSON"
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication failed"
}
}{
"error": {
"code": "forbidden",
"message": "Credential is not authorised for this operation"
}
}{
"error": {
"code": "payload_too_large",
"message": "Request body exceeds 64 KiB"
}
}{
"error": {
"code": "validation_error",
"message": "Request does not match the submission contract",
"details": [
{
"path": "funding_amount",
"message": "Minimum amount is £1,000"
}
]
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after the Retry-After header."
}
}{
"error": {
"code": "service_unavailable",
"message": "Operation could not be completed"
}
}Authorizations
Canonical form uses underscore only: tcs_test_<public_id> or tcs_live<public_id>_. Scopes: supplier_submissions:create:basic, supplier_submissions:create:application, supplier_submissions:read, supplier_submissions:correct, supplier_submissions:promote. Effective permission is account ∩ credential ∩ environment. HMAC pepper is SUPPLIER_API_KEY_PEPPER.
Headers
Optional caller correlation id. Tera always returns X-Request-Id; that header is the only correlation identifier.
Required string length:
1 - 128Body
application/json
Required string length:
1 - 128Available options:
bank_statements, accounts, id Required string length:
1 - 255Required string length:
1 - 200Required range:
x <= 9007199254740991Response
Supplier-held Document stored against the supplier reference.
