Send Money - Claimless

This endpoint is used to create Claimless Payments to new or existing payees. The endpoint is as follows:

POST https://sandbox-api.veem.com/veem/v1.2/claimless-payments

📘

Headers

Three headers are required to use this endpoint.

NameTypeRequiredDescription
AuthorizationstringYesBearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3.
See Get Access Token section to generate your Bearer token.
X-Request-IdstringYesThis is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows: 48855846-628d-4177-b071-80332a116f0a
Content-TypestringYesThe content type of the request. Must be application/json

Request Payload (US)

When sending a claimless payment using Veem's Claimless Payment API to any account using a US account, one must follow the format as shown in the following example:

{
    "purposeOfPayment": "Goods",
    "payee":{
        "email": "[email protected]",
        "firstName": "USA First Name",
        "lastName": "USA Last Name",
        "countryCode": "US",
        "phone": "4152306359",
        "phoneCountryCode": "+1",
        "type": "Personal",
        "industry": "Software, IT and Telecommunications",
        "subIndustry": "Software",
        "businessName": "USA Software Consultancy {{$guid}}",
        "business": {
            "address": {
                "countryCode": "US",
                "street": "300 Folsom",
                "streetSecondary": "Suite 101",
                "city": "San Francisco",
                "postalCode": "94105",
                "province": "CA"
            },
            "entity": "Contractor",
            "taxIdNumber": "33-186-308",
            "websiteUrl": "https://test.com"
        },
        "bank": {
            "isoCountryCode": "US",
            "bankName": "Access Credit Union",
            "currencyCode": "USD",
            "bankAccountNumber": "1234567",
            "routingNumber": "122105155"    
        },
        "extraInfo": {
            "customerPlatformExtraInfo": {
                "partnerPlatformJoinDate": "2025-01-01",
                "mcc": 1234
            }
        }
    },
    "amount": {
        "number": 100,
        "currency": "USD"
    },
    "fundingMethod": {
        "id": 2393,
        "type": "Bank"
    },
    "onBehalfAccountId": 12345 // see Partner Notes
}

Request Payload (International)

When sending a claimless payment using Veem's Claimless Payment API to any account using an international account, one must follow the format as shown in the following example:

{
    "payee":{
        "email": "[email protected]",
        "firstName": "USA First Name",
        "lastName": "USA Last Name",
        "countryCode": "US",
        "phone": "4152306359",
        "phoneCountryCode": "+1",
        "type": "Personal",
        "industry": "Software, IT and Telecommunications",
        "subIndustry": "Software",
        "businessName": "USA Software Consultancy {{$guid}}",
        "business": {
            "address": {
                "countryCode": "US",
                "street": "300 Folsom",
                "city": "San Francisco",
                "postalCode": "94105",
                "province": "CA"
            },
            "entity": "Contractor",
            "taxIdNumber": "33-186-308",
            "websiteUrl": "https://test.com"
        },
        "bank":{
           "isoCountryCode":"FR",
           "bankName":"Bank of France",
           "currencyCode":"EUR",
           "bankAccountNumber":"12345678",
           "routingNumber":"041215032",
           "swiftBic": "CUCXCATT",
           "bankInstitutionNumber": "879",
           "bic": "CUCXCATT",
           "iban":"FR1420041010050500013M02606"
        },
        "managingPartnerInfo": {
           "partnerFullName": "Thomas Robert Scott",
           "taxId": "349.803.700-55"
        },
        "extraInfo": {
            "customerPlatformExtraInfo": {
                "partnerPlatformJoinDate": "2025-01-01",
                "mcc": 1234
            }
        }
    },
    "amount": {
        "number": 100,
        "currency": "USD"
    },
    "fundingMethod": {
        "id": 2393,
        "type": "Bank"
    },
    "externalInvoiceRefId": "invoiceReference",
	  "ccEmails": [
        "[email protected]"
    ],
    "purposeOfPayment": "Services",
    "purposeOfPaymentDescription": "Purpose description",
    "goodFundsPayment": true,
    "onBehalfAccountId": 12345 // see Partner Notes
}

Request Parameters

The following table contains detailed information on the payload's parameters, such as the parameter name, whether it is mandatory or not, formatting (if applicable), and size of the parameter. You can retrieve various fields such as countryCode, bankName, bankCode, swiftCode, and purposeOfPayment from the Country-Currency-Map endpoint. Please refer to the following link: country-currency-map

