Skip to content

PayCore

May 13, 2021

Corefy versions:
1.65, 1.64, 1.63, 1.62, 1.61, 1.60, 1.59, 1.58, 1.57, 1.56, 1.55, & 1.54


by Dmytro Dziubenko, Chief Technology Officer

Cheery Greetings from the Corefy team!

Firstly, we would like to announce essential changes in transaction creation within an organisation.

Be aware

The update will affect transfers, deposits, and withdrawals from June 8, 2021. The main change is an added stage for confirmation. After creation, go to the transaction entry, process or terminate it, or ask your team member with the appropriate access.

And we've already expanded the access scope related to handling transactions that affect the Commerce balances. Find out more in the Organisation settings section and revise your team members' access if necessary.

The following videos compare the current one-step and updated two-step flow of deposit creation
  • Current version

  • Updated version

And let's now turn to the enhancements that our dev team has prepared over the past month.

Highlights

  • Commerce updates: expanded access settings for commerce accounts and operations, added merchant_profile object to the Commerce settings and request creation and options to control Saved cards access scope
  • Connectors Hub update: updated the Callback handler, added payouts array to Callback for payouts processing, added the Deposit account option for preventing finalising payout transactions with failure resolutions
  • Card Gateway update: added modifier by card status to Payment schemes
  • Reports optimising
  • Receipt Addon update: receipts generating for Payout invoices

List of changes

Commerce updates

Expanded access settings

We've made the Organisation setup more flexible and divided the default access scope for commerce account and operation management into permissions to view (read) and edit (write). Check and assign roles and permissions at the Dashboard (AdministrationOrganisation settingsAccess control: Access roles).

Access control: Access roles

Merchant profile for processing

We added the merchant_profile object to commerce properties that contains information about the merchant company. The Corefy platform adds the object during payment and payout requests creation, and the data is sent unchanged to payment service providers if they require it for recording and processing.

Get this data through API request, update in the Dashboard Commerce settings (Commerce accountsGeneral: Profile).

    "data": {
        "type": "commerce-accounts",
        "id": "coma_Bb1erfDTYzivNSp",
        "attributes": {
            "merchant_profile": {
                "company_name": "Best Docs Store",
                "mcc": "5942",
                "company_address": "1 Canada Square",
                "city": "London",
                "website_url": "https://lets.doc.it"
            }
        }
    }

Edit Commerce settings

Similar parameters in the cardgate_options object for host-to-host payments will be deprecated. So, if you filled in the Card Gateway options, we will copy them to the merchant_profile with subsequent updates.

Share Saved card tokens between Commerce accounts

Another new option is allowing sharing tokens for saved card numbers between accounts. In so doing, accounts for sharing need to have a simple ledger scheme, and you can choose several ones from the drop-down list in the Commerce settings.

Suppose a customer previously used the 'Remember me' checkbox on the Checkout of the commerce account that has the option enabled. Consequently, they will see their cards when visiting the Checkout pages of accounts to which tokens were shared and save time filling in the payment form.

But notice that if you stop sharing saved tokens between accounts, new cards won't be saved, but choosing old ones will remain available for users.

Connectors Hub updates

Callback handler update

Analysing interaction with various providers, we encountered that part of them doesn't sign notifications with a unique signature. Such messages we couldn't validate and needed additional tools to make sure that the received data is accurate.

So we've updated the callback handler and made the pull statement's request sent as soon as we receive such an 'unsigned' callback message. This allows faster reconciliation and further processing of the transaction.

Updated Callbacks for payout invoices

The use of the splitting tool is often helpful during transaction routing. But it also creates complications for analysis and efficiency estimating. To assist in collecting data into which parts the transaction was divided and receiving statuses and resolutions for each of them, we've added a payouts attribute whose value contains an array of objects with separate payouts data for reconciliation responses and Callbacks for finalised payout invoices.

By default, you get information only about the successfully processed parts. And suppose you need to collect more complete data, including failed to process amounts and provider IDs, code, resolution, payload etc., of each part. In that case, you can turn on the Expose internal data option in the payout processing settings.

    {
        "data":{
            "id":"cpoi_ztg1119SQjlAk1Y2",
            "type":"payout-invoices",
            "attributes":{
                "fee":0,
                "amount":1000,
                "currency":"USD",
                "fields":[],
                "status":"processed",
                "payouts":[
                    {
                        "id":"po_4a3Bgz6YR3cRjW6k", // a unique transaction ID
                        "rrn":null, // Retrieval Reference Number, a value is optional
                        "amount":725,
                        "currency":"USD",
                        "status":"processed" // a final processing status of the part
                    },
                    {
                        "id":"po_3cR4z6kgYR6aj3BW",
                        "rrn":null,
                        "amount":275,
                        "currency":"USD",
                        "status":"processed"
                    }
                ]
            }
        }
    }
    {
        "data":{
            "id":"cpoi_ztg1119SQjlAk1Y2",
            "type":"payout-invoices",
            "attributes":{
                "fee":0,
                "amount":1000,
                "currency":"USD",
                "fields":[],
                "status":"process_failed",
                "payouts":[
                    {
                        "id":"po_4a3Bgz6YR3cRjW6k", // a unique transaction ID
                        "rrn":null, // Retrieval Reference Number
                        "amount":725,
                        "currency":"USD",
                        "status":"process_failed", // a final processing status of the part
                        "payload": [], // additional info from PSP
                        "provider_id": "po_16qdUPN2sUkrNtLp_external_id", // a transaction ID in the provider database
                        "provider_code": "test", // a transaction provider code
                        "resolution": "invalid_details"  // an original error code
                    },
                    {
                        "id":"po_3cR4z6kgYR6aj3BW",
                        "rrn":null,
                        "amount":275,
                        "status":"process_failed",
                        "payload":[],     
                        "currency":"USD",
                        "resolution": "invalid_details",
                        "provider_id": "po_1krNdUPN2sULpt6q_external_id",
                        "provider_code": "test"
                    }
                ]
            }
        }
    }

Payout options

Deposit accounts improving

Prevent a failure status is an extra option for Deposit accounts, preventing finalising payout transactions that obtain failure status (for example, due to data transport errors). If you enable it, such transactions get the pending status and the moderation_required label and wait for manual statement reconciliation and assignment of the actual status.

Prevent failure status

Card Gate update

We added the Card status attribute for payments' modifier schemes. It accesses your organisation card vault and assumes values like:

  • new
  • expired
  • verified
  • unverified
  • verify_failed

Card Gate modifiers

Reports optimising

We've revised the reports generation process and made it far less resource-intensive and therefore faster. What else to add: it’s just a necessary job.

Addons update

And good news for Receipt Addon users: the Corefy platform starts supporting receipt generation for Payout invoices. The principle of use is the same as for Payment invoices, but you can set another template for this type of transactions.

Bug fixes

Lastly, we've successfully improved our products' performance and resolved revealed bug issues.

Stay tuned for the next updates!