API Use Cases & Integration Guide

Simple step-by-step examples to integrate TIB Finance payments

2 Countries
CA • US
$600M+ Processed
Annually
12+ Industries
SaaS to Gov
9 Payment Flows
Full Automation
5 SDKs
.NET PHP Python Node JS
24/7 Instant Deposits
365 Days/Year

Getting Started

Two environments, one simple API format

Sandbox (Testing)

https://sandboxportal.tib.finance

Get free sandbox credentials →

Production (Live)

https://portal.tib.finance

Create a live account →

Every API call uses the same format: POST [BaseURL]/Data/[MethodName]

The API uses Rijndael (AES-256) encryption for all payloads. Our SDKs handle encryption automatically — the cURL examples below show the decrypted JSON structure for clarity.

// Your first call: CreateSession POST https://sandboxportal.tib.finance/Data/CreateSession // Request: { "ClientId": "YOUR_CLIENT_ID", "Username": "YOUR_USERNAME", "Password": "YOUR_PASSWORD" } // Response: { "SessionId": "46a84f3f-c4fb-4d00-b3ff-caf6c85d06d4", "HasError": false, "Messages": "" }
Tip: The SessionId is used in all subsequent API calls. SDKs for .NET, PHP, Python, Node.js, JavaScript handle encryption and session management automatically.

Why Developers Choose TIB

Enterprise infrastructure with startup simplicity

One API, All Payments

Credit cards, bank transfers, Interac, instant deposits — one integration covers everything. No juggling multiple providers.

Multi-Currency & Multi-Country

Process in CAD and USD. Serve businesses in Canada and the US from a single platform.

Enterprise Multi-Tenant

Build a payment platform with sub-clients, white-labeling, and per-merchant configuration. Used by SaaS and fintech companies.

Free Sandbox, No Risk

Test with real API calls, fake money. $2,500 in free development for qualifying businesses through our Beta Program.

Complete Integration Lifecycle

Follow the 8 steps from authentication to payment confirmation

1
Authenticate
Your Software

ClientId, Username, Password

TIB Finance API

SessionId (GUID)

All subsequent calls require this SessionId as a header.
2
Register Customer
Your Software

CustomerName, ExternalId

TIB Finance API

CustomerId (GUID)

Store the CustomerId — you'll reuse it for all this customer's payments.
3
Add Payment Method
Your Software

Bank account or Credit card details

TIB Finance API

PaymentMethodId (GUID)

4
Create Invoice
Your Software

MerchantId, Amount, Currency, CustomerId

TIB Finance API

BillId (GUID)

The bill represents the invoice; the payment is a separate step.
5
Process Payment
Your Software

BillId, PaymentFlow: 5

TIB Finance API

PaymentId + auto-processed

Flow 5 = fully automated. The payment is charged immediately.
6
Monitor Status
Your Software

MerchantId, DateRange

TIB Finance API

TransferStatus + BankResultCode

Poll this endpoint or use webhooks to track settlement progress.
How Processing Works

Each money transfer generates a minimum of 3 operations, each with up to 4 transactions.

Collection Flow (Collecting from customer)
  • 1. Collect funds from customer payment method
  • 2. Deposit funds into merchant account
  • 3. Collect fees (grouped on the 5th of next month)
Deposit Flow (Sending to customer)
  • 1. Collect funds from merchant account
  • 2. Deposit funds into customer payment method
  • 3. Collect fees (grouped on the 5th of next month)
Each Operation Has 4 Transaction Steps
  • 1. Validation — verify parameters
  • 2. Transmit — send collection/deposit to bank
  • 3. Check Status — waiting & verification
  • 4. Check Payback — NSF & opposition check

To get the full transfer status, verify all sub-transaction statuses across all operations.

7
Verify Result
Your Software

Decision branch — check BankResultCode

BankResultCode
Result Codes
1 = Confirmed 3 = NSF 4 = Error 5 = Opposition
Code 1 means funds settled. Any other code requires action in your system.
Easy Error Handling

Check each transaction status using this simple approach:

