When to use it: Use this webhook to register a new incoming payment/transaction into a merchant account.
webhookType: SAVE_TRANSACTION
When working with transactions, it is essential to use a common identifier to link multiple transactions associated with a single expense. To achieve this, ensure that the orderId field within the SAVE_TRANSACTION webhook contains the same unique value for all related transactions, such as reserve transactions, accepted transactions, and others.
For a proper categorisation of the transactions, make sure you are identifying the different fields, by looking at the Mapping and Enums documentation, paying special attention to the logic affecting the fields Pay type and Transaction type .
See all available transaction statuses
Dynamic fields
If you would like to display any additional information related to a transaction, you can pass this information using **dynamicFields** field.
Transaction title
Transaction title is used to identify the key description or label associated with a transaction. It helps users quickly understand the nature of the transaction. You can define your own transaction title or use Toqio default values. By default, the transaction title is populated with specific data based on Pay type The following rules apply:
- Card Transaction:
- Refund: The title is set to a static text value, "Refund - [merchant]", where [merchant] is the merchant field data. This title can be overridden if a custom title is provided by the system integrator.
- All Other Transaction Types: The title is populated with the
merchant
field name.
- Inbound Transactions:
- Refund: The title is set to "Refund - [source account name]," where [source account name] refers to the originating account. This can also be overridden by a custom title provided by the system integrator.
- All Other Transaction Types: The title is populated with the
sourceAccount name
.
- Outbound Transactions: the title is populated with the
destinationAccount name
. - Manual Transactions: the title is populated with the
merchant
field.
Request Body per Pay Type
When sending the "Save Transaction" webhook, the required minimum fields vary depending on the pay type.
CARD: This type represents transactions made using debit cards
CARD
{
"id": "uuid",
"user": "string",
"company": "string", //mandatory
"customer": "string",// mandatory
"clientType": "BUSINESS | CONSUMER", //mandatory
"type": "EXPENSE | PAYMENT | INBOUND | REFUND", //mandatory
"status": "FAILED | PENDING | ACCEPTED | CANCELLED",// mandatory
"currency": "string", //mandatory
"baseCurrency": "string", //mandatory
"total": "number (double)",// mandatory
"baseTotal": "number (double)", //mandatory
"transactionNumber": "string", //mandatory
"merchant": "string",
"address": "string",
"payType": "CARD | INBOUND_BANK_TRANSFER | OUTBOUND_BANK_TRANSFER", //mandatory
"date": "string (date)",//mandatory
"sourceAccount": { //mandatory
"id": "uuid",
"type": "AUD | CHF | CAD | SEK | GOLDBLOC | USD | NOK | WHISKY | JPY | NZD | GOLD | GBP | EUR | CZK | DKK | HUF | PLN | RON | ILS | RUB | BHD | SAR | BGN | KES | SGD | KWD | ZAR | CNY | MYR | HRK | MXN | THB | TRY | OMR | UGX | HKD | PHP | AED | INR | QAR | IDR | POINTS",
"name": "string",
"iban": "string",
"bicSwift": "string",
"ukAccountNumber": "string",
"ukSortCode": "string",
"accountNumber": "string",
"routingNumber": "string",
"caRoutingNumber": "string",
"address": "string",
"address2": "string",
"city": "string",
"postalCode": "string",
"countryCode": "string"
},
"balance": "number (double)", //mandatory
"country": "string",
"corePaymentType": "payment-type-Global-SWIFT | payment-type-UK-BACS | payment-type-EU-SEPA-Target2 | payment-type-UK-Chaps | payment-type-EU-SEPA-Step2 | payment-type-virtual-debit-card-debit | payment-type-inter-ledger | payment-type-UK-FasterPayments | payment-type-fx | payment-type-card | payment-type-card-reserve | payment-type-EU-SEPA-Instant | payment-type-AU-NPP | payment-type-EU-Target2 | payment-type-AU-DE | payment-type-US-ACH | payment-type-SG-FAST | payment-type-US-Wires | SPEI | AUS-PAY-NET | EFT | NCS | CERTIS | STRAKSCLEARING-Instant | INTRADAGCLEARING | CHATS | GIRO_ZRT | IMPS | NEFT | SKN | IBG | NORWEGIAN-INTERBANK-CLEARING-SYSTEM | PESONET | ELIXIR | TRANSFOND_SENT_ACH | FAST | INTERNAL-TRANSFER | RIX | FEDACH | FEDWIRE | CHIPS | SEPA | TARGET2 | DIRECT_DEBIT_OUTBOUND", //mandatory
"bankName": "string", //mandatory
"bankLogo": "string",
"bankDescription": "string", //mandatory
"failureReason": "string",
"finalTxNumber": "string",
"cardId": "string",
"orderId": "string",
"ledgerType": "string",
"dynamicFields" : [{
"label": {"en":"string", "es":"string", "xh":"string"},
"valueId": "string",
"value": "string"
}],
"emails": ["string"],
"advancedInvoiceId":"string",
"transactionTitle":"string",
"card":"string",
"cardId":"string",//mandatory
"txFee":"string",
"cardTransactionType":"string"
}
INBOUND_BANK_TRANSFER: This type signifies funds received through bank transfers.
INBOUND_BANK_TRANSFER
{
"id": "uuid",
"user": "string",
"company": "string", //mandatory
"customer": "string", //mandatory
"clientType": "BUSINESS | CONSUMER", //mandatory
"type": "EXPENSE | PAYMENT | INBOUND | REFUND", //mandatory
"status": "FAILED | PENDING | ACCEPTED | CANCELLED", //mandatory
"currency": "string",// mandatory
"baseCurrency": "string",// mandatory
"total": "number (double)",// mandatory
"baseTotal": "number (double)",// mandatory
"transactionNumber": "string", //mandatory
"merchant": "string",
"address": "string",
"payType": "CARD | INBOUND_BANK_TRANSFER | OUTBOUND_BANK_TRANSFER", //mandatory
"date": "string (date)",//mandatory
"sourceAccount": { //mandatory
"id": "uuid",
"type": "AUD | CHF | CAD | SEK | GOLDBLOC | USD | NOK | WHISKY | JPY | NZD | GOLD | GBP | EUR | CZK | DKK | HUF | PLN | RON | ILS | RUB | BHD | SAR | BGN | KES | SGD | KWD | ZAR | CNY | MYR | HRK | MXN | THB | TRY | OMR | UGX | HKD | PHP | AED | INR | QAR | IDR | POINTS",
"name": "string",
"iban": "string",
"bicSwift": "string",
"ukAccountNumber": "string",
"ukSortCode": "string",
"accountNumber": "string",
"routingNumber": "string",
"caRoutingNumber": "string",
"address": "string",
"address2": "string",
"city": "string",
"postalCode": "string",
"countryCode": "string"
},
"balance": "number (double)", //mandatory
"country": "string",
"corePaymentType": "payment-type-Global-SWIFT | payment-type-UK-BACS | payment-type-EU-SEPA-Target2 | payment-type-UK-Chaps | payment-type-EU-SEPA-Step2 | payment-type-virtual-debit-card-debit | payment-type-inter-ledger | payment-type-UK-FasterPayments | payment-type-fx | payment-type-card | payment-type-card-reserve | payment-type-EU-SEPA-Instant | payment-type-AU-NPP | payment-type-EU-Target2 | payment-type-AU-DE | payment-type-US-ACH | payment-type-SG-FAST | payment-type-US-Wires | SPEI | AUS-PAY-NET | EFT | NCS | CERTIS | STRAKSCLEARING-Instant | INTRADAGCLEARING | CHATS | GIRO_ZRT | IMPS | NEFT | SKN | IBG | NORWEGIAN-INTERBANK-CLEARING-SYSTEM | PESONET | ELIXIR | TRANSFOND_SENT_ACH | FAST | INTERNAL-TRANSFER | RIX | FEDACH | FEDWIRE | CHIPS | SEPA | TARGET2 | DIRECT_DEBIT_OUTBOUND", //mandatory
"bankName": "string", //mandatory
"bankLogo": "string",
"bankDescription": "string",// mandatory
"failureReason": "string",
"finalTxNumber": "string",
"cardId": "string",
"orderId": "string",
"ledgerType": "string",
"dynamicFields" : [{
"label": {"en":"string", "es":"string", "xh":"string"},
"valueId": "string",
"value": "string"
}],
"emails": ["string"],
"advancedInvoiceId":"string",
"transactionTitle":"string",
"destinationAccount"://mandatory
{
"id": "string",
"type": "gbp | eur | aud | chf | cad | sek | usd | points | nok | jpy | sgd | nzd | czk | dkk | huf | pln | ron | ils | rub | bhd | sar | bgn | kes | kwd | zar | cny | myr | hrk | mxn | thb | try | omr | ugx | hkd | php | aed | inr | qar | idr",
"name": "string",
"iban": "string",
"bicSwift": "string",
"ukAccountNumber": "string",
"ukSortCode": "string",
"routingNumber": "string",
"caRoutingNumber": "string",
"accountNumber": "string",
"bsbCode": "string",
"address": "string",
"address2": "string",
"city": "string",
"postalCode": "string",
"countryCode": "string",
"main": true,
"bankingProvider": "string",
"ledgerType": "string"
},
"concept":"string"//mandatory
}
OUTBOUND_BANK_TRANSFER: This type denotes funds sent through bank transfers.
OUTBOUND_BANK_TRANSFER
{
"id": "uuid",
"user": "string",
"company": "string", //mandatory
"customer": "string", //mandatory
"clientType": "BUSINESS | CONSUMER", //mandatory
"type": "EXPENSE | PAYMENT | INBOUND | REFUND", //mandatory
"status": "FAILED | PENDING | ACCEPTED | CANCELLED", //mandatory
"currency": "string", //mandatory
"baseCurrency": "string", //mandatory
"total": "number (double)", //mandatory
"baseTotal": "number (double)", //mandatory
"transactionNumber": "string", //mandatory
"merchant": "string",
"address": "string",
"payType": "CARD | INBOUND_BANK_TRANSFER | OUTBOUND_BANK_TRANSFER", //mandatory
"date": "string (date)",//mandatory
"sourceAccount": { //mandatory
"id": "uuid",
"type": "AUD | CHF | CAD | SEK | GOLDBLOC | USD | NOK | WHISKY | JPY | NZD | GOLD | GBP | EUR | CZK | DKK | HUF | PLN | RON | ILS | RUB | BHD | SAR | BGN | KES | SGD | KWD | ZAR | CNY | MYR | HRK | MXN | THB | TRY | OMR | UGX | HKD | PHP | AED | INR | QAR | IDR | POINTS",
"name": "string",
"iban": "string",
"bicSwift": "string",
"ukAccountNumber": "string",
"ukSortCode": "string",
"accountNumber": "string",
"routingNumber": "string",
"caRoutingNumber": "string",
"address": "string",
"address2": "string",
"city": "string",
"postalCode": "string",
"countryCode": "string"
},
"balance": "number (double)", //mandatory
"country": "string",
"corePaymentType": "payment-type-Global-SWIFT | payment-type-UK-BACS | payment-type-EU-SEPA-Target2 | payment-type-UK-Chaps | payment-type-EU-SEPA-Step2 | payment-type-virtual-debit-card-debit | payment-type-inter-ledger | payment-type-UK-FasterPayments | payment-type-fx | payment-type-card | payment-type-card-reserve | payment-type-EU-SEPA-Instant | payment-type-AU-NPP | payment-type-EU-Target2 | payment-type-AU-DE | payment-type-US-ACH | payment-type-SG-FAST | payment-type-US-Wires | SPEI | AUS-PAY-NET | EFT | NCS | CERTIS | STRAKSCLEARING-Instant | INTRADAGCLEARING | CHATS | GIRO_ZRT | IMPS | NEFT | SKN | IBG | NORWEGIAN-INTERBANK-CLEARING-SYSTEM | PESONET | ELIXIR | TRANSFOND_SENT_ACH | FAST | INTERNAL-TRANSFER | RIX | FEDACH | FEDWIRE | CHIPS | SEPA | TARGET2 | DIRECT_DEBIT_OUTBOUND", //mandatory
"bankName": "string", //mandatory
"bankLogo": "string",
"bankDescription": "string", //mandatory
"failureReason": "string",
"finalTxNumber": "string",
"cardId": "string",
"orderId": "string",
"ledgerType": "string",
"dynamicFields" : [{
"label": {"en":"string", "es":"string", "xh":"string"},
"valueId": "string",
"value": "string"
} ],
"emails": ["string"],
"advancedInvoiceId":"string",
"transactionTitle":"string",
"txFee":"string",
"fxRate":"string",
"fixedSide":"string",
"beneficiaryCurrencyAmount":"string",
"reference":"string",
"paymentProviderDetails":"string",
"postingDate":"string",
"settlementDate":"string",
"mandateId":"string",
"frequency":"string",//mandatory
"destinationAccount": //mandatory
{
"id": "string",
"type": "gbp | eur | aud | chf | cad | sek | usd | points | nok | jpy | sgd | nzd | czk | dkk | huf | pln | ron | ils | rub | bhd | sar | bgn | kes | kwd | zar | cny | myr | hrk | mxn | thb | try | omr | ugx | hkd | php | aed | inr | qar | idr", "name": "string",
"iban": "string",
"bicSwift": "string",
"ukAccountNumber": "string",
"ukSortCode": "string",
"routingNumber": "string",
"caRoutingNumber": "string",
"accountNumber": "string",
"bsbCode": "string",
"address": "string",
"address2": "string",
"city": "string",
"postalCode": "string",
"countryCode": "string",
"main": true,
"bankingProvider": "string",
"ledgerType": "string"
},
"concept":"string",//mandatory
}
EXAMPLE
{
"id": "c14a080d-7bd3-4bab-8e2f-1d71a0123e5f",
"user": "John Doe",
"company": "ABC Inc.",
"customer": "Jane Smith",
"clientType": "BUSINESS",
"type": "EXPENSE",
"status": "ACCEPTED",
"currency": "USD",
"baseCurrency": "USD",
"total": 250.75,
"baseTotal": 250.75,
"transactionNumber": "TXN123456",
"merchant": "Office Depot",
"address": "123 Main St",
"payType": "OUTBOUND_BANK_TRANSFER",
"date": "2024-06-27",
"sourceAccount": {
"id": "60d7f7a3f163b41f94f89c24",
"type": "USD",
"name": "Primary Account",
"iban": "GB29NWBK60161331926819",
"bicSwift": "NWBKGB2L",
"ukAccountNumber": "41495926",
"ukSortCode": "601613",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"caRoutingNumber": "123456789",
"address": "456 Elm St",
"address2": "",
"city": "London",
"postalCode": "SW1A 1AA",
"countryCode": "GB"
},
"balance": 5000.25,
"country": "UK",
"corePaymentType": "payment-type-UK-BACS",
"bankName": "New Bank",
"bankLogo": "https://example.com/bank-logo.png",
"bankDescription": "A new bank for the future",
"failureReason": "",
"finalTxNumber": "FINAL123",
"cardId": "",
"orderId": "ORDER987654",
"ledgerType": "BANK_TRANSFER",
"dynamicFields": [
{
"label": {
"en": "Payment Reference",
"es": "Referencia de pago",
"xh": "Isalathisi yokuhlawula"
},
"valueId": "reference123",
"value": "REF0012345"
}
],
"emails": ["[email protected]"],
"advancedInvoiceId": "ADV987654",
"transactionTitle": "Office Supplies Payment",
"destinationAccount": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"type": "USD",
"name": "Business Account",
"iban": "US98765432109876543210",
"bicSwift": "NEWBGB2L",
"ukAccountNumber": "98765432",
"ukSortCode": "987654",
"routingNumber": "021000021",
"caRoutingNumber": "987654321",
"accountNumber": "1234567890",
"bsbCode": "987-654",
"address": "789 Corporate Blvd",
"address2": "Suite 200",
"city": "Manchester",
"postalCode": "M1 1AA",
"countryCode": "GB",
"main": true,
"bankingProvider": "BankCorp",
"ledgerType": "TRANSFER"
},
"concept": "Payment for office supplies"
}