openapi: 3.0.0
info:
description: Veem REST API
title: Veem API v1.2 attachment-controller payment-controller API
version: v1.2.1
servers:
- url: //sandbox-api.veem.com
tags:
- description: Payment Controller
name: payment-controller
paths:
/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.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/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/payments/{paymentId}:
get:
deprecated: false
description: get payment details
operationId: getPaymentUsingGET_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, a 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: getPayment
tags:
- payment-controller
/veem/v1.0/payments/wallet/addFunds:
post:
deprecated: false
description: Wallet Add Funds
operationId: walletAddFundsUsingPOST
requestBody:
$ref: '#/components/requestBodies/AddWalletFundsRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
description: Success, a wallet deposit 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: walletAddFunds
tags:
- payment-controller
/veem/v1.0/payments/wallet/withdraw:
post:
deprecated: false
description: Wallet Withdraw
operationId: walletWithdrawUsingPOST
requestBody:
$ref: '#/components/requestBodies/WalletWithdrawRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
description: Success, a wallet withdraw 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: walletWithdraw
tags:
- payment-controller
components:
schemas:
PaymentResponse:
properties:
amount:
$ref: '#/components/schemas/AlignMonetaryAmount'
attachments:
description: The list of external invoices to be attached with payment. The files can be uploaded usingfile upload apis
items:
$ref: '#/components/schemas/FileAttachment'
type: array
batchItemId:
description: The payment's batchItemId, as specified in the payment creation batch
format: int64
type: integer
bruid:
description: FX rates BRUID
type: string
ccEmails:
description: The list of emails who will be notified about the payment
items:
type: string
type: array
claimLink:
description: The link that allows the recipient to claim the payment
type: string
clientId:
type: string
debitCreditTxn:
$ref: '#/components/schemas/LatestCreditDebitResponse'
description: Latest Debit and credit txn information
dueDate:
description: The due date of the payment or invoice request
format: date-time
type: string
exchangeRate:
$ref: '#/components/schemas/ExchangeRateResponse'
exchangeRateQuoteId:
description: The quote id that was received earlier for the payment
type: string
externalInvoiceRefId:
description: The external invoice if for which payment is made, viewable by receiver
type: string
feeInformation:
$ref: '#/components/schemas/FeeInformationResponse'
fundingMethod:
$ref: '#/components/schemas/FundingMethod'
goodFundsPayment:
type: boolean
id:
description: The payment id
format: int64
type: integer
invoiceId:
description: The invoice id this payment originated from
format: int64
type: integer
notes:
description: The memo/note associated with payment, viewable by receiver
type: string
payee:
$ref: '#/components/schemas/SimpleAccount'
payeeAmount:
$ref: '#/components/schemas/AlignMonetaryAmount'
payeeFundingMethod:
$ref: '#/components/schemas/FundingMethod'
paymentAction:
enum:
- SubmitForApproval
- Approve
type: string
paymentApproval:
$ref: '#/components/schemas/PaymentApprovalResponse'
paymentApprovalRequest:
$ref: '#/components/schemas/PaymentApprovalRequest'
paymentAttributes:
$ref: '#/components/schemas/PaymentAttributesRequest'
paymentMethod:
description: 'The payer''s funding method type. Can be one of: Bank, Card or Wallet. Deprecated please use amount instead'
enum:
- Bank
- External
- Cheque
- Card
- Wallet
- VirtualCard
type: string
purposeOfPayment:
description: The purpose of payment required by banks for certain countries, applicable for following countries.SG,AE,KR,BR,CN,HK,HR,IS,ID,IN,IL,KE,PK,SA,ZA,TW,UA,VN
type: string
purposeOfPaymentDescription:
description: The purpose of payment description
type: string
pushPaymentInfo:
$ref: '#/components/schemas/PushPaymentInfoResponse'
status:
description: The status of the payment
enum:
- Drafted
- Sent
- Claimed
- PendingAuth
- PendingApproval
- Authorized
- InProgress
- Complete
- Cancelled
- Closed
- Reversed
- Scheduled
- SchedulingInProgress
type: string
timeCreated:
description: The creation time of the payment. The format is ISO-8601.
type: string
timeUpdated:
description: The most recent update time of the payment. The format is ISO-8601.
type: string
validationErrorMessage:
description: Error message to be returned when the request is not valid
type: string
required:
- amount
- batchItemId
- exchangeRate
- exchangeRateQuoteId
- id
- invoiceId
- payee
- status
title: PaymentResponse
type: object
WalletWithdrawRequest:
properties:
amount:
$ref: '#/components/schemas/AlignMonetaryAmount'
requestId:
type: string
title: WalletWithdrawRequest
type: object
PaymentRequest:
properties:
amount:
$ref: '#/components/schemas/AlignMonetaryAmount'
description: The amount and currency of the payment
fundingMethod:
$ref: '#/components/schemas/FundingMethod'
description: The payer's funding method. Type + Id, only used from 1.2 and newer versions
notes:
description: The memo/note associated with payment, viewable by receiver
type: string
payee:
$ref: '#/components/schemas/SimpleAccount'
description: The receiver of the payment
purposeOfPayment:
description: The purpose of payment - use the country to look at the meta-controller country-currency-map endpoint and look at the purposeOfPaymentInfo list and pick the correct purposeCode
type: string
purposeOfPaymentDescription:
description: The purpose of payment description
type: string
required:
- amount
- fundingMethod
- payee
- purposeOfPayment
- purposeOfPaymentDescription
title: PaymentRequest
type: object
FundingMethod:
properties:
id:
description: The payer's funding method id. This comes from the funding methods service.
format: int64
type: integer
type:
description: 'The payer''s funding method type. Can be one of: Bank, Card or Wallet.'
enum:
- Bank
- External
- Cheque
- Card
- Wallet
- VirtualCard
type: string
required:
- id
- type
title: FundingMethod
type: object
DefaultMethod:
properties:
defaultBillingMethod:
description: Indicates if the funding method is Billing Default
type: boolean
defaultCreditMethod:
description: Indicates if the funding method is Credit Default
type: boolean
defaultDebitMethod:
description: Indicates if the funding method is Debit Default
type: boolean
title: DefaultMethod
type: object
SimpleAccountCryptoWallet:
description: Account information for a party involved in a crypto wallet payment.
properties:
accountId:
description: The Account ID
format: int64
type: integer
bank:
$ref: '#/components/schemas/PublicBankAccountRequest'
description: Bank account information, used only for claimless payments
business:
$ref: '#/components/schemas/ContactBusinessRequestCryptoWallet'
description: Basic business information, used only for claimless payments
businessName:
description: The name of the receiver's business, required when account type is business
type: string
countryCode:
description: The 2 letter ISO country codes,ISO Alpha-2
enum:
- UNDEFINED
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AQ
- AR
- AS
- AT
- AU
- AW
- AX
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BL
- BM
- BN
- BO
- BQ
- BR
- BS
- BT
- BU
- BV
- BW
- BY
- BZ
- CA
- CC
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CP
- CR
- CS
- CU
- CV
- CW
- CX
- CY
- CZ
- DE
- DG
- DJ
- DK
- DM
- DO
- DZ
- EA
- EC
- EE
- EG
- EH
- ER
- ES
- ET
- EU
- EZ
- FI
- FJ
- FK
- FM
- FO
- FR
- FX
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GS
- GT
- GU
- GW
- GY
- HK
- HM
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IM
- IN
- IO
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MF
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NF
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NT
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PM
- PN
- PR
- PS
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SF
- SG
- SH
- SI
- SJ
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SU
- SV
- SX
- SY
- SZ
- TA
- TC
- TD
- TF
- TG
- TH
- TJ
- TK
- TL
- TM
- TN
- TO
- TP
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- UK
- UM
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WF
- WS
- XK
- YE
- YT
- YU
- ZA
- ZM
- ZR
- ZW
type: string
email:
description: The email of the receiver
type: string
extraInfo:
$ref: '#/components/schemas/JSONObject'
description: Optional additional information, used only for claimless payments
firstName:
description: The first name of the receiver
type: string
fundingMethodId:
description: Funding method id for this party when returned for authorized report callers
format: int64
type: integer
fundingMethodType:
description: Funding method type for this party when returned for authorized report callers
enum:
- Bank
- External
- Cheque
- Card
- Wallet
- VirtualCard
- VirtualBank
- CryptoWallet
type: string
industry:
description: The industry, used only for claimless payments
type: string
lastName:
description: The last name of the receiver
type: string
managingPartnerInfo:
$ref: '#/components/schemas/ManagingPartnerInfo'
middleName:
description: The middle name of the receiver
type: string
payeeAccountId:
description: The Payee Account ID
format: int64
type: integer
payeeAmount:
$ref: '#/components/schemas/AlignMonetaryAmountCryptoWallet'
description: The amount and currency of the payment
payerAccountId:
description: The Payer Account ID
format: int64
type: integer
payerAmount:
$ref: '#/components/schemas/AlignMonetaryAmountCryptoWallet'
description: The amount and currency of the payment
phoneCountryCodeIfPhoneOrElseSpace:
type: string
subIndustry:
description: The sub industry, used only for claimless payments
type: string
type:
description: The type of the receiver
enum:
- Incomplete
- Business
- Personal
type: string
required:
- accountId
- countryCode
- email
- firstName
- lastName
- payeeAmount
- payerAccountId
- payerAmount
- type
title: SimpleAccountCryptoWallet
type: object
PaymentApprovalRequest:
properties:
accountId:
format: int64
type: integer
userId:
format: int64
type: integer
title: PaymentApprovalRequest
type: object
JSONObject:
title: JSONObject
type: object
ManagingPartnerInfo:
description: Managing partner information for an account.
properties:
partnerFullName:
type: string
taxId:
type: string
title: ManagingPartnerInfo
type: object
ErrorResponse:
properties:
code:
description: The error code, different than HTTP status codes
format: int32
type: integer
error:
description: The short message
type: string
message:
description: The detailed, developer friendly message
type: string
timestamp:
description: The timestamp recorded when the error occurred
type: string
required:
- code
- error
- message
title: ErrorResponse
type: object
ExchangeRateResponseCryptoWallet:
description: Exchange rate details for a crypto wallet payment.
properties:
expiry:
description: The expiry time of the current rate quote
format: date-time
type: string
fromAmount:
description: The source amount, either from or to amount is allowed, the other one is calculated
type: number
fromCurrency:
description: The source currency
enum:
- UNDEFINED
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BYR
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LTL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRO
- MRU
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RUR
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STD
- STN
- SVC
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USDC
- USDB
- USDT
- USDV
- EURC
- USN
- USS
- UYI
- UYU
- UZS
- VEF
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XSU
- XTS
- XUA
- XXX
- YER
- ZAR
- ZMW
- ZWL
type: string
id:
description: The quote id
type: string
rate:
description: The Veem exchange rate for current transfer
type: number
timeCreated:
description: The quote generation time
format: date-time
type: string
toAmount:
description: The target amount, either from or to amount is allowed, the other one is calculated
type: number
toCurrency:
description: The target currency
enum:
- UNDEFINED
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BYR
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LTL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRO
- MRU
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RUR
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STD
- STN
- SVC
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USDC
- USDB
- USDT
- USDV
- EURC
- USN
- USS
- UYI
- UYU
- UZS
- VEF
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XSU
- XTS
- XUA
- XXX
- YER
- ZAR
- ZMW
- ZWL
type: string
required:
- expiry
- fromCurrency
- id
- rate
- timeCreated
- toAmount
- toCurrency
title: ExchangeRateResponseCryptoWallet
type: object
LatestCreditDebitResponse:
properties:
creditTxn:
$ref: '#/components/schemas/LatestCreditFinancialTxnResponse'
debitTxn:
$ref: '#/components/schemas/LatestDebitFinancialTxnResponse'
refundTxn:
$ref: '#/components/schemas/LatestFinancialTxnResponse'
type: object
UserApprovalInfoResponse:
properties:
approvalStatus:
enum:
- Approved
- Pending
- Ignored
type: string
email:
type: string
firstName:
type: string
lastName:
type: string
middleName:
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/veem/refs/heads/main/openapi/veem-payment-controller-api-openapi.yml