openapi: 3.0.0
info:
description: Veem REST API
title: Veem API v1.2
version: v1.2.1
servers:
- url: //sandbox-api.veem.com
tags:
- description: Bank Account Controller
name: bank-account-controller
- description: For managing crypto wallets, including balances, details, transactions and pay-ins
name: crypto-wallet-controller
- description: Invoice Controller
name: invoice-controller
- description: Payment Controller
name: payment-controller
- description: Open Account Controller
name: open-account-controller
- description: Beneficial Owner Information Controller
name: beneficial-owner-information-controller
- description: Claimless Payment Controller
name: claimless-payment-controller
- description: Contact Controller
name: contact-controller
- description: Webhook Controller
name: webhook-controller
- description: Attachment Controller
name: attachment-controller
- description: Meta Controller
name: meta-controller
- description: Wallet Controller
name: wallet-controller
- description: Exchange Rate Controller
name: exchange-rate-controller
- description: Customer Controller
name: customer-controller
paths:
/veem/v1.2/account/bank-account:
post:
deprecated: false
operationId: addBankAccountUsingPOST
requestBody:
$ref: '#/components/requestBodies/BankAccountRequest'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/BankAccountResponse'
description: Created
summary: addBankAccount
tags:
- bank-account-controller
/veem/v1.2/crypto-wallet/applications/{applicationId}/add-currency:
post:
deprecated: false
description: Provisions an additional currency or route for an existing crypto wallet application.
operationId: addCryptoWalletApplicationCurrency
parameters:
- description: Unique identifier of the crypto wallet application.
in: path
name: applicationId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CryptoWalletAddCurrencyRequest'
description: Currency details to add to the application
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CryptoWalletProvisionResponse'
description: Currency added to crypto wallet application successfully
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Invalid request body
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Unauthorized, the token is invalid or expired
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Forbidden, the token owner doesn't have permission to operate this API
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Internal Server Error, see the error code and API doc for reference
summary: Add a currency to a crypto wallet application
tags:
- crypto-wallet-controller
/veem/v1.2/invoices/{invoiceId}/approve:
post:
deprecated: false
description: approve an invoice
operationId: approveInvoiceUsingPOST_2
parameters:
- description: invoiceId
in: path
name: invoiceId
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceResponse'
description: Success, an approved invoice object is returned
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: approveInvoice
tags:
- invoice-controller
/veem/v1.2/payments/{paymentId}/approve:
post:
deprecated: false
description: approve a payment
operationId: approvePaymentUsingPOST_2
parameters:
- description: paymentId
in: path
name: paymentId
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
description: Success, an approved payment object is returned
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: approvePayment
tags:
- payment-controller
/veem/v1.2/invoices/{invoiceId}/cancel:
post:
deprecated: false
description: cancel an invoice
operationId: cancelInvoiceUsingPOST_2
parameters:
- description: invoiceId
in: path
name: invoiceId
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceResponse'
description: Success, a cancelled invoice object is returned
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: cancelInvoice
tags:
- invoice-controller
/veem/v1.2/account:
post:
deprecated: false
operationId: createAccountUsingPOST
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OpenAccountRequest'
description: request
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/SetUpAccountResponse'
description: Created
summary: createAccount
tags:
- open-account-controller
/veem/v1.2/beneficial-ownership:
post:
deprecated: false
operationId: createBoiUsingPOST
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BOIRequest'
description: boiRequest
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/BeneficialOwnerResponse'
description: Created
summary: createBoi
tags:
- beneficial-owner-information-controller
get:
deprecated: false
operationId: getBoiUsingGET
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BeneficialOwnerResponse'
description: OK
summary: getBoi
tags:
- beneficial-owner-information-controller
/veem/v1.2/claimless-payments:
post:
deprecated: false
description: Creates a pay direct payment to the payee's (receiver's) bank account
operationId: createClaimLessPaymentUsingPOST
requestBody:
$ref: '#/components/requestBodies/PaymentRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
description: Success, a payment is created in Veem
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: createClaimlessPayment
tags:
- claimless-payment-controller
/veem/v1.2/contacts/batch:
post:
deprecated: false
description: Create multiple contacts in a batch
operationId: createContactsUsingPOST_2
parameters:
- description: includeItems
in: query
name: includeItems
required: false
schema:
default: false
type: boolean
requestBody:
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ContactBatchItemRequest'
type: array
description: request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BatchResponse'
description: Request data validated, processing started
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Invalid request data, no requests were processed
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner lacks permission to operate the current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: createContacts
tags:
- contact-controller
/veem/v1.2/contacts:
post:
deprecated: false
description: Create a contact in a batch
operationId: createContactUsingPOST_2
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ContactRequest'
description: request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
description: New contact was successfully created and returned
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Invalid request data, no requests were processed
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner lacks permission to operate the current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: createContact
tags:
- contact-controller
get:
deprecated: false
description: Get a page of account contacts by email address, first,last name, batchId, and business name
operationId: getContactsUsingGET_2
parameters:
- description: batchId
in: query
name: batchId
required: false
schema:
format: int64
type: integer
- description: batchItemIds
explode: true
in: query
name: batchItemIds
required: false
schema:
items:
format: int64
type: integer
type: array
- description: businessName
in: query
name: businessName
required: false
schema:
type: string
- description: email
in: query
name: email
required: false
schema:
type: string
- description: firstName
in: query
name: firstName
required: false
schema:
type: string
- description: lastName
in: query
name: lastName
required: false
schema:
type: string
- description: pageNumber
in: query
name: pageNumber
required: false
schema:
default: 0
format: int32
type: integer
- description: pageSize
in: query
name: pageSize
required: false
schema:
default: 20
format: int32
type: integer
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ContactResponse'
type: array
description: Success, all matching contacts were returned
'400':
description: Request failed, invalid search parameters
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner lacks permission to operate the current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: getContacts
tags:
- contact-controller
/veem/v1.2/crypto-wallet/applications:
post:
deprecated: false
description: Creates a new crypto wallet application.
operationId: createCryptoWalletApplication
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CryptoWalletApplicationRequest'
description: Crypto wallet application details
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CryptoWalletApplicationResponse'
description: Crypto wallet application created successfully
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Invalid request body
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Unauthorized, the token is invalid or expired
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Forbidden, the token owner doesn't have permission to operate this API
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Internal Server Error, see the error code and API doc for reference
summary: Create a crypto wallet application
tags:
- crypto-wallet-controller
/veem/v1.0/payments/cryptowallet/payin:
post:
deprecated: false
description: Creates deposit instructions for moving funds to a crypto wallet externally.
operationId: createCryptoWalletPayin
parameters:
- description: Identifier of the account the pay-in is created on behalf of.
in: query
name: onBehalfAccountId
required: false
schema:
format: int64
type: integer
requestBody:
$ref: '#/components/requestBodies/PayinRequest'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PublicInvoiceResponseCryptoWallet'
description: Success, a crypto wallet pay-in is created in Veem
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: Create a Crypto Wallet pay-in
tags:
- payment-controller
/veem/v1.0/payments/cryptowallet/payout:
post:
deprecated: false
description: Withdraw Crypto Wallet funds to an external address, creating a payment.
operationId: createCryptoWalletPayout
parameters:
- description: Identifier of the account the payout is created on behalf of.
in: query
name: onBehalfAccountId
required: false
schema:
format: int64
type: integer
requestBody:
$ref: '#/components/requestBodies/PayoutRequest'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PublicInvoiceResponseCryptoWallet'
description: Success, a crypto wallet payout is created in Veem
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: Create a Crypto Wallet payout
tags:
- payment-controller
/veem/v1.2/invoices:
post:
deprecated: false
description: posts an invoice and sends to receiver
operationId: createInvoiceUsingPOST_2
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceRequest'
description: request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceResponse'
description: Success, an invoice is created in Veem
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceResponse'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: createInvoice
tags:
- invoice-controller
/veem/v1.2/account/{accountId}/setting:
post:
deprecated: false
description: Creates or updates account settings for a specific account
operationId: createOrUpdateAccountSettingsUsingPOST
parameters:
- description: The account ID
in: path
name: accountId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAccountSettingsRequest'
description: Account settings request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAccountSettingResponse'
description: Success, account settings have been created or updated
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Bad Request, invalid request data
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: createOrUpdateAccountSettings
tags:
- open-account-controller
/veem/v1.2/payments:
post:
deprecated: false
description: post a payment and sends to receiver
operationId: createPaymentUsingPOST_2
requestBody:
$ref: '#/components/requestBodies/PaymentRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
description: Success, a payment is created in Veem
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorized, the token is invalid or expired
'401':
description: Unauthorized, the token is invalid or expired
'403':
description: Forbidden, the token owner doesn't have permission to operate current API
'404':
description: Not Found, the resource not found
'500':
description: Internal Server Error, see the error code and API doc for reference
summary: createPayment
tags:
- payment-controller
/veem/v1.2/webhooks:
post:
deprecated: false
description: Creates a webhook configuration for the account and platform associated with the provided authorization token
operationId: createWebhookUsingPOST_2
requestBody:
$ref: '#/components/requestBodies/WebhookRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponse'
description: Success, the webhook configuration was created and returned.
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponse'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Invalid request body
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Unauthorized, the token is invalid or expired
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Forbidden, the token owner doesn't have permission to operate this API
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Internal Server Error, see the error code and API doc for reference
summary: Create webhook
tags:
- webhook-controller
get:
deprecated: false
description: Gets all active webhook configurations for the account and platform associated with the provided authorization token.
operationId: getWebhooksUsingGET_2
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/WebhookResponse'
type: array
description: Success, all active webhook configurations were returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Unauthorized, the token is invalid or expired
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Forbidden, the token owner doesn't have permission to operate this API
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Internal Server Error, see the error code and API doc for reference
summary: Get webhooks
tags:
- webhook-controller
/veem/v1.2/webhooks/{webhookId}:
delete:
deprecated: false
description: Deletes the webhook configuration with the specified ID if it is owned by the account and platform associated with the provided authorization token
operationId: deleteWebhookUsingDELETE_2
parameters:
- description: webhookId
in: path
name: webhookId
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponse'
description: Success, the webhook configuration was deleted and returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Unauthorized, the token is invalid or expired
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Forbidden, the token owner doesn't have permission to operate this API
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: A webhook configuration with the specified ID was not found
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Internal Server Error, see the error code and API doc for reference
summary: Delete webhook
tags:
- webhook-controller
get:
deprecated: false
description: Gets the webhook configuration with the specified ID if it is owned by the account and platform associated with the provided authorization token.
operationId: getWebhookUsingGET_2
parameters:
- description: webhookId
in: path
name: webhookId
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponse'
description: Success, the webhook configuration was returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Unauthorized, the token is invalid or expired
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Forbidden, the token owner doesn't have permission to operate this API
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: A webhook configuration with the specified ID was not found
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Internal Server Error, see the error code and API doc for reference
summary: Get webhook
tags:
- webhook-controller
patch:
deprecated: false
description: Updates the webhook configuration with the specified ID if it is owned by the account and platform associated with the provided authorization token
operationId: updateWebhookUsingPATCH_2
parameters:
- description: webhookId
in: path
name: webhookId
required: true
schema:
format: int64
type: integer
requestBody:
$ref: '#/components/requestBodies/WebhookRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponse'
description: Success, the webhook configuration was updated and returned.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Invalid request body
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Unauthorized, the token is invalid or expired
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Forbidden, the token owner doesn't have permission to operate this API
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: A webhook configuration with the specified ID was not found
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/VeemErrorResponse'
description: Internal Server Error, see the error code and API doc for reference
summary: Update webhook
tags:
- webhook-controller
/veem/v1.2/attachments:
get:
deprecated: false
operationId: downloadAttachmentUsingGET_2
parameters:
- allowEmptyValue: false
description: The file name from the upload response
in: query
name: name
required: false
schema:
typ
# --- truncated at 32 KB (236 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/veem/refs/heads/main/openapi/veem-api-openapi.yml