Quick Buy
Last updated
Last updated
The Quick Buy module provides the infrastructure to perform buy exchanges on behalf of customers, using a customer's external financial card. This module includes a series of endpoints tailored to the needs of users looking to perform and monitor quick buy exchanges for their customers, as well as manage their saved cards.
Offering functions from quoting to execution, along with detailed tracking mechanisms, the Quick Buy module endpoints include:
Onboarding:
- Onboard a new customer account for using QuickBuy.
- Upload Documents for a newly onboarded QuickBuy Customer, if using external KYC.
Card Management:
- Retrieve a list of payment cards associated with a customer.
- Enables a user to retrieve information about a payment card by submitting the ID of the payment card.
- Allows a user to delete a payment card, removing it from being an option for further exchanges.
Exchanges:
: Provides a list of asset pairs enabled for the API user and available for quick buy. The response will also include information on limits and minimums associated with each asset pair for exchanges.
: Provides an estimate for a quick buy exchange, detailing the price and amount before the actual exchange is executed, ensuring that the customer is informed about the potential transaction.
: This endpoint will allow a customer to initiate a quick buy exchange. The customer can either use a saved payment card or enter details of a payment card. The user has the option of saving the payment card for use in further exchanges.
: Provides a generated list of quick buy exchanges, with the ability to filter by customer, order type, and more.
: Provides a details of a quick buy order buy submitting the ID of the exchange.
This endpoint facilitates the onboarding of a QuickBuy-only customer with minimal required information. It is intended for widget-based applications and other simplified onboarding interfaces strictly for the QuickBuy product, providing a leaner alternative to the full managee onboarding process.
Endpoint: /api/v1/customer/quick-buy/onboard
Method: POST
Important to Note
Customers created via this endpoint cannot access Ibanera banking services.
For real-time status update, use the Customer Detail API /api/v1/customer/details.
If the response contains jumioLink
, the customer must complete that verification step before eligible to submit exchanges.
Ibanera collects KYC for QuickBuy/Portl customers. This endpoint offers the flexibility of either using Ibanera's ID Verification provider, Jumio, or using your own IDv solution. The below section outlines each approach can be executed.
bUseJumio
= true (Jumio Verification Required)
Upon successful creation, the API will return a Jumio verification link that the user must follow to complete KYC. This verification link is accessible in the jumioLink
field.
Response Body Parameters:
id
(Integer): A placeholder ID not actively used in the response.
details
(Object):
customersId
(bigint): Newly Created Customer ID
Response Body Example
bUseJumio
= false (IDv Collected Externally)
DocumentType
PASSPORT
Customer Passport, clearly displaying key identification details page
DRIVING_LICENSE
Drivers License documentation
ID_CARD
Identification Card document
VISA
Customer Visa document
Document Sub Type
NOTIONAL_ID
Customer Passport, clearly displaying key identification details page
CONSULAR_ID
Drivers License documentation
ELECTORAL_ID
Identification Card document
RESIDENT_PERMIT_ID
Customer Visa document
TAX_ID
Customer selfie photo, must be clear
STUDENT_ID
Customer Proof of Address, must be within 90 days to be accepted
PASSPORT_CARD_ID
Passport Identification Card
MILITARY_ID
Military Identification Card
PUBLIC_SAFETY_ID
Public Safety Identification Card
HEALTH_ID
Health Identification Card
OTHER_ID
Other Identification Card
VISA
Visa Identification Card
REGULAR_DRIVING_LICENSE
Use when DocumentType is DRIVING_LICENSE, for regular drivers license
LEARNING_DRIVING_LICENSE
Use when DocumentType is DRIVING_LICENSE, for learners drivers license or permit
E_PASSPORT
Use when DocumentType is PASSPORT
NOT_EXECUTED
ID Verification Workflow not executed
PASSED
ID Verification Workflow Passed Successfully
REJECTED
ID Verification was Rejected
WARNING
ID Verification completed with warning
Once submitted successfully, the API will respond with the kycDocumentsRequired
to complete the onboarding. These documents can be submitted via the Upload Document endpoint below.
Upload individual KYC documents (e.g., ID Front, ID Back, Face Photo) associated with the Customer Id received from Step 1.
Endpoint: POST /api/v1/customer/quick-buy/uploaddocument
Request Format: multipart/form-data
Validation:
Max allowed file size: 10 MB
Only image/PDF formats allowed.
📄 Request Payload
Parameter
Type
Description
CustomerId
int
Unique identifier of the customer, obtained from onboard endpoint
Type
enum
Type of document being uploaded, obtained from result of onboard endpoint
DocumentSide
enum
Side of the document (e.g., Front, Back, Face)
File
file
The document file to be uploaded
Front
Front side of Identification Document
Back
Back side of Identification Document
Face
Selfie of customer
Response Payload (Failure Example)
Retrieve a list of payment cards associated with a customer
Endpoint: /api/v1/customer/quick-buy/cards/list
Method: GET
Enables a user to retrieve information about a payment card by submitting the ID of the payment card.
Endpoint: /api/v1/customer/quick-buy/cards/getbyid
Method: GET
Request Query Example
Allows a user to delete a payment card, removing it from being an option for further exchanges.
Endpoint: /api/v1/customer/quick-buy/cards/delete
Method: POST
Provides a list of asset pairs enabled for the API user and available for quick buy. The response will also include information on limits and minimums associated with each asset pair for exchanges.
Endpoint: /api/v1/customer/quick-buy/orders/assets
Method: GE
This endpoint provides a quoted market price for a proposed asset exchange for a particular customer, detailing the amount and price for an exchange. By specifying details of the desired trade, a customer can see the cost or proceeds they might expect from completing a transaction, including any applicable fees. This helps customers decide whether to proceed with an exchange based on real-time financial data. For quick buy exchanges, all exchanges will refer to the specified crypto currency being bought in exchange for fiat currency.
Endpoint: /api/v1/customer/quick-buy/orders/quote
Method: GET
Query Parameters:
customersId
(Integer): ID of the customer making the exchange—required.
assetCode
(String): The crypto currency to be bought, such as "BTC"—required.
assetAmount
(Decimal, Nullable): Desired amount of crypto currency to be bought. Must be null if currencyAmount is specified.
currenyAmount
(Decimal, Nullable): Desired amount of currency to be exchanged. Must be null if assetAmount is specified.
Response Body Parameters:
id
(Integer): Not used.
details
(Object): Contains the quote details.
customersId
(Integer): ID of the customer.
assetCode
(String): Crypto currency asset to be bought in the exchange.
currenyCode
(String): Fiat currency asset involved in the exchange.
assetAmount
(Decimal): Amount of crypto currency asset to be bought.
currencyAmount
(Decimal): Amount of fiat currency required for exchange.
Required
Named field missing or zero
Invalid
Value given for named field is invalid
Documents_Not_Verified
Cannot perform this action for this customer due to the KYC state
Amount_Must_Be_Positive
Invalid or missing amount
This endpoint is intended for initiating a quick buy exchange, enabling a customer to purchase an asset at a specified price.
Endpoint: /api/v1/customer/quick-buy/orders/submit
Method: POST
Request Body Parameters:
customersId
(Integer): ID of the customer making the exchange—required.
assetCode
(String): The crypto currency to be bought, such as "BTC"—required.
assetAmount
(Decimal, Required): Desired amount of crypto currency to be bought.
currenyAmount
(Decimal, Required): Desired amount of currency to be exchanged.
paymentCardsId
(Integer, Nullable): Id of saved payment card. Must be null if CardDetails is not null.
cardDetails
(JSON Object): Details of payment card. Must be null if paymentCardsId is not null.
cardNumber
(String, Required): Card number.
cvv
(String, Required): Card CVV
cardHolderName
(String, Required): Cardholder name.
addressLine1
(String, Required): Cardholder address line 1.
addressLine2
(String): Cardholder address line 2.
townCity
(String, Required): Cardholder town or city.
countryISO2
(String, Required): Cardholder country of address.
stateProvince
(String, Required): Cardholder state or province.
postCode
(String, Required): Cardholder ZIP/Postal Code.
expMonth
(Integer, Required): Card expiration month.
expYear
(Integer, Required): Card expiration year.
bSaveCard
(Boolean, Required): Indicates whether the payment card should be saved.
Request Example:
Response Body Parameters:
id
(Integer): Not used.
details
(Object):
status
(String): The status of the transaction, such as "Pending".
Possible values: Pending
, Failed
, Approved
, ActionRequired
.
exchangesId
(Integer): The ID of the associated asset exchange.
Success Response Example:
Required
Named field missing or zero
Invalid
Value given for named field is invalid
Documents_Not_Verified
Cannot perform this action for this customer due to the KYC state
Provides a system generated list of quick buy exchanges, with ability to filter by the the customersID or asset pair.
Endpoint: /api/v1/customer/quick-buy/orders/list
Method: GET
Optional Request Query Parameters:
customersId
(Integer): The ID of the customer initiating the purchase.
assetPair
(String): The asset pair to be filtered, such as "BTC/USDC".
PageNumber
(Integer): List page number (default = 1)
PageSize
(Integer): List page size (default = 10)
Provides a system generated list of quick buy exchanges, with ability to filter by the the customersID or asset pair.
Endpoint: /api/v1/customer/quick-buy/orders/getbyid
Method: GET
Optional Request Query Parameters:
customersId
(Integer): The ID of the customer initiating the purchase.
assetPair
(String): The asset pair to be filtered, such as "BTC/USDC".
PageNumber
(Integer): List page number (default = 1)
PageSize
(Integer): List page size (default = 10)
jumioLink
(Array of Objects): Newly created customer will require to validate email from portl link (e.g. ) before further identity verification on this jumio link.
When using an external IDv provider, there are two steps to the onboarding process. The first step is to submit the customer details as defined below. Once the customer is created, you must then , which would be the externally collected ID verification documents.
One time pass for the request
One time pass for the request
Possible validation errors:
One time pass for the request