Status 0 Still waiting for process execution.
Note: payback check can stay in this status for up to 3 months.

Status 1 TIB Validation — TIB confirms the transaction is valid and accepted.

Status 2 Banking Network — The banking network has confirmed the transaction.

Status 3 Funds Settled — Funds have been successfully deposited.

Status 4 Process Complete — Full process completed, including payback verification.

All transactions have a status and a detailed description. Verify all sub-transaction statuses to determine the overall process status.

8
Refund (Optional)
Your Software

TransferId

TIB Finance API

Reversal confirmation

Only available for confirmed transfers. Initiates a credit back to the customer.
Interac Variant — Alternative to Steps 3–5
Your Software

Email or Phone, Amount

CreateDirectInterac…
TIB Finance API

Interac transaction created — customer receives email/SMS

Full method: CreateDirectInteracTransaction — replaces steps 3, 4, and 5 in a single call. Canada only.

13 Use Cases — From Simple to Enterprise

Click any card to jump to the full code example

Use Case 1

Collect a Payment Automatically

Charge a known customer with a registered payment method. No customer interaction — the payment processes automatically using Payment Flow 5.

// Step 1: Create Session (see Getting Started above) // Step 2: Create Customer POST /Data/CreateCustomer { "SessionToken": "session-guid", "ServiceId": "your-service-id", "Customer": { "CustomerName": "John Smith", "CustomerExternalId": "CUST-001", "Language": 2 } } // Response: { "CustomerId": "customer-guid" } // Step 3: Add Bank Account (set as default) POST /Data/CreateDirectAccountPaymentMethod { "SessionToken": "session-guid", "CustomerId": "customer-guid", "IsCustomerAutomaticPaymentMethod": true, "Account": { "Owner": "John Smith", "AccountName": "Main checking", "BankNumber": "003", "InstitutionNumber": "12345", "AccountNumber": "9876543" } } // Response: { "PaymentMethodId": "pm-guid" } // Step 4: Create Bill POST /Data/CreateBill { "SessionToken": "session-guid", "BreakIfMerchantNeverBeenAuthorized": true, "BillData": { "MerchantId": "your-merchant-id", "BillTitle": "Invoice #1001", "BillDescription": "Monthly service fee", "BillAmount": 99.99, "BillCurrency": 1, "Language": 2, "RelatedCustomerId": "customer-guid" } } // Response: { "BillId": "bill-guid" } // Step 5: Create Payment (Flow 5 = automatic) POST /Data/CreatePayment { "SessionToken": "session-guid", "BillId": "bill-guid", "SetPaymentCustomerFromBill": true, "PaymentInfo": { "PaymentFlow": 5 } } // Response: { "PaymentId": "pay-guid", "PaymentFlowParsingResult": 1 }
Important: IsCustomerAutomaticPaymentMethod: true makes this the default method — required for Flow 5. PaymentFlowParsingResult: 1 means success. Steps 2-3 only need to be done once per customer — reuse CustomerId for future bills.
Use Case 2

Send a Payment Link by Email

The customer receives an email with a secure link to enter their payment information. No pre-saved payment method needed. Uses Payment Flow 1 (Anonymous).

// Steps 1-2: CreateSession + CreateCustomer (same as Use Case 1) // Step 3: Create Bill (no payment method needed) POST /Data/CreateBill { "SessionToken": "session-guid", "BillData": { "MerchantId": "your-merchant-id", "BillTitle": "Invoice #2001", "BillDescription": "Consulting services", "BillAmount": 250.00, "BillCurrency": 1, "Language": 2, "RelatedCustomerId": "customer-guid" } } // Step 4: Create Payment with email link POST /Data/CreatePayment { "SessionToken": "session-guid", "BillId": "bill-guid", "SetPaymentCustomerFromBill": true, "CustomerEmail": "[email protected]", "PaymentInfo": { "PaymentFlow": 1, "Language": "EN" } } // TIB sends the email automatically with a secure payment link.
Important: CustomerEmail is required for Flow 1. The email is sent automatically by TIB — you don't need to build an email system. The customer can pay with bank account or credit card.
Use Case 3

