Shopify PTT Kargo Integration
PTT Kargo differs from the other Turkish carriers in two concrete ways, and both change the setup from the start. The barcode is not generated per shipment: the agreement assigns you a barcode range, every shipment is declared with a number taken from that range, and once the range runs out declarations stop until a new one is issued. The second difference is the language. Cash on delivery is called Odeme Sartli at PTT, charging the shipping fee to the recipient is called Ucreti Alicidan Tahsil, and the official text states that the two cannot be requested on the same shipment. PTT publishes no Shopify app of its own; the bridge is built by an integration tool running on your contracted account credentials.
growing on Shopify with Nodus Works
Shopify PTT Kargo integration what is it?
The Shopify PTT Kargo integration is the connection that declares a store order as a shipment to PTT, prints its label, writes the tracking number on the order and reads delivery status back. The number used in the declaration comes from the barcode range PTT assigns to you, which is why that range is part of the setup.
Setup starts with an agreement, not with writing code. Three values are taken on the PTT side: the customer number, the service password and the first and last value of the barcode range. In the same conversation you also choose how the shipping fee is paid, at the branch when you hand the parcel over or through a periodic invoice.
Once the connection is live, daily work runs from one screen: the order is declared, the label is printed, the customer notification goes out from Shopify's own email when the tracking number is written on the order, and the order closes on its own when delivery status is read back.
What a shipping integration actually does
Once the connection is live, declaration, label, tracking, delivery status, collection and returns become parts of the same flow. The six headings below cover what gets asked most about the Shopify PTT Kargo integration.
Shipment declaration and barcode assignment
Instead of typing the delivery address into the carrier's screen, the shipment is declared with the data already on the order. The number is not invented by the system: the next number in the barcode range PTT assigned to you is taken and locked to that shipment.
Printing the PTT shipping label
The label is printed from the order screen. PTT does not return a ready-made label file; the label is produced on the store side using the assigned barcode. That is why label size and printer setup are a step in the setup, not an afterthought.
Writing the tracking number on the order
At PTT the barcode and the tracking number are the same number, so you hold it the moment you declare. Once it is written on the order the customer notification goes out from Shopify's own email; movement, however, only shows up after the parcel is accepted.
Reading delivery status back
When the status on the PTT side is written onto the order, the order closes on its own. In setups that never read status back, the order list fills with unfulfilled records and the start of the return window is tracked by hand.
Reconciling Odeme Sartli shipments
On a cash-on-delivery order the amount to collect is read from the order total and written onto the shipment, and the order moves to paid when the money arrives. Whether the transfer runs through a postal cheque account is settled in the agreement.
Withdrawing a declaration and the return flow
Unless the declaration is withdrawn, cancelling the order does not cancel the shipment. At PTT cancellation is tied to the dispatch record the shipment was declared under; in a setup that does not keep that record the cancel button produces nothing.
How far does Shopify's own shipping stack get you in Turkey?
Every shipping integration need starts here. Shopify's shipping side was built for specific countries and Turkey is not one of them.
Labels cannot be bought from the admin
Shopify's own shipping service is tied to shipping locations in eight countries and Turkey is not on that list. The buy-label flow never appears on the order screen; a PTT label comes either from the carrier's own channel or from an integration.
Real carrier rates cannot be shown at checkout
Pulling live rates from your own carrier account is only possible on the higher plans, and no Turkish carrier is on the supported list. In a store based in Turkey the shipping amount at checkout is a flat or conditional rate you set up by hand.
Return labels do not come out of Shopify
Creating a return label through Shopify requires both the shipping location and the recipient address to be in the United States. In Turkey the return label is produced outside and uploaded to the order.
The product card has no width, height or length field
The Shopify product card carries weight but no dimensions. A PTT declaration asks for desi alongside weight; because size only lives in the package definition under shipping settings, a multi-line order falls back to the default package.
A district field cannot be added to checkout
On plans below Plus, city and district selection cannot be added to checkout. A PTT declaration keeps city and district as separate fields. The workaround in practice is making the second address line required and renaming it District.
The notification chain is ready, the trigger is yours
Shopify ships shipment confirmation, shipment update, out for delivery and delivered notifications. The last two depend on events arriving from the carrier; the data that feeds them comes from the integration.
The six points share one conclusion: in Turkey a shipping integration is not a convenience layer on top of Shopify, it replaces a part that is not there. Label production, tracking numbers and delivery status do not reach Shopify by any other route.
How is the Shopify PTT Kargo integration set up?
The six steps below cover the setup from the agreement to the first printed label. The second step is specific to this carrier: without a barcode range no shipment can be declared.
Sign the corporate agreement and get your customer number
The path runs through an agreement. You can read the service definitions and contact details at www.ptt.gov.tr, then tell your nearest PTT office or the provincial directorate that you want to become a corporate customer and need integration access. Your customer number is assigned once the agreement is in place.
Ask for the service password and the barcode range
Three values are needed for the integration to work: the customer number, the service password, and the first and last value of the barcode range. Ask for all three in the same conversation. Access does not come out of a personal account; the party you signed with authorises it. If you will use cash on delivery, that service has to be activated in the same agreement.
Choose how the shipping fee is paid
The agreement offers two routes: paying at the PTT office when you hand the parcel over, or paying against an invoice issued at set intervals. Changing this later means rebuilding the account side, so it is stated up front. If you will use Odeme Sartli, also settle here where the collected amount is transferred and whether you have a postal cheque account.
Add the account and the range to your tool
The customer number, service password and barcode range go into the integration tool. If the last value of the range is left blank the tool cannot tell how far through it you are and will not warn you before it runs out. PTT has no app of its own in the Shopify app store; you pick the PTT row from the carrier list.
Define the extra services and the address setup
Odeme Sartli, Ucreti Alicidan Tahsil, declared value, advice of receipt, controlled delivery and phone notification are extra services selected one by one, and each changes the shipment cost. Make the second address line required at checkout and rename it District, then set your default package dimensions and label printer here as well.
Verify barcode, label and tracking with one order
Place a single-item order and watch a number get assigned from the range, the label print, the barcode scan and the number land on the order. Then query the same number on the PTT tracking screen: if no movement shows before the acceptance record, the problem is on the declaration side.
The table below shows which PTT counterpart each Shopify record maps to.
| What Shopify has | Its PTT counterpart |
|---|---|
| Order | Shipment declaration |
| Delivery address | Recipient address; city and district as separate fields |
| Address line 2 | District (no separate field below Plus) |
| Package definition | Weight and desi declaration |
| Order number | Customer reference number |
| Tracking | Barcode number; also the tracking number |
| Cash on delivery | Odeme Sartli; amount to be collected |
| No counterpart | Barcode range, postal cheque account, extra service selection |
The last row lists three items Shopify has no field for. Without a barcode range nothing can be declared, a postal cheque account only concerns stores collecting on delivery, and extra services are chosen per shipment. None of the three can be read from order data; they are defined during setup.
Tell us about your catalog and current setup, and we will work out how the Shopify PTT Kargo integration should be built for your product structure. You do not need to fill in a form, reach us directly by phone, email or WhatsApp.
A PttAVM integration is not a PTT Kargo integration
PTT runs two separate businesses under the same brand. PttAVM is a marketplace, PTT Kargo is a carrier. Their integrations are not the same and are not built with the same credentials.
If you sell on PttAVM, orders arrive from that marketplace, the barcode is produced by that system and order numbers carry its own format. That belongs in the same category as a Trendyol or Hepsiburada connection: channel integration. A shipment leaving your own Shopify store, by contrast, goes out on your PTT Kargo agreement, with your customer number and your barcode range.
In practice the confusion looks like this: a merchant looking for a PTT integration lands in the marketplace's developer documentation, tries to apply the barcode flow described there to their own orders, and no shipment is ever created because there is no barcode range. Neither side accepts the other's credentials.
If you use both, shipping cost also shows up in two places: marketplace shipments inside that channel's flow, your own site on your PTT invoice. To manage product, stock, price and orders from one panel, take a look at Station; to see the same work from the channel side, the Trendyol and Hepsiburada pages cover it.
Why does PTT issue the barcode instead of you generating it?
The answer separates PTT from the other carriers, and the most frequently skipped part of the setup sits right here.
The number comes from a pool, not per shipment
At other carriers you declare and the carrier returns a number for that shipment. At PTT you get the numbers up front: the agreement defines a barcode range and every declaration uses the next number in it.
Declarations stop when the range runs out
Once the pool is exhausted no new shipment is created, and the error does not surface in your store, it surfaces in the tool's warning. A new range is requested from PTT; if the request is not met that day, no label gets printed that day.
One number is never used on two shipments
A number is locked to a shipment. Declaring a second shipment with the same number collides the tracking record and one of the two parcels stays invisible in the system. That is why the last value of the range goes into the tool in full.
At PTT the barcode and the tracking number are one
At other carriers the barcode is an interim number and the tracking number is assigned after the branch scan. At PTT there is a single number and you hold it at declaration. Movement, though, only appears once the shipment is accepted.
PTT does not hand over a ready label file
The declaration does not return a print-ready label file. The label is produced on the store side with the assigned barcode. Label size and printer settings therefore belong in the setup conversation, not to a later day.
Cancellation is tied to the record you declared under
To pull a shipment back you need to know which dispatch it went out with. In a setup that does not keep that record the cancel button does nothing and the shipment stays open in the system; cancelling the order does not cancel the shipment on its own.
How is cash on delivery set up at PTT?
At PTT cash on delivery is called Odeme Sartli. Mixing it up with the service next to it stops the setup outright, so the two are written out separately.
Odeme Sartli collects the product price from the recipient
The official definition reads: the shipment is delivered to the recipient against a set amount of money and the collected money is passed to the sender. In other words, this service is the counterpart of the Shopify order total.
Ucreti Alicidan Tahsil is a separate service
That service charges the carriage fee to the recipient, not the product price. The official text is explicit: Ucreti Alicidan Tahsil cannot be requested together with Odeme Sartli. A setup that tries to combine them on one shipment stops here.
The collected amount may run through a postal cheque account
At PTT, cash-on-delivery amounts can be credited to a postal cheque account, and the account is opened at PTT offices. In integrator panels the postal cheque account is a separate field; a store collecting on delivery does not leave it blank.
On the Shopify side it is a manual payment method
The order opens as payment pending and is marked paid by hand after collection. The integration builds the reconciliation. Regional limits, amount caps and a cash-on-delivery surcharge are not built into Shopify.
A cash-on-delivery parcel cannot be left in a Kargomat
PTT's own information: because payment cannot be taken at a Kargomat unit, cash-on-delivery shipments are not left in the cabinet. A store that keeps cash on delivery open cannot count this delivery option for those orders.
The service is activated separately in the agreement
A carriage agreement does not open cash on delivery by itself. If it is not requested in the same conversation, the shipment is refused even though the field appears in your tool. The agreement belongs to the merchant, no app provides it.
What you need to confirm before the setup
PTT publishes its service definitions and its tariff, but there is no published documentation on the integration side. The nine items below could not be verified in this review; next to each one is what you should do.
How many numbers will your barcode range hold
The size of the range is not a published value. State your monthly shipment volume and ask how many numbers the range will hold and how long a replacement takes once it is exhausted.
How long does agreement approval take
No official number of days is announced. The calendar is set by the party you sign with; if your setup lands in a campaign period, ask for this timeline in writing up front.
Is there a minimum shipment volume
Third-party sources say PTT has no threshold, but this could not be verified in an official text. If your store is new, ask about the volume requirement and how a no-threshold tariff differs.
Which door issues the credentials
Sources split between the provincial directorate, the local office and a portal login. None of them offers a self-service screen. Ask the party you signed with who opens permission to use the service.
Can a sole trader be connected
The corporate agreement requirement is verified, but which documents a sole trader needs is not published. Find out what is asked for beyond the tax certificate before you apply.
Which return code model applies
No service describing a fixed or single-use return code could be found on PTT's own pages. Settle before setup whether the customer returns with a code or with a label you print.
How many days until the collected money reaches you
The transfer time is not stated in any official text. Also ask in the same conversation whether cash and card collection follow different timelines; your cash flow plan depends on it.
What size will the label be printed at
Because you produce the label, the size and content rules need to come from PTT in writing. If you have a thermal printer, confirm the vertical format; if not, confirm which output is accepted.
Until what time is address pickup available
The tariff notes that no address pickup fee is charged to contracted customers, but no cut-off time is published. To plan your end of day, ask the office you are attached to about the courier window.
Why does the shipping invoice come in higher than you expected?
Three items inflate a PTT invoice: an incomplete desi declaration, the size threshold that changes the service class, and the extra services selected per shipment.
Desi is volume converted into a billable figure
The invoice follows whichever is greater, weight or desi. Domestically volume is divided by three, internationally by five. When the declaration falls short, the PTT side takes the real measurement and the difference lands on the invoice.
Dimensions do not live on the product card
The Shopify product card has no width, height or length. Size sits in the package definition and a multi-line order falls back to the default package. If you sell items of differing volume you need several package definitions assigned to products.
Thirty kilograms and three hundred desi change the service class
At PTT a domestic shipment up to thirty kilograms or three hundred cubic decimetres counts as Posta Kargosu, above that as Kargo. A store selling bulky items should know it has moved into a class that does not come out of the same flow.
The tariff is published, you can read it before signing
At private carriers the list price is negotiated and never published. PTT publishes its domestic shipment and extra service tariff at ptt.gov.tr/tarifeler. You can benchmark your negotiated rate against that list.
Each extra service is charged separately
Declared value, advice of receipt, delivery to the addressee in person, phone notification and Odeme Sartli are separate lines in the tariff. Every service you leave switched on by default changes the cost per shipment.
Being under contract has two measurable returns
The tariff note states that no address pickup fee is charged to contracted customers. Shipments containing books, magazines or newspapers also get a general discount that varies by desi band; the current rate sits on PTT's domestic shipping services page.
How many ways can the recipient take delivery?
PTT's delivery options are broader than most carriers', but not every option accepts every shipment. The distinction is defined during setup.
Kargomat 7/24 operates in seven provinces
The electronic locker system serves Istanbul, Ankara, Izmir, Antalya, Bursa, Eskisehir and Kocaeli. The shipment waits three days, is returned to the sender if unclaimed, and the service cannot be used without the recipient's mobile number.
Kargomat does not accept every shipment
Cash-on-delivery, controlled delivery and advice-of-receipt shipments cannot be left in the cabinet. A store that keeps cash on delivery open should not count this option for those orders.
Delivery at a PTT office writes a branch instead of an address
A registered item sent with the recipient's name and the destination office name, without a street address, is handed over when the recipient calls in. An official option that works for orders with weak address data.
Controlled delivery means the contents are checked on handover
The recipient takes delivery after checking the contents. In product groups where damage and shortage claims are common it produces a record at the moment of delivery; as an extra service it carries its own fee.
The delivery document can be obtained afterwards
For advice-of-receipt items and items delivered without being returned, the registered item delivery document can be obtained through e-Devlet. That is where you can produce evidence in a dispute.
International does not come out of the same declaration
At PTT international shipments go out as separate products, and on the Turpex side PTT handles micro-export customs clearance. Dropping an international order into the domestic flow stops the shipment; those orders are set up separately.
The most common mistakes in a Shopify PTT Kargo integration
The nine mistakes below came up again and again in the stores we connected. Each one closes with a single decision during setup.
Not asking for the barcode range
When the customer number and password are taken but no range is requested, the tool connects and no shipment is ever created. Because the connection test passes, the problem stays hidden until label day.
Leaving the last value of the range blank
Without the last value the tool cannot tell how far through the range it is and produces no exhaustion warning. The day the pool runs out declarations stop and the reason is invisible too.
Trying to connect with PttAVM credentials
Marketplace access is not carrier access. Neither side accepts the other's credentials; a shipment leaving your own site goes out on your PTT Kargo agreement.
Combining Odeme Sartli with Ucreti Alicidan Tahsil
The official text states the two cannot be requested on the same shipment. Collecting the product price and charging carriage to the recipient are two separate services.
Not requesting cash on delivery in the agreement
The field showing up in the tool is taken as proof the service is open. A shipment not activated in the agreement is refused and the order stays at payment pending.
Burying the district in the address line
A PTT declaration keeps city and district as separate fields. A district buried in free text stops the shipment; the fix is making the second address line required at checkout and renaming it District.
Sending tracking before the acceptance record
Because the number is in hand at declaration, it gets sent to the customer early. No movement appears on the tracking screen before the shipment is accepted, and the where-is-my-parcel question comes back to the store.
Leaving extra services on by default
Declared value, advice of receipt and phone notification are charged per shipment. Services left switched on wholesale push the month-end invoice above what you expected.
Counting Kargomat delivery for cash-on-delivery orders
A cash-on-delivery shipment cannot be left in a Kargomat. A store promising delivery alternatives has to split this limit by payment method.
Three common problems and how they were solved
The three setups below show how we handled Shopify PTT Kargo integration problems in stores we connected.
Labels stop printing when the pool runs dry
ProblemLabel printing stopped in the middle of a campaign day. The panel showed the connection as live, yet none of the 40 orders could be declared.
CauseThe barcode range was exhausted, and because the last value had never been entered into the tool no warning had been produced. The range had been taken once at setup and watching for exhaustion was nobody's job.
SolutionA new range was requested from PTT, entered into the tool with both its first and last value, and a threshold warning was set for the remaining count. Pending orders were declared from the new range and shipped the same day.
Trying to connect a carrier with marketplace credentials
ProblemThe store had been unable to connect for two weeks. It was entering the details taken from the PttAVM seller panel into the tool and access was refused on every attempt.
CauseThe details entered were marketplace access, not carrier access. The store did have a PTT Kargo agreement, but permission to use the service had never been opened and no barcode range had ever been defined.
SolutionService permission was opened by the office the agreement was signed with, and the customer number, service password and barcode range were taken. The marketplace connection was left separate in its own channel so the two flows never mixed.
Collected orders never showing as paid
ProblemCash-on-delivery orders were being delivered, the money was arriving, and 60 orders were still sitting at payment pending in Shopify.
CauseThe amount to collect was written into the declaration but nothing read back. On some shipments the product price collection and charging carriage to the recipient had also been requested together, and those shipments were never created at all.
SolutionOdeme Sartli was left as the single service, the transfer side was matched to the postal cheque account, and delivery status was read back to move orders to paid. The 60 open records were closed in one pass.
Station is the tool we built to run order, label, tracking and collection flow from one panel. If you also sell on marketplaces, their shipping comes out of a separate agreement, so seeing the two side by side makes the cost visible.
Frequently Asked Questions
How is the Shopify PTT Kargo integration set up?
Does PTT Kargo have an official Shopify app?
What credentials does the integration need?
What is a barcode range and why is it needed?
What happens when the barcode range runs out?
Are the barcode and the tracking number the same at PTT?
I have the number but the tracking screen shows nothing, why?
Who prints the PTT shipping label?
Where do I get the credentials?
Can I ship without an agreement?
Is a PttAVM integration the same as a PTT Kargo integration?
What is cash on delivery called at PTT?
What is the difference between Odeme Sartli and Ucreti Alicidan Tahsil?
Do I need a postal cheque account?
When does the collected money reach my account?
Can a cash-on-delivery parcel be collected from a Kargomat?
Where are Kargomat units and how long does a parcel wait?
Why are city and district asked for separately?
How is desi calculated and do I declare it?
What is the difference between Posta Kargosu and Kargo?
Can I see PTT's prices before signing?
I ship books, is there a separate discount?
Is address pickup charged?
How does a customer send a return?
If I cancel the order, is the shipment cancelled too?
How do extra services affect the invoice?
How long does the integration take?
Do international orders go through the same integration?
Can I work with more than one carrier at the same time?
Can I ship marketplace orders with PTT as well?
BİZİ TERCİH
EDENLERİN ARASINDA
YER ALIN...
Herkes için Shopify çözümleri üretiyoruz.
Yeni bir Shopify mağazası kurmak, mevcut mağazanızı geliştirmek, özel entegrasyonlar yapmak veya hız problemlerini çözmek mi istiyorsunuz? Biz, teknik işleri sizin yerinize çözen uzman bir Shopify partneriyiz.

Dossha
#shopify

Les Benjamins
#shopify

Nocturne
#shopify

Fellas
#shopify

Mai
#shopify

Karaca
#shopify

Milagron
#shopify

Kiğılı
#shopifySeo

Şölen
#shopify

Adell
#shopifyB2B

Ohora
#shopify

Rendrea
#shopifyBooking

Babeskin
#shopify

The New Lab
#shopify

DTF Town
#shopify

Eczaclick
#shopifySeo

Termos Dünyası
#shopify

Halı.net
#shopify

Blend-r
#shopify

Oioi
#shopifySeo

Nowshopfun
#shopify

Marie Claire
#shopify

Gaziburma
#shopify

Dünyada Kitap
#shopify
NEDEN BİZİMLE
ÇALIŞMANIZ GEREKTİĞİNİ
SİZE ANLATMAK İSTERİZ
Shopify'ı çok iyi anlıyoruz; Türkiye'de her segmentin karşısına biz olarak çıkıyoruz :)







Sadece Shopify konuşanlardan oluşan bir takım

Hey!
Bannerlarım kesik gözüküyor :(
Yardım eder misiniz, kampanya dönemindeyim.
Selam Elif!
2 dakikaya çözüyoruz.





.webp)
.webp)


