SaFi Bank Space : Posting content by different instruction types

You can check this account for all the postings. https://ops.tm5.sandbox.safibank.online/customers/a4a70a00-9b49-4ff2-9f6d-7d04afec090e/accounts/0a02d386-9bec-4d7e-ba93-50c0bc157d76

Instruction Type

Posting Content

Comment

Transfer

{'batch_id': '7f6a1bb3-9497-4310-850e-f4f4e03c7c3f',

'batch_details': {},

'client_id': 'AsyncCreatePostingInstructionBatch',

'client_batch_id': '6a8d92bd-a7cb-4077-a8c6-672fee4f33e8',

'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 6, 779057),

'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 6, 779057),

'posting_instructions': [

{'id': '1d594c81-f393-4269-a06c-63a664604832',

'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',

'account_address': 'DEFAULT',

'credit': False,

'amount': Decimal('1'),

'denomination': 'PHP',

'asset': 'COMMERCIAL_BANK_MONEY',

'type': 'Transfer',

'balances': "key= ('DEFAULT', 'COMMERCIAL_BANK_MONEY', 'PHP', 'committed'), value= Balance(credit=0, debit=1, net=-1)",

'instruction_details': {'test': 'transfer'},

'client_transaction_id': '187926c3-9653-4f58-87a6-cd064235fc17',

'custom_instruction_grouping_key': '1d594c81-f393-4269-a06c-63a664604832',

'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 6, 779057),

'override_all_restrictions': False,

'pics': [],

'transaction_code': None,

'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 6, 779057)

}

]

}

make_transfer_posting(
    amount=1, 
    account_from=account_id1, 
    account_to=account_id2, 
    instruction_details={'test': 'transfer'}
)

HardSettlement

(Inbound)

{'batch_id': 'de23b2be-f982-4abd-9e5b-bd791aa59fda',

'batch_details': {'batch_details': 'make_inbound_hard_settlement'},

'client_id': 'AsyncCreatePostingInstructionBatch',

'client_batch_id': '871d42d7-18de-4bd4-8a01-54794121c9f2',

'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 12, 869101),

'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 12, 869101),

'posting_instructions': [

{'id': '8d112632-a06d-48b9-a3b2-2637d8369293',

'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',

'account_address': 'DEFAULT',

'credit': True,

'amount': Decimal('2'),

'denomination': 'PHP',

'asset': 'COMMERCIAL_BANK_MONEY',

'type': 'HardSettlement',

'advice': False,

'balances': "key= ('DEFAULT', 'COMMERCIAL_BANK_MONEY', 'PHP', 'committed'), value= Balance(credit=2, debit=0, net=2)",

'instruction_details': {'instruction_details': 'make_inbound_hard_settlement'},

'client_transaction_id': '1f7a331f-5d1b-40af-bf59-d5cd9af70238',

'custom_instruction_grouping_key': '8d112632-a06d-48b9-a3b2-2637d8369293',

'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 12, 869101),

'override_all_restrictions': False,

'pics': [],

'transaction_code': None,

'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 12, 869101)

}

]

}

make_inbound_hard_settlement_posting(
    amount=2, 
    account=account_id1, 
    internal_account=DUMMY_ACCOUNT,    
    instruction_details={'instruction_details': 'make_inbound_hard_settlement'},
    batch_details={'batch_details': 'make_inbound_hard_settlement'}
)

has an extra advice field

HardSettlement

(Outbound)

{'batch_id': 'f9725114-6609-46a0-9f1b-b0a2961e5ca4',
'batch_details': {'batch_details': 'make_outbound_hard_settlement'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': '9618fa70-e5f3-409f-a3df-4bfe8aeca491',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 16, 94207),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 16, 94207),
'posting_instructions': [
{'id': 'd9ea8cf7-7c60-470f-833a-d8af993ae520',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': False,
'amount': Decimal('3'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'HardSettlement'
'advice': False,
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','committed'), value= Balance(credit=0, debit=3, net=-3)",
'instruction_details': {'instruction_details': 'make_outbound_hard_settlement'},
'client_transaction_id': '61472663-c5f1-4bef-9b9a-236bb5b323ba',
'custom_instruction_grouping_key': 'd9ea8cf7-7c60-470f-833a-d8af993ae520',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 16, 94207),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 16, 94207)
}
]
}