Recurring Monthly Payments

Set up automatic monthly collection for subscriptions, rent, memberships. Same as Use Case 1 but with TransferFrequency: 4 (Monthly).

// Steps 1-4: Same as Use Case 1 (Session, Customer, PaymentMethod, Bill) // Step 5: Create RECURRING Payment POST /Data/CreatePayment { "SessionToken": "session-guid", "BillId": "bill-guid", "SetPaymentCustomerFromBill": true, "PaymentInfo": { "PaymentFlow": 5, "TransferFrequency": 4 } } // The payment repeats every month automatically! // List active recurring transfers POST /Data/GetRecuringTransfers { "SessionToken": "session-guid", "ServiceId": "your-service-id" } // Cancel a recurring transfer POST /Data/DeleteRecuringTransfer { "SessionToken": "session-guid", "RecuringTransferId": "recurring-guid" }
Frequencies: 0=Once, 1=Daily, 2=Weekly, 3=Every 2 Weeks, 4=Monthly, 5=Trimester, 6=Bi-Annual, 7=Annual
Use Case 4

Direct Deposit to External Account

Send money from your merchant account to any external bank account. Payroll, supplier payments, refunds. Only 2 API calls.

// Step 1: CreateSession (see Getting Started) // Step 2: Direct Deposit POST /Data/CreateDirectDeposit { "SessionToken": "session-guid", "OriginMerchantId": "your-merchant-id", "DestinationAccount": { "Owner": "Supplier Corp Inc.", "AccountName": "Business account", "BankNumber": "006", "InstitutionNumber": "54321", "AccountNumber": "1234567" }, "Amount": 5000.00, "Currency": 1, "Language": 2, "ReferenceNumber": "PAY-2026-001" }
Tip: No need to create a customer or bill — just the merchant and destination bank account. Canadian banks use 3-digit bank number + 5-digit transit number + account number. Use DepositDueDate to schedule a future deposit.
Use Case 5

Interac e-Transfer

Send or request money via Interac e-Transfer using an email or phone number. Only 2 API calls.

// Send money (Deposit) via Interac POST /Data/CreateDirectInteracTransaction { "SessionToken": "session-guid", "MerchantId": "your-merchant-id", "InteracInformation": { "Description": "Freelancer payment", "Owner": "Kelly Freelancer", "TargetEmailAddress": "[email protected]", "InteracQuestion": "What is your pet name?", "InteracAnswer": "Buddy" }, "TransferDirection": 2, "Amount": 500.00, "Currency": 1, "Language": 2 } // Request money (Collect) via Interac POST /Data/CreateDirectInteracTransaction { "SessionToken": "session-guid", "MerchantId": "your-merchant-id", "InteracInformation": { "Description": "Invoice #3001", "Owner": "Customer Name", "TargetEmailAddress": "[email protected]" }, "TransferDirection": 1, "Amount": 150.00, "Currency": 1 }
Key: TransferDirection: 1 = Collect (request money), 2 = Deposit (send money). InteracQuestion and InteracAnswer are required for deposits. Either TargetEmailAddress or TargetMobilePhoneNumber must be provided.
Use Case 6

Batch Processing via ACP File

Process hundreds of transactions at once by uploading an ACP (Automated Clearing & Payment) file. Payroll, mass disbursements, bulk collections.

// Upload ACP file (Base64-encoded) POST /Data/CreateTransactionFromRaw { "SessionToken": "session-guid", "MerchantId": "your-merchant-id", "RawFileBody": "BASE64_ENCODED_ACP_FILE" } // Check batch results POST /Data/ListExecutedOperations { "SessionToken": "session-guid", "MerchantId": "your-merchant-id", "GroupId": "batch-group-id", "FromDateTime": "2026-02-01T00:00:00Z", "ToDateTime": "2026-02-28T23:59:59Z", "TransferType": 7, "DateType": 1, "OperationTarget": 1 }
Tip: The ACP file follows the standard Canadian Payments Association format. It must be Base64-encoded. Use the GroupId from the response to track all transactions in the batch.
Use Case 7

