Inter API Documentation

Version 2.0 - Enhanced Partner Integration Guide

# Getting Started

Overview

This guide covers everything you need to start integrating with Inter's API: authentication, endpoints, IP whitelisting, test credentials, and operating hours.

Inter's API uses Basic HTTP Authentication over HTTPS to secure all API communications. For each request made to MTS web services, user credentials (username and password) must be passed within the SOAP header.

Security Requirements

🔒 IP Whitelisting

Important: We use IP Whitelist for additional security. No VPN configuration is required.

Requirements:

To whitelist your IPs:

  1. Identify your static IP addresses or IP ranges
  2. Send the IP information to remittance@inter.co
  3. Wait for confirmation that your IPs have been whitelisted
  4. Test connectivity from your whitelisted IPs

🧪 Getting Test Credentials

Ready to start testing? We will create test users for you.

To receive test credentials:

  1. Send an email to remittance@inter.co
  2. Provide your company name and contact email address
  3. Specify if you need credentials for PIX, TED, or USA transactions
  4. We will create the test user and send credentials to your email

Test Environment:

SOAP Header Format

All requests must include the authentication header in the SOAP envelope:

<soap:Header>
  <AuthHeader xmlns="http://mts.geobridge.org/">
    <UserName>your_username</UserName>
    <Password>your_password</Password>
  </AuthHeader>
</soap:Header>

API Endpoints

Use the appropriate endpoint based on your environment.
Environment Endpoint URL
UAT (Testing) https://test.masspayments.inter.co/partner/api/mts.asmx
Production https://masspayments.inter.co/ppapis3/ppapis3/mts.asmx

UAT Operating Hours (Brazil Time)

Note: Production APIs are available 24/7. Consider time zone differences when testing UAT from other regions.

Authentication Request Fields

SOAP Header (AuthHeader)

Field Name Type (Length) Option Description
UserName Alpha (100) R API username provided by Inter (often linked to your Partner)
Password Alpha (100) R API password provided by Inter

Common Body Identification Fields

Most service methods require the following identification fields in the SOAP Body in addition to the AuthHeader:

Field Name Type (Length) Option Description
AgentID Integer (9) R Your agent identifier
PartnerID Integer (9) R Your partner identifier

Credential Management

Obtaining Credentials

Credential Storage Best Practices

Authentication Errors

Error Response Example

<soap:Fault>
  <faultcode>soap:Client</faultcode>
  <faultstring>Authentication failed: Invalid username or password</faultstring>
</soap:Fault>

Implementation Examples

Python Example

from zeep import Client
from zeep.wsse.username import UsernameToken
import os

# Load credentials from environment
username = os.getenv('INTER_USERNAME')
password = os.getenv('INTER_PASSWORD')

wsdl_url = 'https://test.masspayments.inter.co/partner/api/mts.asmx?wsdl'

# Create client with authentication
client = Client(wsdl_url, wsse=UsernameToken(username, password))

# Make authenticated request
try:
    result = client.service.GetActiveCountries(PartnerID=12345)
    print('Active Countries:', result)
except Exception as e:
    print('Authentication Error:', str(e))

C# (.NET) Example

using System;
using System.ServiceModel;

// Auto-generated service reference
var client = new MTSServiceClient();

// Set credentials
client.ClientCredentials.UserName.UserName = 
    Environment.GetEnvironmentVariable("INTER_USERNAME");
client.ClientCredentials.UserName.Password = 
    Environment.GetEnvironmentVariable("INTER_PASSWORD");

try 
{
    var result = await client.GetActiveCountriesAsync(12345);
    Console.WriteLine($"Active Countries: {result.Length}");
} 
catch (FaultException ex) 
{
    Console.WriteLine($"Authentication Error: {ex.Message}");
}

Security Checklist

Before going to production, ensure:

Rate Limiting

Inter implements rate limiting to protect the API:

Handling Rate Limits

async function makeAuthenticatedRequest(retries = 3) {
    try {
        const result = await client.GetActiveCountries({ PartnerID: 12345 });
        return result;
    } catch (error) {
        if (error.statusCode === 429 && retries > 0) {
            // Wait and retry
            const waitTime = parseInt(error.headers['retry-after']) || 60;
            console.log(`Rate limited. Waiting ${waitTime} seconds...`);
            await new Promise(resolve => setTimeout(resolve, waitTime * 1000));
            return makeAuthenticatedRequest(retries - 1);
        }
        throw error;
    }
}

Support


Last Updated: November 5, 2025 Version: 2.0