TransactionsUpdate Card Transaction

Update Card Transaction

Updates editable fields on a credit card transaction, identified by transactionId.

Use this endpoint to enrich expenses in your reconciliation flow or ERP — for example, by recording purchase context, reconciling the transaction, or classifying it by category.

Editable fields today:

  • notes — transaction notes (max 1000 characters). Send an empty string ("") to clear.
  • isConciled — marks the transaction as reconciled. Only true is accepted: reconciling cannot be undone once applied.
  • categoryId — numeric category ID.
  • costCenterId — UUID of the cost center (use the id field from GET /cost-centers/v1/cost-centers).

Rules:

  • transactionId must be the transaction id from the statement (GET /statements/v1/credit-card) — a ULID (e.g. 01JB4M8WQ2YX5KN7RT9HF3DE6C), not a UUID.
  • At least one field must be provided in the body.
  • Sending isConciled: false returns 400 Bad Request.
  • A categoryId or costCenterId that doesn't exist for the company returns 400 Bad Request.
  • When the transaction can't be reconciled, the API returns 409 Conflict.
  • On success, the API returns 204 No Content (no body).

Example:

curl -X PATCH https://api-sandbox.contasimples.com/statements/v1/credit-card/01JB4M8WQ2YX5KN7RT9HF3DE6C \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"notes":"Lunch with Acme client","isConciled":true,"categoryId":1146}'
curl -X PATCH "https://api-sandbox.contasimples.com/statements/v1/credit-card/01JB4M8WQ2YX5KN7RT9HF3DE6C" \
  -H "Content-Type: application/json" \
  -H "Signature-Input: example_string" \
  -H "Signature: example_string" \
  -H "Content-Digest: example_string" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "notes": "Lunch with Acme client — sales meeting 2025-05-25",
  "isConciled": true,
  "categoryId": 1146,
  "costCenterId": "a02f8f63-8b1b-4328-9d7d-0d2e351b8118"
}'
{}
PATCH
/statements/v1/credit-card/{transactionId}
PATCH
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

Bearer token from OAuth 2.0 client credentials. Format: Bearer TOKEN

Bearer token from OAuth 2.0 client credentials. Format: Bearer TOKEN
path
transactionIdstring
Required

Transaction ID on the statement (ULID) — use the id field from GET /statements/v1/credit-card (e.g. 01JB4M8WQ2YX5KN7RT9HF3DE6C).

Content-Typestring
Required

The media type of the request body

Options: application/json
header
Signature-Inputstring

What was signed and the signature parameters, in the RFC 9421 format. A credential with a public key must send it on every call, reads included, or the request is refused with 401. The signature covers the @method, @path, and @query components, and also content-digest when there is a body. created and alg are required, and created is valid for 300 seconds. The full format, with examples, is in Request Signing.

header
Signaturestring

The signature of the base defined by RFC 9421, in base64, between : and under the same label used in Signature-Input, for example sig=:SGVsbG8gd29ybGQ=:. It always goes together with Signature-Input.

header
Content-Digeststring

Hash of the request body in the RFC 9530 format, with sha-256 or sha-512, for example sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:. It is required when the request has a body and the credential has a public key, and in that case Signature-Input must include the content-digest component.

notesstring

Transaction notes. Send an empty string ("") to clear.

Max length: 1000
isConciledboolean

Marks the transaction as reconciled. Only true is accepted — reconciling cannot be undone once applied.

Options: true
categoryIdinteger

Category ID — use the id field from GET /categories/v1/categories.

costCenterIdstring

UUID of the cost center — use the id field from GET /cost-centers/v1/cost-centers.

Format: uuid
Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Bearer token from OAuth 2.0 client credentials. Format: Bearer TOKEN

Path Parameters

transactionIdstring
Required

Transaction ID on the statement (ULID) — use the id field from GET /statements/v1/credit-card (e.g. 01JB4M8WQ2YX5KN7RT9HF3DE6C).

Example:
01JB4M8WQ2YX5KN7RT9HF3DE6C

Headers

Signature-Inputstring

What was signed and the signature parameters, in the RFC 9421 format. A credential with a public key must send it on every call, reads included, or the request is refused with 401. The signature covers the @method, @path, and @query components, and also content-digest when there is a body. created and alg are required, and created is valid for 300 seconds. The full format, with examples, is in Request Signing.

Signaturestring

The signature of the base defined by RFC 9421, in base64, between : and under the same label used in Signature-Input, for example sig=:SGVsbG8gd29ybGQ=:. It always goes together with Signature-Input.

Content-Digeststring

Hash of the request body in the RFC 9530 format, with sha-256 or sha-512, for example sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:. It is required when the request has a body and the credential has a public key, and in that case Signature-Input must include the content-digest component.

Body

application/json
notesstring

Transaction notes. Send an empty string ("") to clear.

Example:
Lunch with Acme client — sales meeting 2025-05-25
isConciledboolean

Marks the transaction as reconciled. Only true is accepted — reconciling cannot be undone once applied.

Allowed values:true
categoryIdinteger

Category ID — use the id field from GET /categories/v1/categories.

Example:
1146
costCenterIdstring

UUID of the cost center — use the id field from GET /cost-centers/v1/cost-centers.

Example:
a02f8f63-8b1b-4328-9d7d-0d2e351b8118

Responses