Accept Credit Card Payments

Accept Visa, Mastercard, and Amex across North America. Register a credit card as a payment method and charge it automatically using Payment Flow 5.

CreateSession CreateCustomer CreateCreditCardPaymentMethod CreateBill CreatePayment (Flow 5)
// Steps 1-2: CreateSession + CreateCustomer (same as Use Case 1) // Step 3: Register Credit Card POST /Data/CreateCreditCardPaymentMethod { "SessionToken": "session-guid", "CustomerId": "customer-guid", "IsCustomerAutomaticPaymentMethod": true, "CreditCard": { "Pan": 4242424242424242, "Cvd": 123, "ExpirationMonth": 12, "ExpirationYear": 27, "CardOwner": "John Smith" }, "CreditCardRegisteredAddress": { "CivicNumber": "360", "Street": "Rue Saint-Jacques", "City": "Montreal", "Province": "QC", "Country": "CA", "PostalCode": "H2Y1P5" } } // Response: { "PaymentMethodId": "pm-guid" } // Steps 4-5: CreateBill + CreatePayment (Flow 5) — same as Use Case 1
Tip: CreditCardRegisteredAddress is optional but recommended for AVS (Address Verification System) which reduces fraud. Pan accepts Visa (4xxx), Mastercard (5xxx), and Amex (3xxx). In sandbox, use test card number 4242424242424242.
Use Case 8

Quick Collection Without a Bill

Collect money directly without creating an invoice or bill. Uses CreateFreeOperation with TransferType: 3 (FreeCollection). Ideal for tips, micro-payments, and adjustments.

// Step 1: CreateSession (see Getting Started) // Step 2: Free Collection — collect without a bill POST /Data/CreateFreeOperation { "SessionToken": "session-guid", "MerchantId": "your-merchant-id", "PaymentMethodId": "customer-pm-guid", "TransferType": 3, "Amount": 25.00, "Currency": 1, "Language": 2, "ReferenceNumber": "TIP-001" }
Tip: TransferType: 3 = FreeCollection (collect money), TransferType: 2 = FreeDeposit (send money). The PaymentMethodId must belong to an existing customer. This bypasses the full bill workflow — perfect for streamlining operations.
Use Case 9

Quick Deposit Without a Bill

Send money to any registered payment method instantly without creating a bill. Uses CreateFreeOperation with TransferType: 2 (FreeDeposit). Ideal for refunds, cashbacks, and payouts.

// Step 1: CreateSession (see Getting Started) // Step 2: Free Deposit — send money without a bill POST /Data/CreateFreeOperation { "SessionToken": "session-guid", "MerchantId": "your-merchant-id", "PaymentMethodId": "customer-pm-guid", "TransferType": 2, "Amount": 150.00, "Currency": 1, "Language": 2, "ReferenceNumber": "REFUND-001" }
Tip: The PaymentMethodId can be a bank account or credit card registered to any customer. This is the fastest way to send money — no customer, bill, or payment object needed. Just the merchant and the destination payment method.

Processing payments for businesses across Canada and the US

From startups to enterprises — one API to power them all.

Get Sandbox Credentials Contact Sales
Use Case 10

Multi-Tenant Platform (Sub-Clients)

Build your own payment platform. Each sub-client gets their own isolated environment with dedicated merchants, customers, and payment methods. Used by SaaS platforms, property management companies, and financial institutions across North America.

CreateSession CreateSubClient SetClientSettings Normal payment flow per sub-client
// Step 1: CreateSession (see Getting Started) // Step 2: Create a Sub-Client POST /Data/CreateSubClient { "SessionToken": "session-guid", "ClientName": "Acme Property Management", "ClientLanguage": 2 } // Response: { "ServiceId": "new-service-guid" } // Step 3: Configure the Sub-Client POST /Data/SetClientSettings { "SessionToken": "session-guid", "ServiceId": "new-service-guid", "Settings": { "AllowCreditCard": true, "AllowDirectDebit": true, "AllowInterac": true } } // Read the Sub-Client configuration POST /Data/GetClientSettings { "SessionToken": "session-guid", "ServiceId": "new-service-guid" } // Now use the ServiceId in all subsequent calls for this sub-client // CreateCustomer, CreateBill, CreatePayment, etc. all scoped to this sub-client
Enterprise: Each sub-client is completely isolated. You can configure fee settings per sub-client using SetClientDefaultServiceFeeSettings. The ServiceId returned by CreateSubClient replaces your own ServiceId in all API calls for that sub-client.
Use Case 11

