GET STARTED

Add cryptocurrency options to your existing payment methods to offer greater payment choice and flexibility for your customers. FIATO handles the payment flow from checkout to settlement, allowing merchants to benefit from this innovative payment method without the need for deep technical know-how or risks related to exchange fluctuations.

Every time a customer pays for your products or service in crypto, you will receive the same amount of fiat money (less processing fees). That way your retail price will be pegged to fiat currency just as it would when you use other payment processing methods.

alt text

How To Set Up Your Account

Click “Sign Up For A Merchant Account" on FIATO website. After filling in all the required fields, we will send you a letter with your confirmation link shortly after. You can easily find the letter in your inbox. Click the link to confirm your registration.

Once you have signed up with FIATO, you will be automatically assigned 4 separate wallets for each supported currency: BTC, ETH, KNOW, USDT.

Once integrated with FIATO SDK, you can let your customers choose to pay in crypto from two options:

  • Pay from Kryptono if they already have an account on Kryptono Exchange, or
  • Pay Directly and make payments without needing to register an account with Kryptono.

As a requirement prior to setting the retail price for a product, you will need to select a range of cryptocurrencies that can be accepted. Apart from major coins (BTC, ETH), there can be much more to your preference. Customer payments are classified into two types:

  • Transfer: When they pay in one of your selected cryptocurrencies, or
  • Exchange: When they convert their own tokens into your selected coins for payment.

For you, this means business as usual because FIATO instantly converts these payments into fiat, providing you with US Dollars based on real-time exchange rates. We only charge processing fees for each successful payment made by a user, and at a flat-rate of as little as 2% of your suggested retail price. (For example, if a user transfers an equivalent amount of US$100 in crypto, our system will automatically deduct 2% or US$2, and you receive US$98 in payment.)


iOS INTEGRATION GUIDE

Requirement

  • Get Client Key, Checksum Key
  • If your project is written in Swift, Swift compiler version must be equal or greater than 4.1

How To Integrate SDK To Your Project

  • Step 1: Drag file KPAYMerchant.framework to the project. alt text

  • Step 2: Select tab General then add KPAYMerchant on section Embedded Binaries and Linked Frameworks and Libraries.

  • Step 3: If your project is written in Objective C, select tab Build Settings, set value to YES for key Always Embed Swift Standard Libraries

  • Step 4: Import following module

    • If your project is written in Swift
      import KPAYMerchant
    
    • If your project is written in Objective C
      #import <KPAYMerchant/KPAYMerchant.h>
    
  • Step 5: MUST call the following class method before calling any other methods on the framework. Otherwise, it will cause failure.

      + (BOOL)configureWithClientKey:(NSString *)clientKey
                         checksumKey:(NSString *)checksumKey;
    
    • Parameters:
      • clientKey: Go to Merchant site to get your client key
      • checksumKey: Go to Merchant site to get your checksum key
  • Step 6 (Optional): By default, SDK will be in English. If your application wants to change the language of the KPAYMerchant, call this method.

      + (KPFError)setDesiredLanguage:(KPFSupportedLocalization)lang;
    
    • Parameters:
      • lang: supported languages. Check enum KPFSupportedLocalization for more detail

How To Use SDK

Payment Checkout

  • SDK will checkout exactly the amount and return to your app. Your application MUST pass it to SDK.
+ (void)launchFromController:(UIViewController * _Nonnull )sourceController
                userIdentity:(NSString * _Nonnull )userId
                    delegate:(id<KPFrameworkProtocol>)delegate
       requestedAmountIn_USD:(double)amount
                 referenceId:(NSString *)refId
               customMessage:(NSString *)msg;
  • Parameters:

    • sourceController: controller that is used to launch sdk
    • delegate: an instance implementing protocol KPFrameworkProtocol to receive the payment result.
    • userIdentity: It’s accountId or userId or any name that your platform uses to identify the user.
    • amount: fixed amount (in USD) passed to SDK. It must be greater than zero.
    • refId: an unique identifier generated by your platform to mark with the transaction.
    • msg: a note for the transaction.
  • Discussion:

    • Implement protocol KPFrameworkProtocol to receive result of the top up.
    • An error code KPFError_Requested_Amount_Must_Be_Greater_Than_Zero may be returned if amount argument less or equal to zero. Check enum KPError for more detail about errors.

