Vincular Comprovante ou Nota Fiscal
Cria um registro de anexo vinculado a uma transação e retorna uma URL pré-assinada para upload direto ao S3.
Fluxo de 2 etapas:
- Chame este endpoint com os metadados do arquivo e o ID da transação — retorna o
iddo anexo e auploadUrl. - Faça um
PUTpara auploadUrlcom o binário do arquivo diretamente ao S3 (sem passar pela API).
O id retornado pode ser usado no Download de Anexo após o upload concluir.
Idempotência: este endpoint não suporta o header Idempotency-Key. Cada chamada cria um novo registro de anexo — uma transação pode ter múltiplos anexos vinculados.
curl -X POST "https://api-sandbox.contasimples.com/attachments/v1" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"transactionId": "111304",
"file": {
"name": "nota-fiscal.pdf",
"contentType": "PDF"
},
"description": "Nota fiscal referente à compra"
}'
import requests
import json
url = "https://api-sandbox.contasimples.com/attachments/v1"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"transactionId": "111304",
"file": {
"name": "nota-fiscal.pdf",
"contentType": "PDF"
},
"description": "Nota fiscal referente à compra"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api-sandbox.contasimples.com/attachments/v1", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"transactionId": "111304",
"file": {
"name": "nota-fiscal.pdf",
"contentType": "PDF"
},
"description": "Nota fiscal referente à compra"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"transactionId": "111304",
"file": {
"name": "nota-fiscal.pdf",
"contentType": "PDF"
},
"description": "Nota fiscal referente à compra"
}`)
req, err := http.NewRequest("POST", "https://api-sandbox.contasimples.com/attachments/v1", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api-sandbox.contasimples.com/attachments/v1')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"transactionId": "111304",
"file": {
"name": "nota-fiscal.pdf",
"contentType": "PDF"
},
"description": "Nota fiscal referente à compra"
}'
response = http.request(request)
puts response.body
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "PROCESSING",
"referenceId": "111304",
"file": {
"name": "nota-fiscal.pdf",
"contentType": "PDF"
},
"description": "Nota fiscal referente à compra",
"createdAt": "2026-06-25T22:54:52.000Z",
"uploadUrl": "https://s3.amazonaws.com/bucket/key?X-Amz-Signature=..."
}
{
"error": "Bad Request",
"message": "Um ou mais parâmetros da requisição são inválidos.",
"code": 400,
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"details": [
"O campo exemplo deve ter um valor entre 5 e 100.",
"datas devem estar no formato YYYY-MM-DD."
]
}
{
"error": "Unauthorized",
"message": "Token de acesso inválido ou expirado.",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"code": 401
}
{
"error": "Internal Server Error",
"message": "Ocorreu um erro inesperado ao processar a solicitação.",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"code": 500
}
/attachments/v1
Target server for requests. Edit to use your own host.
Token Bearer obtido via OAuth 2.0 Client Credentials. Formato: Bearer TOKEN
Bearer TOKENThe media type of the request body
ID da transação à qual o documento será vinculado. Corresponde ao campo id retornado pelo Extrato Bancário (numérico — envie o valor como string) ou pelo Extrato de Cartão (ULID).
Descrição do documento (opcional).
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. Token Bearer obtido via OAuth 2.0 Client Credentials. Formato: Bearer TOKEN
Body
ID da transação à qual o documento será vinculado. Corresponde ao campo id retornado pelo Extrato Bancário (numérico — envie o valor como string) ou pelo Extrato de Cartão (ULID).
111304