White-Label Your Payment Pages

Your brand, our infrastructure. Customize payment pages with your colors, logo, and style. Your customers never see TIB — they see YOU.

// Step 1: CreateSession (see Getting Started) // Step 2: Set White-Labeling (Merchant level) POST /Data/SetWhiteLabeling { "SessionToken": "session-guid", "WhiteLabelingLevel": 1, "WhiteLabelingLevelId": "your-merchant-id", "CssProperties": { "background-color": "#1a1a2e", "color": "#ffffff", "font-family": "Inter, sans-serif", "button-background": "#e94560" } } // Read white-labeling data POST /Data/GetWhiteLabelingData { "SessionToken": "session-guid", "WhiteLabelingLevel": 1, "WhiteLabelingLevelId": "your-merchant-id" } // Update or delete white-labeling // POST /Data/UpdateWhiteLabelingData // POST /Data/DeleteWhiteLabeling
Levels: 1 = Merchant level, 2 = Service level, 3 = Client level. You can apply different branding at each level. Use GetListWhiteLabelingData to list all white-labeling configurations.
Use Case 12

Charge a Specific Payment Method (Flow 6)

Full control over which payment method to charge. Instead of using the customer's default, specify exactly which card or bank account to use via Payment Flow 6.

// Steps 1-4: CreateSession, CreateCustomer, CreatePaymentMethod, CreateBill // (same as Use Case 1 — customer may have multiple payment methods) // Step 5: Create Payment with FORCED method POST /Data/CreatePayment { "SessionToken": "session-guid", "BillId": "bill-guid", "SetPaymentCustomerFromBill": true, "PaymentInfo": { "PaymentFlow": 6, "ForcedCustomerPaymentMethodId": "specific-pm-guid" } } // Charges the exact payment method you specified, not the default
Tip: Use ListPaymentMethods to get all payment methods for a customer, then pass the desired PaymentMethodId as ForcedCustomerPaymentMethodId. This is ideal when a customer has multiple cards and you want to charge a specific one (e.g., a backup card after the primary fails).
Use Case 13

Refund / Revert a Transaction

Handle refunds and reversals seamlessly. One API call to revert any transaction. You can also cancel a payment before it's processed.

// Step 1: CreateSession (see Getting Started) // Option A: Revert a completed transaction (refund) POST /Data/RevertTransfer { "SessionToken": "session-guid", "TransferId": "transfer-guid-to-revert" } // Creates a reverse transaction — money goes back to the customer // Option B: Cancel a payment before it's processed POST /Data/DeletePayment { "SessionToken": "session-guid", "PaymentId": "payment-guid-to-cancel" }
Important: RevertTransfer works on completed transactions — it creates a new reverse operation. DeletePayment cancels a payment that hasn't been processed yet. Use ListExecutedOperations to find the TransferId of the original transaction.

Ready to scale your payment operations?

Join thousands of businesses already using TIB Finance across North America.

Start Free Integration View Pricing

Enterprise & Multinational Features

Built for scale. Trusted by businesses processing $600M+ annually.

North American Coverage

Process payments in Canada (EFT, Interac, credit cards) and the United States (ACH, credit cards). Multi-currency support in CAD and USD from a single integration.

Customer & Data Management

Full CRUD operations: GetCustomer, SaveCustomer, DeleteCustomer, GetCustomersByExternalId, ListCustomers, ListPaymentMethods, ListBills. Your data, your control.

Advanced Reporting

ListExecutedOperations with filters by date range, merchant, transfer type, and group. Track every transaction across your entire organization in real-time.