Protocol And Enum Definition

Protocol KPFrameworkProtocol

@protocol KPFrameworkProtocol <NSObject>

@required
- (void)kpFramework:(KPFramework *)kpframework
  didReceivePayment:(NSString *)paymentId
              error:(KPFError)error;
    
@end
  • Discussion:
    • paymentId: has non-nil value if success.
    • error: KPFError_No_Error if success. Otherwise, check error enum KPFError to know which error is returned.

Enum

  • Enum Supported localized languages KPFSupportedLocalization

    enum kpf_supported_localization {
        kPFSL_English = 0,
        kPFSL_ChineseSimplified
    };
    typedef enum kpf_supported_localization KPFSupportedLocalization;
    
  • Enum SDK Error KPFError

    • All possible errors returned from SDK
    enum kpf_error {
        KPFError_No_Error = 0,
        
        KPFError_Framework_Not_Configured,
            
        KPFError_InvalidClientKey,
        KPFError_InvalidChecksumKey,
        KPFError_MerchantNotFound,
        KPFError_WrongClientKeyType,
        
        kPFError_User_Identity_Is_Null,
        
        KPFError_Language_Not_Supported,
    
        KPFError_Requested_Amount_Must_Be_Greater_Than_Zero
    };
    typedef enum kpf_error KPFError;
    

ANDROID INTEGRATION GUIDE

  • Comming soon

HTML5 INTEGRATION GUIDE

Requirement

Get Client Key, Checksum Key

How To Integrate SDK To Your Project

  • Step 1: Add the following script
      <script src="https://payment.kryptono.exchange/static/script.js"></script>
    
  • Step 2: Call following init method after loaded script.
    <script>
      KryptonoMerchantSDK.init({
        clientKey: '<YOUR CLIENT KEY>',
        checksumKey: '<YOUR CHECKSUM KEY>',
        lang: 'en',
      })
    </script>
    
    • Parameters:
      • clientKey: Go to Merchant site to get your client key
      • checksumKey: Go to Merchant site to get your checksum key
      • lang: SDK localized languages. Default is English. SDK currently supports these following language codes
        • en: English
        • zh: Simplified Chinese
    • Discussion: If parameter lang is null, empty or other language codes besides supported languages from SDK, English will be default.

How To Use SDK

Payment Checkout

  • SDK will take exactly a fixed amount and return to your app. Users are not allowed to enter amounts within, your application MUST pass it to SDK.

    KryptonoMerchantSDK.payment
    
    • Params
FieldDescriptionsTypeRequired
userIdGettercallback hook for getting user identity, required for identity user.callback() :userId|Promise<userId>required
amountAmount of requested base currency.numberrequired
  • Return

    • Promise base PaymentId
  • Errors

    {
      error: "400501",
      error_description: "Invalid client Key"
    }
    
Error CodeError Description
400901User closed Window
400902Topup/Payment window already opened
400903userIdGetter is missing or not a callback
400904invalid or missing Amount
400905referenceIdGetter is missing or not a function
400501Invalid client Key
400503Invalid checksum key
404501Enterprise not found
406501Wrong client key type
  • Example
KryptonoMerchantSDK.payment({
  userIdGetter: function(){
    /**
     * Return your userId here
     * Or returned Promise base <userId>
     * */
    return userId
  },
  referenceIdGetter: function(){
    /**
     * Return referenceId here
     * Or returned Promise base <userId>
     * */
    return referenceId
  },
  amount : 3000
})
  .then(paymentId => {
    console.log('Payment ID returned %s', paymentId);
  })
  .catch(error => {
    if(error)
      alert(error.error_description)
  })
  

Live example: https://codepen.io/kryptono/pen/RebLvy?editors=1010