# Protocols and Conventions
Overview
Integration with Inter API is made using the SOAP messaging standard. Web Service Description Language (WSDL) documents that describe the Web Services and their messaging formats will be provided specifically for each partner in separate URLs.
Field Requirements
The requirements for each field are defined by code letters as follows:
| Code | Meaning | Description |
|---|---|---|
| R | Required | Value must always be provided |
| O | Optional | Value may be omitted |
| C | Conditional | Required based on compliance or other business rules |
SOAP Message Structure
SOAP Request Example
Illustrative CreateNewOrder (US / FedNow-style corridor). All values below are fictional—use your Inter credentials and real order data.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="http://mts.geobridge.org/">
<UserName>your_api_username</UserName>
<Password>your_api_password</Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<CreateNewOrder xmlns="http://mts.geobridge.org/">
<AgentID>10001</AgentID>
<PartnerID>20002</PartnerID>
<AgentOrderReference>REF-US-FEDNOW-DEMO-001</AgentOrderReference>
<OrderCreationTime>2026-03-30 15:00:00.000</OrderCreationTime>
<SenderLastName>Taylor</SenderLastName>
<SenderFirstName>Alex</SenderFirstName>
<SenderCompanyName></SenderCompanyName>
<SenderCountry>GB</SenderCountry>
<NetAmountSent>1000</NetAmountSent>
<AmountReceived>1000</AmountReceived>
<CurrencySent>USD</CurrencySent>
<CurrencyOfPayment>USD</CurrencyOfPayment>
<CurrencyOfPaymentID>3</CurrencyOfPaymentID>
<TotalFeeAgent>0</TotalFeeAgent>
<ExchangeRateAgent>1</ExchangeRateAgent>
<ExchangeRateSender>1</ExchangeRateSender>
<RecipientFirstName>Jane</RecipientFirstName>
<RecipientLastName>Recipient</RecipientLastName>
<RecipientCompany></RecipientCompany>
<RecipientCountry>US</RecipientCountry>
<TypeOfPaymentID>744</TypeOfPaymentID>
<TypeOfPaymentText>FEDNOW</TypeOfPaymentText>
<RecipientBankName>Example National Bank</RecipientBankName>
<RecipientBankRouting>111000025</RecipientBankRouting>
<RecipientBankAccountNo>9876543210</RecipientBankAccountNo>
<RecipientBankAccoutType>savings</RecipientBankAccoutType>
</CreateNewOrder>
</soap:Body>
</soap:Envelope>
SOAP Response Example
Successful CreateNewOrder response shape (NewOrderResponse inside CreateNewOrderResult). Fictional IDs and timestamps. OrderProcessingTime is returned in PST (Pacific Standard Time). Field-by-field descriptions and scenario examples: CreateNewOrder — Response Fields (same element order in production).
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreateNewOrderResponse xmlns="http://mts.geobridge.org/">
<CreateNewOrderResult>
<NewOrderResponse xmlns="">
<AgentOrderReference>REF-US-FEDNOW-DEMO-001</AgentOrderReference>
<OrderID>5000199001</OrderID>
<OrderProcessingTime>2026-03-30T15:00:15.0000000</OrderProcessingTime>
<NetAmountSent>1000.00</NetAmountSent>
<TotalFeeSender>0.00</TotalFeeSender>
<ExchangeRateSender>1.0000000</ExchangeRateSender>
<CurrencySent>USD</CurrencySent>
<ExchangeRateAgent>1.0000000</ExchangeRateAgent>
<TotalFeeAgent>0.00</TotalFeeAgent>
<TotalDueFromAgent>1000.00</TotalDueFromAgent>
<AmountReceived>1000.00</AmountReceived>
<TotalRecipiententFee>0.00</TotalRecipiententFee>
<TotalPaidToRecipient>1000.00</TotalPaidToRecipient>
<CurrencyOfPayment>USD</CurrencyOfPayment>
<CurrencyOfPaymentID>3</CurrencyOfPaymentID>
<PaymentInstructions></PaymentInstructions>
<TypeOfPaymentID>744</TypeOfPaymentID>
<OrderAcceptanceCode>A</OrderAcceptanceCode>
<OrderClaimCode></OrderClaimCode>
<TransactionResult></TransactionResult>
<ResultCodes>1001</ResultCodes>
<AdditionalMessage></AdditionalMessage>
<StatusCode>3</StatusCode>
<SenderUID>900100001</SenderUID>
<SenderLastName>Taylor</SenderLastName>
<SenderFirstName>Alex</SenderFirstName>
<SenderCompanyName></SenderCompanyName>
<RecipientBillerAccountNo>900100002</RecipientBillerAccountNo>
<RecipientLastName>Recipient</RecipientLastName>
<RecipientFirstName>Jane</RecipientFirstName>
<RecipientCompany></RecipientCompany>
</NewOrderResponse>
</CreateNewOrderResult>
</CreateNewOrderResponse>
</soap:Body>
</soap:Envelope>
Error Handling
SOAP Fault (transport / SOAP layer)
Some failures are returned as a SOAP Fault inside the response envelope — typically before your call reaches application logic. A common case is a missing or invalid HTTP SOAPAction header (must match the operation in the WSDL).
Example response (real shape observed when the SOAP Action is not supplied correctly):
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unable to handle request without a valid action parameter. Please supply a valid soap action.</faultstring>
<detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>
Business and validation errors
Validation and business-rule failures from web methods are usually returned as normal SOAP 200 responses whose XML payload contains an <Error> element with ResultCodes and ResultMessage (see operation-specific articles such as CreateNewOrder), not as a soap:Fault.
Best Practices
1. XML Validation
Always validate your XML against the WSDL schema before sending:
// Example using xmllint
const { exec } = require('child_process');
exec('xmllint --schema service.xsd request.xml', (error, stdout) => {
if (error) {
console.error('XML Validation Error:', stdout);
}
});
2. Namespace Handling
Always include the correct namespace in your requests:
<CreateNewOrder xmlns="http://mts.geobridge.org/">
<!-- Parameters -->
</CreateNewOrder>
3. Date/Time Formatting
Use ISO 8601 format consistently:
// JavaScript example
const now = new Date();
const isoDateTime = now.toISOString(); // "2025-11-05T14:30:00.000Z"
5. Field Order
Maintain the field order as specified in the WSDL. Some SOAP implementations are sensitive to element order.
WSDL Access
Use the ASMX endpoint for your environment (same path as in Getting Started). Append ?wsdl for the contract.
UAT (sandbox) WSDL:
https://test.masspayments.inter.co/partner/api/mts.asmx?wsdl
Production WSDL:
https://masspayments.inter.co/ppapis3/ppapis3/mts.asmx?wsdl
Testing Tools
Example curl request (UAT)
Post to mts.asmx (not service.asmx). The HTTP SOAPAction value must match the operation in soap:Body (see WSDL). Below: GetOrderStatus with AuthHeader.
curl --location 'https://test.masspayments.inter.co/partner/api/mts.asmx' \
--header 'Content-Type: text/xml; charset=utf-8' \
--header 'SOAPAction: "http://mts.geobridge.org/GetOrderStatus"' \
--data-raw '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="http://mts.geobridge.org/">
<UserName>your_username</UserName>
<Password>your_password</Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<GetOrderStatus xmlns="http://mts.geobridge.org/">
<AgentID>YOUR_AGENT_ID</AgentID>
<PartnerID>YOUR_PARTNER_ID</PartnerID>
<AgentOrderReference>YOUR_ORDER_REFERENCE</AgentOrderReference>
</GetOrderStatus>
</soap:Body>
</soap:Envelope>'
Last Updated: April 17, 2026 Version: 2.0