SaaSFlow
DevelopersAPIReferencetransactions

Create counter transaction

Book the missing other half of a transfer. When money left one account and the matching arrival was never imported, for example on a cash or wallet account…

Authentication

Checking whether you're signed in…
POST
/companies/{companyId}/transactions/create_counter_transaction

Authorization

headerAuthorization<token>

A SaaSFlow API key (format sf_…) or an OAuth bearer token. Paste only the key — the proxy adds the Bearer prefix. Create an API key in Settings → Company settings → API keys — see API keys.

Path Parameters

companyId*string
Length1 <= length

Request Body

application/json
  1. body
sourceTransactionId*string
Length1 <= length
sourceCategorizationId*string
Length1 <= length
targetAccountId*string
Length1 <= length

Response Body

Counter transaction created

application/json
  1. response
id*string
Formatuuid
companyId*string
Formatuuid
accountId*string

The ID of the account associated with this transaction.

Formatuuid
date*string

The date of the transaction (YYYY-MM-DD).

fromTo*|

A description of the sender or recipient of the transaction.

description*|

A user- or bank-provided description or memo for the transaction.

amountValue*string

The numerical value of the transaction amount.

amountCurrency*string

The currency of the transaction amount.

Value in"EUR""AUD""BRL""CAD""CHF""CNY""CZK""DKK""GBP""HKD""HUF""IDR""ILS""INR""ISK""JPY""KRW""MXN""MYR""NOK""NZD""PHP""PLN""RON""SEK""SGD""THB""TRY""USD""ZAR"
categorizationsAutoAssigned*|

Flag indicating if the categorizations were automatically assigned.

excludeFromAutoCategorization*boolean

Flag to exclude this transaction from automatic categorization.

notes*|

Additional notes or comments for the transaction.

source*|

The source of the transaction data (e.g., bank import, manual entry).

assignedUserId*|

The ID of the user to whom this transaction is assigned for review.

finApiTransactionId*|

The transaction ID from FinAPI, if applicable.

plaidTransactionId*|

The transaction ID from Plaid, if applicable.

counterpartIban*|

The IBAN of the other side of a bank transaction as reported by the bank (uppercase, no spaces), if the bank provides it. Written by the bank connection and read-only. When it equals the IBAN of another account of the company, the transaction is an internal transfer.

endToEndReference*|

The SEPA end-to-end reference of a bank transaction, if the bank provides one. Identical on both legs of one credit transfer. Written by the bank connection and read-only.

stripeBalanceTransactionId*|

The balance transaction ID from Stripe, if applicable.

stripeInvoiceId*|

The invoice ID from Stripe, if applicable.

stripeCreditNoteId*|

The credit note ID from Stripe, if applicable.

stripePaymentIntentId*|

The Stripe PaymentIntent ID from the charge source.

stripeBillingEmail*|

The customer billing email from the Stripe charge source.

hubspotPortalId*|

The HubSpot portal ID from Stripe balance transaction metadata.

hubspotInvoiceId*|

The HubSpot invoice ID from Stripe balance transaction metadata.

hubspotCategorizationResolved*|

Whether HubSpot categorization resolution has been attempted.

finwayExpenseNumber*|

The Finway request number (Antragsnummer) of the request paid by this transaction, if imported from Finway. Can hold several space-separated numbers when one wallet payment covers multiple requests.

finwayInvoiceNumber*|

The supplier-issued invoice number (Rechnungsnummer) from Finway, if applicable.

pleoExpenseId*|

The Pleo expense ID (a UUID, stable across re-exports of the same expense), if imported from Pleo.

paypalTransactionId*|

The PayPal Transaction Search transaction ID, if imported from PayPal. Not unique on its own: PayPal can report the same ID under several event codes, so it identifies a row only together with paypalEventCode.

paypalEventCode*|

The PayPal transaction event code (T-code) describing what the transaction was, e.g. T0006 for an express checkout payment, T0300 for a bank deposit into the PayPal account, T0400 for a withdrawal to a bank account.

paypalReferenceId*string|null
paypalFeeAmount*string|null
digistore24TransactionId*string|null
digistore24PayoutId*string|null
createdVendorId*|
Formatuuid
integrationId*|
Formatuuid
pending*boolean

Flag indicating if the transaction is pending and not yet cleared.

createdTime*|
Formatdate-time
createdUserId*string|null
lastUpdatedTime*|
Formatdate-time
lastUpdatedUserId*string|null
categorizations*

A record mapping categorization IDs to categorization details.

curl -X POST "https://example.com/companies/string/transactions/create_counter_transaction" \  -H "Content-Type: application/json" \  -d '{    "sourceTransactionId": "string",    "sourceCategorizationId": "string",    "targetAccountId": "string"  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda",  "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9",  "date": "string",  "fromTo": "string",  "description": "string",  "amountValue": "string",  "amountCurrency": "EUR",  "categorizationsAutoAssigned": true,  "excludeFromAutoCategorization": true,  "notes": "string",  "source": "string",  "assignedUserId": "string",  "finApiTransactionId": "string",  "plaidTransactionId": "string",  "counterpartIban": "string",  "endToEndReference": "string",  "stripeBalanceTransactionId": "string",  "stripeInvoiceId": "string",  "stripeCreditNoteId": "string",  "stripePaymentIntentId": "string",  "stripeBillingEmail": "string",  "hubspotPortalId": "string",  "hubspotInvoiceId": "string",  "hubspotCategorizationResolved": true,  "finwayExpenseNumber": "string",  "finwayInvoiceNumber": "string",  "pleoExpenseId": "string",  "paypalTransactionId": "string",  "paypalEventCode": "string",  "paypalReferenceId": "string",  "paypalFeeAmount": "string",  "digistore24TransactionId": "string",  "digistore24PayoutId": "string",  "createdVendorId": "91002d41-22cb-48a3-bc93-148a8439ef7f",  "integrationId": "497a18ca-284e-40c0-985d-f72be35d468e",  "pending": true,  "createdTime": "2019-08-24T14:15:22Z",  "createdUserId": "string",  "lastUpdatedTime": "2019-08-24T14:15:22Z",  "lastUpdatedUserId": "string",  "categorizations": {    "property1": {      "counterparty": {        "type": "customer",        "id": "string"      },      "categoryId": "string",      "usingDateRule": {        "type": "transactionDate"      },      "computedStartDate": "2019-08-24",      "computedEndDate": "2019-08-24",      "plSplit": {        "revenue": 0,        "cogs": 0,        "cac": 0,        "pd": 0,        "ga": 0,        "no": 0,        "neutral": 0      },      "passThroughTax": 0,      "transferCounterPosition": {        "transactionId": "string",        "categorizationId": "string"      },      "internalTransitLink": {        "transactionId": "string",        "categorizationId": "string"      },      "sourceNote": "string",      "externalInvoiceUrn": "string"    },    "property2": {      "counterparty": {        "type": "customer",        "id": "string"      },      "categoryId": "string",      "usingDateRule": {        "type": "transactionDate"      },      "computedStartDate": "2019-08-24",      "computedEndDate": "2019-08-24",      "plSplit": {        "revenue": 0,        "cogs": 0,        "cac": 0,        "pd": 0,        "ga": 0,        "no": 0,        "neutral": 0      },      "passThroughTax": 0,      "transferCounterPosition": {        "transactionId": "string",        "categorizationId": "string"      },      "internalTransitLink": {        "transactionId": "string",        "categorizationId": "string"      },      "sourceNote": "string",      "externalInvoiceUrn": "string"    }  }}