Each line item in your Givecloud contribution will generate a gift in DonorPerfect.
A basic donation could generate two gifts:
Gift for the donation amount
Gift for the 'cover the cost' amount (if enabled)
A more complicated online purchase could include multiple gifts:
Gift for a shirt line item
Gift for an event registration line item
Gift for a general donation line item
Gift for tax amount (if enabled)
Gift for shipping amount (if enabled)
Gift for admin amount (if enabled)
When setting up items for sale or fundraising in Givecloud, the DonorPerfect tab allows you to specify exactly how Givecloud should create a gift in DonorPerfect when that individual item is included in a contribution. These values can be different from product to product. This is called "Item Level Coding"

Alternatively, if you have multiple variants of an item (e.g. a shirt with different colors or sizes or a donation form with different payment frequencies), Givecloud allows you to set the coding at the variant level. For example, if you click on a variant under 'Price & Options,' a modal will appear where you will see the DP Codes tab. This is known as "Variant Level Coding"


NB: For the variant level coding to take precedence over the item level coding, you need to go to Settings > Integrations > DonorPerfect > Scroll down till you reach the "GC Meta Data" section, then enable the "Item settings override these codes."

When creating a gift, Givecloud sends:
Invoice Number (the GiveCloud contribution number)
Check Reference Number (the payment confirmation number)
Donor ID
GL Code
Campaign Code
Solicitation Code
Sub-Solicitation Code
Amount
Gift Type
Fair Market Value
TY Letter Number
Memo
NoCalc Value (global value for all gifts - set in Advanced Settings)
+ any custom fields that have been configured
When we push our contribution info to DonorPerfect to create a new gift, we pass a piece of information that will help us reconcile the gift in case of an error.
When sending the request to create a gift in DonorPerfect, we pass a reference into the GIFT_NARRATIVE field in DonorPerfect.
Before sending the request, we look up gifts in DonorPerfect that have a reference to the item we’re trying to create. If one exists, we will link the item to that gift rather than create a duplicate.
After a sync failure/disruption, the sync is only retried once, 5minutes later.