ParameterMandatory?Format/ValuesSize (in chars)
notesNoString128 (Max)
payee.firstNameYesString64 (Max)
payee.lastNameYesString64 (Max)
payee.emailYesString254 (Max)
payee.phoneYesString32 (Max)
payee.countryCodeYesISO 3166-1 alpha-2 standard (eg. US, BE, BT etc)2
payee.typeYesBusiness or Personal
payee.industryYesAgriculture
Business Services
Construction
Consumer Services
Education
Energy, Utilities, Waste & Minerals
Finance, Insurance
Government, Organizations
Holding Companies & Conglomerates
Hospitality, Recreation & Tourism
Hospitals, Clinics & Healthcare Services
Law Firms & Legal Services
Manufacturing
Media, Arts & Entertainment
Real Estate
Retail Trade
Software, IT and Telecommunications
Transportation, Warehousing, Wholesale
payee.subIndustryYesNote: Subindustry is unique to each industry, and is impractical to list all of them here. Subindustry information can be found below the table
e.g. For Agriculture, one can use the Crops subindustry
payee.businessNameYesString128 (Max)
payee.phoneCountryCodeYesCountry code (such as +1 for US or Canada, +31 for Netherlands etc. More info available below the table)
  • Note: The + prefixmust be included in the parameter
2-5
payee.business.websiteUrlNoString, e.g. "https://test.com"2048
payee.business.address.countryCodeYesISO 3166-1 alpha-2 standard (eg. US, BE, BT etc)2
payee.business.address.streetYesString128 (Max)
payee.business.address.provinceYes (if no state is provided)String64 (Max)
payee.business.address.stateYes(if no province is provided)String64 (Max)
payee.business.address.postalCodeYesString64 (Max)
payee.business.address.cityYesString64 (Max)
payee.business.entityYes
  • For Business:
    Corporation,
    Company,
    ForeignCompany,
    GeneralPartnership,
    JointVenture,
    LimitedCompany,
    LimitedPartnership,
    NonProfit,
    Partnership,
    PublicCompany,
    Trust,
    UnlimitedCompany,
    SoleProprietorship,
    LLC or
    Representative

  • For Personal:
    Contractor,
    SoleProprietorship,
    Freelancer,
    SideProject or
    PersonalUse

  • Note: If the business entity provided does not match the expected account type, the API will return a 400 Bad Request error.
    This validation ensures that a business entity is not incorrectly used with a personal account type, and vice versa.

payee.business.taxIdNumberYesString32 (Max)
payee.bankYesRefer to Bank Account page for a comprehensive list of fields in this object. A subset is given below (fields that are mandatory for US banks).
payee.bank.isoCountryCodeYesISO 3166-1 alpha-2 standard (eg. US, BE, BT etc)2
payee.bank.bankNameYesString (Note: Bank name and bank routing number MUST be valid)128 (Max)
payee.bank.currencyCodeYesCurrency Code (ISO 4217)3
payee.bank.bankAccountNumberYes

String

Note: Make sure the bank account number is the one associated with the payee's account

payee.bank.routingNumberYesRefer to your financial institution of choice for the correct routingNumber for said institution
payee.extraInfo.customerPlatformExtraInfo.partnerPlatformJoinDateNo

The date when the payee first joined the partner platform

yyyy-mm-dd (ex. 2024-01-15)

payee.extraInfo.customerPlatformExtraInfo.mccNoA four-digit Merchant Category Code (MCC) that classifies the payee’s primary business activity on the partner platform
amount.numberYesBigDecimal
amount.currencyYesCurrency Code (ISO 4217)3
fundingMethod.idYesNumber Funding method ID of the payer
fundingMethod.typeYesOne of the following values:
"Bank",
"External",
"Cheque",
"Card",
"Wallet"
"VirtualCard"
"VirtualBank"
externalInvoiceRefIdNo

String

Note: as of Nov 12, 2025, this field will not accept any special characters, such as
~ `` ! @ # $ % ^ & * ( ) + = [ ] \ ' ; , . / { } | " : < > ?