Complete API Method Reference

Every method available in the TIB Finance API, organized by category

Full reference: For detailed parameters and response schemas, visit the complete API documentation. All methods follow the same format: POST [BaseURL]/Data/[MethodName].

Ready to start building?

Get sandbox credentials in seconds and test all 13 use cases for free.

Get Sandbox Credentials Full API Reference

Payment Flow Reference

Choose the right flow for your scenario

Flow Name Customer Known? Has Payment Method? Automatic? Best For
1 Anonymous No No No One-time invoices, new customers
2 Known - Existing Methods Yes Yes No Customer chooses from saved methods
3 Known - Can Add Methods Yes Optional No Customer can add new payment method
4 Known - Full Management Yes Optional No Customer manages all methods + default
6 Automatic (Forced) Yes Yes (specific) Yes Charge a specific payment method
7 Auto Select Any Any Depends Let the API choose the best flow
8 Auto Select (Non-Automatic) Any Any Never Auto-select but require customer action
9 Anonymous with Consent No No No Anonymous with consent capture

Quick Object Reference

Key data structures used in the TIB API

Customer Object

PropertyTypeRequiredDescription
CustomerNamestringYesFull name (max 150 chars)
CustomerExternalIdstringNoYour internal customer ID (max 50)
LanguageintNo1 = French, 2 = English
CustomerDescriptionstringNoNotes (max 250)

Bank Account Object

PropertyTypeRequiredDescription
OwnerstringYesAccount holder name (max 150)
AccountNamestringYesAccount description (max 150)
BankNumberstringYesBank ID (3 digits)
InstitutionNumberstringYesTransit number (5 digits)
AccountNumberstringYesAccount number (max 15)

Credit Card Object

PropertyTypeRequiredDescription
PannumberYesCard number (14-16 digits)
CvdnumberNoCVV code (3-4 digits)
ExpirationMonthintYes1-12
ExpirationYearintYes2-digit year (e.g. 26)
CardOwnerstringYesName on card (max 150)

Bill Object

PropertyTypeRequiredDescription
MerchantIdGUIDYesMerchant this bill belongs to
BillTitlestringYesTitle shown to customer (max 150)
BillDescriptionstringYesDescription (max 1000)
BillAmountdecimalYesAmount: 0.01 to 50,000
BillCurrencyintNo1 = CAD, 2 = USD
RelatedCustomerIdGUIDNoCustomer paying this bill

Key Enumerations

Payment Method Types
1CreditCard
2DirectAccount (Bank)
3Interac
Currencies
1CAD (Canadian Dollar)
2USD (US Dollar)
Languages
1French
2English
Transfer Direction
1Collect (request money)
2Deposit (send money)
Transfer Frequencies
0Once
1Daily
2Weekly
4Monthly
7Annually

Error Handling

Understanding API responses

Response Structure

// Success { "HasError": false, "Errors": [], "Messages": "" } // Error { "HasError": true, "Errors": [{ "ErrorMessage": "Bad Credentials", "ErrorCode": 403 }] }

PaymentFlowParsingResult

ValueMeaning
1Success
2Invalid Payment Flow
3Bill not related to customer
4Customer has no payment method
5No default payment method set
6Forced method ID needed (Flow 6)
7Customer doesn't have specified method
8Anonymous must have email (Flow 1/9)
9PPA consent needed

Bank Operation Results

ValueResultDescription
0No result yetStill being processed
2Other errorsUnspecified bank error
3NSFNon-Sufficient Funds
4Account errorInvalid, closed, or frozen account
5OppositionCustomer opposed the transaction
6Interac RefusedInterac transfer was refused
7Interac FailedInterac transfer failed

SDKs & Resources

Tools and libraries to accelerate your integration

.NET

C# / .NET Core

GitHub
PHP

Composer package

GitHub
JavaScript

Client & Node.js

GitHub
Python

pip package

GitHub
Sandbox

Free test env

Get Access
API Docs

Full reference

View Docs

Need help with integration?

Our team of experts can handle your project. You might even qualify for a free integration!

Contact Us Create Live Account