make_outbound_hard_settlement_posting(
    amount=3, 
    account=account_id1, 
    internal_account=DUMMY_ACCOUNT,
    instruction_details={'instruction_details': 'make_outbound_hard_settlement'},
    batch_details={'batch_details': 'make_outbound_hard_settlement'}
)

it has an extra advice field

Authorisation

(Inbound)

{'batch_id': 'a9ff631a-7c77-4ffb-862f-5ac068eb8db5',
'batch_details': {'batch_details': 'make_inbound_authorisation_posting'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': 'c428c179-ed7c-45bf-b2b4-99425124c532',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 19, 65886),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 19, 65886),
'posting_instructions': [
{'id': '5963de0c-e7bb-43d7-a551-68a2b5d7c2ab',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': True,
'amount': Decimal('4'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'Authorisation',
'advice': False,
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','pending_in'), value= Balance(credit=4, debit=0, net=4)",
'instruction_details': {'instruction_details': 'make_inbound_authorisation_posting'},
'client_transaction_id': '01bce102-cc20-4dc5-a5cf-8445e56f1aa5',
'custom_instruction_grouping_key': '5963de0c-e7bb-43d7-a551-68a2b5d7c2ab',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 19, 65886),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 19, 65886)
}
]
}

make_inbound_authorisation_posting(
    amount=4, 
    account=account_id1, 
    internal_account=DUMMY_ACCOUNT,
    instruction_details={'instruction_details': 'make_inbound_authorisation_posting'}, 
    batch_details={'batch_details': 'make_inbound_authorisation_posting'},
    client_transaction_id=test_client_transaction_id1
)

we need to set the client_transaction_id for this kind of posting and it has an extra advice field

AuthorisationAdjustment

{'batch_id': '9aee00ad-9bb8-497b-80b2-247db5c2028d',
'batch_details': {'batch_details': 'make_authorisation_adjustment_posting'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': '1f3c37fb-263a-4933-90b5-5e87e7fda926',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 21, 715591),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 21, 715591),
'posting_instructions': [
{'id': 'cc827c68-301c-4520-a6c4-df97b0f8d5d2',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': True,
'amount': Decimal('0.01'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'AuthorisationAdjustment',
'advice': False,
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','pending_in'), value= Balance(credit=0.01, debit=0, net=0.01)",
'instruction_details': {'instruction_details': 'make_authorisation_adjustment_posting'},
'client_transaction_id': '01bce102-cc20-4dc5-a5cf-8445e56f1aa5',
'custom_instruction_grouping_key': 'cc827c68-301c-4520-a6c4-df97b0f8d5d2',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 21, 715591),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 21, 715591)
}
]
}

make_authorisation_adjustment_posting(
    amount=0.01, 
    client_transaction_id=test_client_transaction_id1,    
    instruction_details={'instruction_details': 'make_authorisation_adjustment_posting'},
    batch_details={'batch_details': 'make_authorisation_adjustment_posting'},
)

we need to use an existing client_transaction_id and adjust certain amount fund and no need to specify the account and it has an extra advice field

Release

{'batch_id': '307aee9d-446c-452d-85ca-56a26c9738ec',
'batch_details': {'batch_details': 'make_release_posting'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': '878f8c9c-4d66-4f97-b9b2-fce1827c1766',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 24, 462282),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 24, 462282),
'posting_instructions': [
{'id': '21c12b0a-77b5-44a4-9ee1-43f25f02872a',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': True,
'amount': Decimal('4.01'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'Release',
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','pending_in'), value= Balance(credit=0, debit=4.01, net=-4.01)",
'instruction_details': {'instruction_details': 'make_release_posting'},
'client_transaction_id': '01bce102-cc20-4dc5-a5cf-8445e56f1aa5',
'custom_instruction_grouping_key': '21c12b0a-77b5-44a4-9ee1-43f25f02872a',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 24, 462282),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 24, 462282)
}
]
}

