Build a Sample App

This tutorial will help you get familiar with the Galileo API. You will learn to create a simple account, activate it, simulate a transaction, send funds to another account, and freeze the account.

Before you start, see the Quickstart to get connected to the API. You can follow this tutorial using your own backend code or the Postman API client (see Postman Setup for a brief introduction to the tool).

Step 1 — Create an account and deposit funds

In this step, you will create an account and deposit funds using these endpoints:

For code samples of each endpoint request, see the API reference documentation.

📘

Note

The Create Account endpoint can deposit funds during account creation, but it's often useful to deposit funds separately. In this tutorial, you will use the Create Payment endpoint to deposit funds after you create an account.

Create an account

  1. To create an account, send a POST request to the Create Account endpoint. For all API requests in this tutorial, you'll need these credentials:
    • apiLogin
    • apiTransKey
    • providerId
  2. Check the output. There should be a new pmt_ref_no in the response data.

In JSON format, the output should look like this:

{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 09:03:31",
    "response_data": [
        {
            "pmt_ref_no": "1111",
            "product_id": "5094",
            "galileo_account_number": "0000",
            "cip": null,
            "card_id": "2726",
            "card_number": "512773XXXXXX1828",
            "expiry_date": null,
            "card_security_code": null
        }
    ],
    "processing_time": 4.772,
    "echo": {
        "transaction_id": "c6285802-72e4-4760-9011-b39993ecfbd5",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

In the next step, you'll use the new account number to deposit funds into the account.

Deposit funds

  1. To deposit funds into the account, call the Create Payment endpoint using the values in this table:
ParameterValue
accountNoThe pmt_ref_no from your createAccount call
amount50
typeRL (indicates a Retail Load payment)

📘

Note

When you deposit funds to an account in Sandbox and CV, the funds are not taken from a real account, but are simulated in the environment.

  1. Check the output. The new_balance should be 50:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 09:25:31",
    "response_data": {
        "old_balance": 0,
        "new_balance": 50,
        "fee_amount": "0",
        "payment_trans_id": 2543,
        "transaction_id": "08009594-5b37-4e84-9b42-4dd7450010f6"
    },
    "processing_time": 4.492,
    "echo": {
        "transaction_id": "08009594-5b37-4e84-9b42-4dd7450010f6",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }

Keep your code accessible. You will use both of these endpoints in later steps.

Step 2 — Activate the card and account

In this step, you will activate the account and card so that they can be used in transactions. Card and account statuses are independent, so you will need to activate both before you can use the card. You'll activate both with these endpoints:

Activate the account

  1. To activate the account, call the Modify Status with the following values:
ParameterValue
accountNoThe pmt_ref_no from your createAccount call
type11 (moves the account to status: N). For more information on types and statuses, see the Modify Status Types enumeration.

📘

Note

Using Modify Status type 11 to activate an account is appropriate in the sandbox, but it should not be used in CV or Production. In those cases, your accounts will be moved to Active status either when the card is activated or when an automated process activates the account.

  1. Check the output. The account_status should be N, indicating that the account is active:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 10:24:13",
    "response_data": {
        "pmt_ref_no": "1111",
        "account_status": "N"
    },
    "processing_time": 4.358,
    "echo": {
        "transaction_id": "5ffa9361-fbfa-4068-8489-d14811b44e88",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}
  1. The account is now active but the card is not. To see the card status, call the Get Card endpoint with the following value:
ParameterValue
accountNoThe pmt_ref_no from your createAccount call
  1. Check the output. The status should now be W (see Card Statuses for more information):
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-09 14:34:01",
    "response_data": {
        "card_number": "512773XXXXXX6554",
        "expiry_date": null,
        "card_security_code": null,
        "status": "W",
        "card_id": "2728",
        "external_card_id": null,
        "pmt_ref_no": "1111",
        "first_name": "",
        "middle_name": "",
        "last_name": "",
        "encrypted_card_number": null,
        "encrypted_expiry_date": null,
        "embossed_cards": [],
        "freeze_info": {
            "status": "Unfrozen",
            "start_date": null,
            "end_date": null
        },
        "pin_fail_count": "0",
        "pin_fail_date": null,
        "spend_controls": {
            "available_credit": null,
            "single_use": null,
            "credit_limit": null
        }
    },
    "processing_time": 0.285,
    "echo": {
        "transaction_id": "a551f1ba-aa71-4672-8eed-73b25a2ac484",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

Activate the card

  1. To activate the card, call the Modify Status endpoint again, but change the type to 7:
ParameterValue
accountNoThe pmt_ref_no from your createAccount call
type7 (moves the card to status: N). For more information on types and statuses, see the Modify Status Types enumeration.

📘

Note

Using Modify Status type 7 to activate a card is appropriate in the sandbox, but it should not be used in CV or Production. Instead, choose an option in Card activation in the Setting Up a Card Program guide.

  1. Check the output again. The account_status should still be N:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 10:36:15",
    "response_data": {
        "pmt_ref_no": "1111",
        "account_status": "N"
    },
    "processing_time": 4.647,
    "echo": {
        "transaction_id": "41690d14-cf35-4f28-bfc8-924d50e0ae5a",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}
  1. Call the Get Card endpoint again with the same accountNo.
  2. Check the output for the Get Card call. The status should now be N, indicating the card is active:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-09 14:45:56",
    "response_data": {
        "card_number": "512773XXXXXX6554",
        "expiry_date": null,
        "card_security_code": null,
        "status": "N",
        "card_id": "2728",
        "external_card_id": null,
        "pmt_ref_no": "0000",
        "first_name": "",
        "middle_name": "",
        "last_name": "",
        "encrypted_card_number": null,
        "encrypted_expiry_date": null,
        "embossed_cards": [],
        "freeze_info": {
            "status": "Unfrozen",
            "start_date": null,
            "end_date": null
        },
        "pin_fail_count": "0",
        "pin_fail_date": null,
        "spend_controls": {
            "available_credit": null,
            "single_use": null,
            "credit_limit": null
        }
    },
    "processing_time": 0.296,
    "echo": {
        "transaction_id": "54c53a34-d1d3-43cd-9e9e-d824f97fc80d",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

Step 3 — Simulate a card transaction

After the account and card are active, you can simulate a card transaction. In a test environment, it is not possible to use a real transaction with a card network. Instead, you'll simulate authorization, simulate settlement, and then check the final balance with these endpoints:

Simulate authorization

  1. To simulate the authorization of a $20 transaction, call the Simulate Card Authorization endpoint with the following values:
ParameterValue
accountNoThe pmt_ref_no from your createAccount call
amount20
associationvisa
merchantNameA business name (for example, The Toastery).
  1. Check the output. The auth_response_code should be 00:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-07 15:51:57",
    "response_data": {
        "auth_response_code": "00",
        "auth_response_description": "Success",
        "auth_id": 1437
    },
    "processing_time": 0.756,
    "echo": {
        "transaction_id": "4a228320-c991-4a8f-b95a-eb6c82f8961b",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

📘

Note

If the auth_response_code is 05, it is likely that either the card or account was not properly activated (see Authorization Response Codes for more information). Make sure to pass type: 7 and type: 11 through the Modify Status endpoint.

Simulate settlement

Now that you have authorized a transaction, the next step is to settle it.

  1. Call the Simulate Card Settlement endpoint with the following values:
ParameterValue
accountNoThe pmt_ref_no from your createAccount call
associationvisa
authIdThe authId from your createSimulatedCardAuth call
  1. Check the output. The settle_response_code should be 00:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 10:55:49",
    "response_data": {
        "settle_response_code": "00",
        "settle_response_description": "Success",
        "settle_dtl_id": 512
    },
    "processing_time": 1.826,
    "echo": {
        "transaction_id": "2af57d44-8787-43bd-b314-99b35832a354",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

Get the balance

Check the balance to make sure the transaction went through as expected.

  1. Call the Get Balance endpoint with the following value:
ParameterValue
accountNoThe pmt_ref_no from your createAccount call
  1. Check the output. The balance should be 30:
{
    "status_code": 0,
    "status": "Success",
    "processing_time": 0.088,
    "response_data": {
        "balance": 30,
        "balance_without_pending": "30",
        "currency_code": "840",
        "pending_adjustments": 0,
        "pending_billpay": 0,
        "pending_purchase": 0,
        "balance_without_auths": 30
    },
    "echo": {
        "provider_transaction_id": "",
        "provider_timestamp": null,
        "transaction_id": "CUXXD4AEUMWOBMPKYBZ8"
    },
    "rtoken": "8cc16de0-5eda-4e2a-968e-3b08fce6f778",
    "system_timestamp": "2020-07-13 10:31:56"
}

Step 4 — Send funds between accounts

In this step, you’ll set up a second account, activate it, and send funds from the first account. Be sure to keep your account number handy. You will use these endpoints:

Create a second new account

  1. To create a second account, call the Create Account.
  2. Check the output. The status should indicate Success:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:24:08",
    "response_data": [
        {
            "pmt_ref_no": "7777",
            "product_id": "5094",
            "galileo_account_number": "0000",
            "cip": null,
            "card_id": "2727",
            "card_number": "512773XXXXXX7167",
            "expiry_date": null,
            "card_security_code": null
        }
    ],
    "processing_time": 4.882,
    "echo": {
        "transaction_id": "40478edd-5047-477d-b100-83f339a090c5",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

Activate the receiving account and card

Activate the second account and card in the same way you activated the first account.

  1. To activate the account, call the Modify Status endpoint with the following values:
ParameterValue
accountNoThe pmt_ref_no from the second account you created
type11 (moves the account to status: N)
  1. Check the output. The account_status should be N, indicating that the account is active (see Account Statuses for more information):
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:27:03",
    "response_data": {
        "pmt_ref_no": "7777",
        "account_status": "N"
    },
    "processing_time": 4.524,
    "echo": {
        "transaction_id": "78dc07c5-a353-48dc-a8a7-3c84e5df1873",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}
  1. Next, activate the card. Call the Modify Status endpoint with the following values:
ParameterValue
accountNoThe pmt_ref_no from the second account you created
type7 (moves the card to status: N)
  1. Check the output again. The account_status should be N:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:27:03",
    "response_data": {
        "pmt_ref_no": "7777",
        "account_status": "N"
    },
    "processing_time": 4.524,
    "echo": {
        "transaction_id": "78dc07c5-a353-48dc-a8a7-3c84e5df1873",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

Transfer funds

  1. To transfer funds from the first account to the second, call the Create Account Transfer endpoint with the following values:
ParameterValue
accountNoThe pmt_ref_no from the first account you created
amount10
transferToAccountNoThe pmt_ref_no from the second account you created
  1. Check the output response_data:
  • The top-level new_balance should be 20 (this is the balance for your first account).
  • Under transfer_to_account, the new_balance should be 10 (this is the balance for your second account):
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:33:53",
    "response_data": {
        "old_balance": 30,
        "new_balance": 20,
        "adjustment_trans_id": 2042,
        "transfer_account_id": "1150",
        "sender_fee_amount": 0,
        "payment_trans_id": 2549,
        "transfer_to_account": {
            "old_balance": 0,
            "new_balance": 10
        }
    },
    "processing_time": 4.809,
    "echo": {
        "transaction_id": "753d02ed-fe4c-4d29-aa5e-89641f78692e",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}
  1. You can verify the balance by sending each PRN to the Get Balance endpoint. You might also try sending each PRN to Get Transaction History to see how one account was credited and the other debited.

Step 5 — Freeze an account

In this step, you'll freeze an account, verify that it's frozen, then unfreeze it. You will use these endpoints that you've already had practice with:

Freeze the account

  1. To freeze the account, call the Modify Status endpoint with the following values:
ParameterValue
accountNoThe pmt_ref_no from the second account you created
type17 (freezes the account)
  1. Check the output. The status should indicate Success:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:48:10",
    "response_data": {
        "pmt_ref_no": "1111",
        "account_status": "N"
    },
    "processing_time": 4.391,
    "echo": {
        "transaction_id": "564f70db-759e-4601-a9f0-c2e95cd26e54",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

📘

Note

When you freeze an account, the freeze is reflected in the freeze_info object in the Get Card and Get Account Cards endpoints, and not the status. See Freezing cards in the About Cards guide for more information.

Test the frozen account

Try authorizing a transaction to see what happens to a frozen account.

  1. Call the Simulate Card Authorization endpoint with the following values:
ParameterValue
accountNoThe pmt_ref_no from the first account you created
amount10
associationvisa
merchantNameA business name (for example,The Toastery).
  1. Check the output. The auth_response_code should be 57, indicating that the transaction is not permitted (see Authorization Response Codes for more information):
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:52:01",
    "response_data": {
        "auth_response_code": "57",
        "auth_response_description": "Transaction not permitted",
        "auth_id": 1445
    },
    "processing_time": 0.505,
    "echo": {
        "transaction_id": "6d2c2ea9-bd8f-4b12-8d8d-ced6a3ba68fb",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

Unfreeze the account

  1. To remove the freeze from the account, call the Modify Status endpoint again, but change type to 18:
ParameterValue
accountNoThe pmt_ref_no from the frozen account
type18 (unfreezes the account)
  1. Check the output. The status should indicate Success:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:55:19",
    "response_data": {
        "pmt_ref_no": "1111",
        "account_status": "N"
    },
    "processing_time": 4.42,
    "echo": {
        "transaction_id": "292c9caf-6482-43d4-895e-f0f81587bb53",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}

Test the unfrozen account

  1. Call the Simulate Card Authorization endpoint with same following values:
ParameterValue
accountNoThe pmt_ref_no from the first account you created
amount10
associationvisa
merchantNameA business name (for example,The Toastery).
  1. Check the output. The auth_response_code should now be 00, indicating that the transaction is authorized:
{
    "status_code": 0,
    "status": "Success",
    "system_timestamp": "2020-12-08 11:58:01",
    "response_data": {
        "auth_response_code": "00",
        "auth_response_description": "Success",
        "auth_id": 1446
    },
    "processing_time": 0.543,
    "echo": {
        "transaction_id": "ed6de582-897d-4968-8de9-d5ccf89a2188",
        "provider_transaction_id": "",
        "provider_timestamp": null
    }
}