30
ccEmailNoArray of Strings
Each string must be a valid email
goodFundsPaymentNoBoolean
purposeOfPaymentDepends on CountryYou can get the information on whether this field is required from the Country-Currency-Map endpoint. Please refer to the following link: country-currency-map
purposeOfPaymentDescriptionDepends on CountryYou can get the information on whether this field is required from the Country-Currency-Map endpoint. Please refer to the following link: country-currency-map
bruidNoString36
payerAccountIdNoNumber
managingPartnerInfoDepends on CountryContains the subfields with the managing partner info. It is mandatory only for BR accounts with BRL bank, and when the account type is:
  • Business, or
  • Personal and businessEntity is SoleProprietorship
managingPartnerInfo.partnerFullNameYesFor Brazil: A full name of the managing partner128 (Max)
managingPartnerInfo.taxIdYesFor Brazil: A valid and formatted Brazilian CPF14 digits

Additional Information:
ISO 3166-1 alpha-2 standard: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
Dial codes: https://en.wikipedia.org/wiki/List_of_country_calling_codes
Currency Codes (ISO 4217): https://www.iban.com/currency-codes

Response Payload

Once a valid request has been sent, a response payload of this format should be expected:

{
    "requestId": "a5150c19-28d9-480e-9626-0dc220cdd607",
    "payee": {
        "email": "[email protected]",
        "countryCode": "US",
        "phone": "tel:+1-415-230-6359"
    },
    "payeeAmount": {
        "number": 100.00,
        "currency": "USD"
    },
    "status": "Sent",
    "goodFundsPayment": true,
    "realTimePayment": false,
    "id": 1325036,
    "exchangeRate": {
        "fromAmount": 100.00,
        "fromCurrency": "USD",
        "toAmount": 100.00,
        "toCurrency": "USD"
    },
    "feeInformation": {
        "payerInfo": {
            "originalAmount": 100.00,
            "feeAmount": 0.00,
            "totalAmount": 100.00,
            "currency": "USD"
        },
        "payeeInfo": {
            "originalAmount": 100.00,
            "feeAmount": 1.00,
            "totalAmount": 99.00,
            "currency": "USD"
        }
    },
    "timeCreated": "2025-01-03T13:26:06.648-08:00",
    "timeUpdated": "2025-01-03T13:26:08.113-08:00",
    "claimLink": "https://api.qa-us-west-2.veem.com/api/c/N32hI14n",
    "debitCreditTxn": {
        "creditTxn": null,
        "debitTxn": null
    },
    "fastTransfer": false,
    "cancelable": false,
    "payerFundingMethodType": "Bank",
    "receiverFundingMethodType": "Bank",
    "originalRequestId": "a5150c19-28d9-480e-9626-0dc220cdd607"
}

Notes:

  • Since the BRUID field is optional, if not provided or expired the payment will resort to using real-time FX rates
  • Since the goodFundsPayment field is optional, it will default to false if not provided
👍

Partner Notes:

  • A partner account can be configured to make this API request on behalf of their customers. This requires internal configuration for the partner account by Veem. Once the internal configuration is enabled, the API request can be made using partner account bearer token.
  • onBehalfAccountId is an optional parameter, this needs to be included on the request body in case of partner making an API request on behalf of their customer. This is the customer Veem account ID.

Possible Errors

If any mandatory field is missing, one will get a Status 400 (Bad Request) error in the following format:

{
   "validationErrorMessage": [
       "payee.lastName is required for v1.2",
       "payee.industry is required for v1.2"
   ]
}

Here are some extra examples of specific errors that can pop up during the use of the Claimless Payment API:

Unauthorized

Status Code: 401 (Unauthorized)

Example:

{
    "error": "unauthorized",
    "error_description": "Full authentication is required to access this resource"
}

Incorrect Funding Method ID

Status Code: 404 (Not Found)

Example:

{
    "code": 10000000,
    "message": "Resource of type: BankAccount with id: 180618 not found",
    "logTag": "6642a1b3-9b67-4bf5-a9ba-ca34138f1b4c",
    "timestamp": "2025-01-03T21:34:04.464",
    "fileName": "CustomerSvcImpl.java",
    "lineNumber": 886
}

Incorrect Business Entity to Account Type

Status Code: 400 (Bad Request)

Example:

{
    "code": 50000000,
    "message": "Value is unexpected: Personal",
    "logTag": "e6313c6f-5d2f-4f93-8111-a225414c9e93",
    "timestamp": "2025-01-03T21:35:39.510",
    "fileName": "VeemResponseHandler.java",
    "lineNumber": 98
}