make_release_posting(
    client_transaction_id=test_client_transaction_id1,
    instruction_details={'instruction_details': 'make_release_posting'},
    batch_details={'batch_details': 'make_release_posting'},
    posting_kwargs={'posting_kwargs': 'make_release_posting'}
)

it cancelled previous authorizations and the authorization adjustments.

Authorisation

(Outbound)

{'batch_id': '870206ae-a71f-406e-9f80-64cd29b565b7',
'batch_details': {'batch_details': 'make_outbound_authorisation_posting'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': 'bb0fa510-0e57-47df-bd8b-a29ba4da57ec',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 36, 977184),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 36, 977184),
'posting_instructions': [
{'id': '8776389e-a7bd-45e3-be91-446abd0c028d',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': False,
'amount': Decimal('5'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'Authorisation',
'advice': False,
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','pending_out'), value= Balance(credit=0, debit=5, net=-5)",
'instruction_details': {'instruction_details': 'make_outbound_authorisation_posting'},
'client_transaction_id': '9cad7c54-a94b-4f3d-a4f5-0220f49f030e',
'custom_instruction_grouping_key': '8776389e-a7bd-45e3-be91-446abd0c028d',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 36, 977184),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 36, 977184)
}
]
}

make_outbound_authorisation_posting(
    amount=5, 
    account=account_id1, 
    internal_account=DUMMY_ACCOUNT,
    instruction_details={'instruction_details': 'make_outbound_authorisation_posting'},
    batch_details={'batch_details': 'make_outbound_authorisation_posting'},
    client_transaction_id=test_client_transaction_id2
)

we need to set the client_transaction_id for this kind of posting and it has an extra advice field

AuthorisationAdjustment

{'batch_id': 'abad883b-75df-4e8f-b90f-60a2cb881437',
'batch_details': {'batch_details': 'make_authorisation_adjustment_posting'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': '597daabb-d0a5-4ed1-89fa-f462d35c39d6',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 52, 938014),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 52, 938014),
'posting_instructions': [
{'id': '4c5934ac-bcda-4706-9089-458e66466439',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': False,
'amount': Decimal('0.02'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'AuthorisationAdjustment',
'advice': False,
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','pending_out'), value= Balance(credit=0, debit=0.02, net=-0.02)",
'instruction_details': {'instruction_details': 'make_authorisation_adjustment_posting'},
'client_transaction_id': '9cad7c54-a94b-4f3d-a4f5-0220f49f030e',
'custom_instruction_grouping_key': '4c5934ac-bcda-4706-9089-458e66466439',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 52, 938014),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 8, 52, 938014)
}
]
}

make_authorisation_adjustment_posting(
    amount=0.02, 
    client_transaction_id=test_client_transaction_id2,
    instruction_details={'instruction_details': 'make_authorisation_adjustment_posting'},
    batch_details={'batch_details': 'make_authorisation_adjustment_posting'},
)

we need to use an existing client_transaction_id and adjust certain amount fund and no need to specify the account

Settlement

(partial)

{'batch_id': 'a1a60981-3f48-4664-aa33-029fdc3f84d4',
'batch_details': {'batch_details': 'make_settlement_posting'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': '0c163041-e88c-447b-8fab-d7ceb5585829',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 22, 872092),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 22, 872092),
'posting_instructions': [
{'id': '2210ea47-b0f5-47d3-8c0c-ea3669d321b3',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': False,
'amount': Decimal('0.03'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'Settlement',
'final': False,
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','pending_out'), value= Balance(credit=0.03, debit=0, net=0.03)
key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','committed'), value= Balance(credit=0, debit=0.03, net=-0.03)",
'instruction_details': {'instruction_details': 'make_settlement_posting'},
'client_transaction_id': '9cad7c54-a94b-4f3d-a4f5-0220f49f030e',
'custom_instruction_grouping_key': '2210ea47-b0f5-47d3-8c0c-ea3669d321b3',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 22, 872092),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 22, 872092)
}
]
}

make_settlement_posting(
    client_transaction_id=test_client_transaction_id2,
    instruction_details={'instruction_details': 'make_settlement_posting'},
    batch_details={'batch_details': 'make_settlement_posting'},
    posting_kwargs={"amount": "0.03", "final": False})

we can partially settle some amount of fund by using settlement posting with some amount and final to False. We need to specify the client_transaction_id and it has 2 key value pairs when calling balances() menthod

Settlement

(full)

{'batch_id': '1f1c9bf4-bfea-43e2-92ae-2a222c592db5',
'batch_details': {'batch_details': 'make_settlement_posting'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': '93c03782-558c-4822-a9f8-eafc31256e38',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 33, 928721),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 33, 928721),
'posting_instructions': [
{'id': '76b66cf5-9a80-4734-b89a-22eeb3ae819f',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': False,
'amount': Decimal('4.99'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'Settlement',
'final': True,
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','pending_out'), value= Balance(credit=4.99, debit=0, net=4.99)
key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','committed'), value= Balance(credit=0, debit=4.99, net=-4.99)",
'instruction_details': {'instruction_details': 'make_settlement_posting'},
'client_transaction_id': '9cad7c54-a94b-4f3d-a4f5-0220f49f030e',
'custom_instruction_grouping_key': '76b66cf5-9a80-4734-b89a-22eeb3ae819f',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 33, 928721),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 33, 928721)
}
]
}

make_settlement_posting(
    client_transaction_id=test_client_transaction_id2,
    instruction_details={'instruction_details': 'make_settlement_posting'},
    batch_details={'batch_details': 'make_settlement_posting'},    
    posting_kwargs={'final': True}
)

we can fully settle some amount of fund by using settlement posting with amount(can by empty) and final to True. We need to specify the client_transaction_id and it has 2 key value pairs when calling balances() menthod

CustomInstruction

{'batch_id': '1b86ecb7-18bf-4659-872f-90bef95bcef8',
'batch_details': {'batch_details': 'test_batch_details'},
'client_id': 'AsyncCreatePostingInstructionBatch',
'client_batch_id': '90bd154d-5e6f-48a3-aec2-5cccd200ec9a',
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 42, 30854),
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 42, 30854),
'posting_instructions': [
{'id': '75324444-5f78-4fed-98f2-13a9bd1e1b22',
'account_id': '0a02d386-9bec-4d7e-ba93-50c0bc157d76',
'account_address': 'DEFAULT',
'credit': False,
'amount': Decimal('9'),
'denomination': 'PHP',
'asset': 'COMMERCIAL_BANK_MONEY',
'type': 'CustomInstruction',
'phase': 'committed',
'balances': "key= ('DEFAULT','COMMERCIAL_BANK_MONEY','PHP','committed'), value= Balance(credit=0, debit=9, net=-9)",
'instruction_details': {'instruction_details': 'test_instruction_details'},
'client_transaction_id': '84f47db6-f3ac-40a8-8536-3fe3ab143e56',
'custom_instruction_grouping_key': '75324444-5f78-4fed-98f2-13a9bd1e1b22',
'insertion_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 42, 30854),
'override_all_restrictions': False,
'pics': [],
'transaction_code': None,
'value_timestamp': datetime.datetime(2023, 1, 3, 13, 10, 42, 30854)
}
]
}

make_custom_posting(
    amount=9,
    account_from=account_id1,
    address_from="DEFAULT",
    account_to=account_id2,
    address_to='DUMMY1',
    instruction_details={'instruction_details': 'test_instruction_details'},
    batch_details={'batch_details': 'test_batch_details'}
)

there is an extra phase object in this kind of instruction type.